通過前面對串列埠通訊原理的了解,就可以開始看程式啦。
一、變數定義
#include
#include
#define uchar unsigned char
#define uint unsigned int
/*---------巨集定義---------*/
#define cstfocs 11059200l
//晶振頻率
#define cstbaud1 9600
//波特率
#define cstkeymaxnum 100
//按鍵抖動次數
/*---------引腳別名定義---------*/
sbit sbtkey1 = p3 ^2;
//啟動傳送
sbit sbtkey2 = p3 ^3;
//數字減少
sbit sbtkey3 = p1 ^7;
//數字增加
sbit sbtledsel = p2 ^3;
/*---------變數定義---------*/
uchar uct100ustimes;
uint uikey1cnt;
//按鍵1計數
uint uikey2cnt;
//按鍵2計數
uint uikey3cnt;
//按鍵3計數
uint uikeyallcnt;
//按鍵總的抖動次數
bit btt1msflag;
//1ms的標誌
bit btkey1current;
/*key1當前的狀態*/
bit btkey1past;
/*key1前乙個狀態*/
bit btkey2current;
/*key2當前的狀態*/
bit btkey2past;
/*key2前乙個狀態*/
bit btkey3current;
/*key3當前的狀態*/
bit btkey3past;
/*key3前乙個狀態*/
/*收發顯示資料相關*/
bit btuart1sendbusy =0;
uchar ucdatetmp;
//傳輸資料暫存
uchar ucdatedigstate;
uchar arrsegselect=
;//顯示0-f
二、初始化函式
void
init()
三、中斷函式
void
t0_process
() interrupt 1
ucdatedigstate++;if
( ucdatedigstate ==2)
ucdatedigstate =0;
p0 =0;
switch
( ucdatedigstate )
}
四、串列埠相關函式
/*---------串列埠1初始化函式--------*/
void
uart1_init
(void
)/*---------傳送資料函式--------*/
void
senddata
(unsigned
char dat )
/*---------串列埠1中斷處理函式--------*/
void
uart1_process
() interrupt 4
using1if
( ti )
//傳送完資料後 ri自動置1
}
五、主函式
void
main()
}if( uikey1cnt >=
0x80)if
( uikey2cnt <
0x80)}
if( uikey2cnt >=
0x80)if
( uikey3cnt <
0x80)}
if( uikey3cnt >=
0x80
)/*新一輪的判斷*/
uikey1cnt =
0x80
+ cstkeymaxnum /3*
2;uikey2cnt =
0x80
+ cstkeymaxnum /3*
2;uikey3cnt =
0x80
+ cstkeymaxnum /3*
2;uikeyallcnt = cstkeymaxnum;
}}
微控制器學習 串列埠通訊
通訊有並行通訊和序列通訊 並行通訊 將資料位元組的各位用多條資料線同時進行傳送。特點 控制簡單,傳輸速度快。但傳送線較多。成本高 序列通訊 將資料位元組分成一位一位的形式,在一條傳輸線上逐個傳送。特點 傳輸線少,長距離傳送時成本低。且可以利用 網等執行緒裝置,但資料的傳送控制比並行通訊複雜 序列通訊...
微控制器學習筆記 串列埠通訊原理
一 串列埠通訊電路 電路圖 說明 當rxd txd為低電平時,對應的led燈會亮起 下圖為80c51序列口的結構 scon serial control register 序列口控制暫存器 bit765 4321 0sm0 sm1sm2 rentb8 rb8t1 r1sm0 sm1 工作方式選擇位 ...
微控制器串列埠通訊
微控制器串列埠通訊 通常的usb序列通訊方式為全雙工,即兩條資料線 rxd和txd,一條用於傳送資料,一條用於接收資料。在序列通訊前,需要對序列通訊進行配置。對於微控制器 ri為接受中斷標誌位,未通訊時ri 0 當電腦傳送第乙個位元組幀a0到微控制器時,sbuf a0,中斷標誌位ri 1,微控制器呼...