• 大小: 50KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-12
  • 语言: 其他
  • 标签: STM8  模拟  串口  中断  

资源简介

用STM8S003最小系统的PC3、PC4引脚模拟串口接收发送,接收数据用中断实现,通道检测接收引脚下降沿来开始接收数据,避免了用查询方式接收时漏掉数据的情况。

资源截图

代码片段和文件信息

#include “delay.h“
////////////////////////////////////////////////////////////////////////////////
//本程序只供学习使用,未经作者许可,不得用于其它任何用途
//ALIENTEK
//使用汇编代码进行精确延时处理
//包括delay_usdelay_ms
//正点原子@ALIENTEK
//技术论坛:www.openedv.com
//修改日期:2013/6/25
//版本:V1.0
//版权所有,盗版必究。
//Copyright(C) 广州市星翼电子科技有限公司 2009-2019
//All rights reserved
//******************************************************************************
//V1.0 20130625
//支持不同时钟频率
//提供delay_usdelay_ms两个延时函数.
////////////////////////////////////////////////////////////////////////////////


volatile u8 fac_us=0; //us延时倍乘数

//延时函数初始化
//为确保准确度请保证时钟频率最好为4的倍数最低8Mhz
//clk:时钟频率(24/16/12/8等)
void delay_init(u8 clk)
{
if(clk>16)fac_us=(16-4)/4;//24Mhz时stm8大概19个周期为1us
else if(clk>4)fac_us=(clk-4)/4;
else fac_us=1;
}
//延时nus
//延时时间=(fac_us*4+4)*nus*(T)
//其中T为CPU运行频率(Mhz)的倒数单位为us.
//准确度:
//92%  @24Mhz
//98%  @16Mhz
//98%  @12Mhz
//86%  @8Mhz
void delay_us(u16 nus)
{
// STVD 编译环境下汇编代码
#asm
PUSH A            //1T压栈
DELAY_XUS:
LD A_fac_us        //1Tfac_us加载到累加器A
DELAY_US_1:
NOP              //1Tnop延时
DEC A             //1TA--
JRNE DELAY_US_1    //不等于0则跳转(2T)到DELAY_US_1继续执行若等于0则不跳转(1T).
NOP               //1Tnop延时
DECW X            //1Tx--
JRNE DELAY_XUS      //不等于0则跳转(2T)到DELAY_XUS继续执行若等于0则不跳转(1T).
POP A             //1T出栈
#endasm
//Keil 开发环境下汇编代码
/*
__asm(
“PUSH A          \n“  //1T压栈
“DELAY_XUS:      \n“
“LD Afac_us     \n“   //1Tfac_us加载到累加器A
“DELAY_US_1:     \n“
“NOP             \n“  //1Tnop延时
“DEC A           \n“  //1TA--
“JRNE DELAY_US_1 \n“   //不等于0则跳转(2T)到DELAY_US_1继续执行若等于0则不跳转(1T).
“NOP             \n“  //1Tnop延时
“DECW X          \n“  //1Tx--
“JRNE DELAY_XUS  \n“    //不等于0则跳转(2T)到DELAY_XUS继续执行若等于0则不跳转(1T).
“POP A           \n“  //1T出栈
);
*/
}
//延时nms
//为保证准确度nms不要大于16640.
void delay_ms(u32 nms)
{
u8 t;
if(nms>65)
{
t=nms/65;
while(t--)delay_us(65000);
nms=nms%65;
}
delay_us(nms*1000);
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        292  2017-11-14 17:17  SimUart4\checkres.spy

     文件       6013  2017-11-15 18:13  SimUart4\Debug\delay.ls

     文件       2472  2017-11-15 18:13  SimUart4\Debug\delay.o

     文件      20932  2017-11-16 08:37  SimUart4\Debug\main.ls

     文件      19951  2017-11-16 08:37  SimUart4\Debug\main.o

     文件      17365  2017-11-16 08:37  SimUart4\Debug\simuart.elf

     文件       2302  2017-11-14 12:54  SimUart4\Debug\simuart.lkf

     文件      26674  2017-11-16 08:37  SimUart4\Debug\simuart.map

     文件       4386  2017-11-16 08:37  SimUart4\Debug\simuart.s19

     文件      22952  2017-11-16 08:37  SimUart4\Debug\simuart.sm8

     文件       5453  2017-11-15 18:13  SimUart4\Debug\stm8_interrupt_vector.ls

     文件       2633  2017-11-15 18:13  SimUart4\Debug\stm8_interrupt_vector.o

     文件       2307  2017-11-14 12:56  SimUart4\delay.c

     文件        519  2017-11-14 12:57  SimUart4\delay.h

     文件       5092  2017-11-16 08:35  SimUart4\main.c

     文件       2308  2017-11-14 12:54  SimUart4\Release\simuart.lkf

     文件        593  2017-11-16 08:41  SimUart4\simuart.dep

     文件        905  2017-11-15 16:26  SimUart4\simuart.pdb

     文件      12352  2017-11-14 13:15  SimUart4\simuart.stp

     文件        203  2017-11-16 08:41  SimUart4\SimUart.stw

     文件      32459  2017-11-16 08:40  SimUart4\SimUart.wdb

     文件      32658  2017-11-16 08:41  SimUart4\SimUart.wed

     文件       2129  2017-11-15 17:22  SimUart4\stm8_interrupt_vector.c

     文件       3616  2017-11-13 15:12  SimUart4\TAGS.txt

     文件        231  2017-11-13 15:12  SimUart4\TAGS_Filelist.txt

     目录          0  2017-11-15 18:13  SimUart4\Debug

     目录          0  2017-11-15 17:04  SimUart4\Release

     目录          0  2017-11-16 08:41  SimUart4

----------- ---------  ---------- -----  ----

               226797                    28

............此处省略1个文件信息

评论

共有 条评论