資源簡介
用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個文件信息
評論
共有 條評論