|
具體代碼如上,為什么在串口初始化函數(shù)里,TI要被置為1呢?還有,在Uart_SendB函數(shù)里,為什么要開頭清零一次TI,末尾再清零一次TI?
單片機(jī)源程序如下:
- #include <stc15f2k60s2.h>
- #include <absacc.h>
- #include <intrins.h>
- #include <stdio.h>
- void UartInit(void);//串口初始化函數(shù)。
- void Uart_SendB(unsigned char us);//串口單個(gè)字節(jié)發(fā)送函數(shù)。
- void main(void)
- {
- XBYTE[0xA000]=0;
- UartInit();
- EA=1;
- while(1)
- {
- Uart_SendB('a');
- }
- }
- void UartInit(void) //9600bps@12.000MHz
- {
- SCON = 0x50; //8位數(shù)據(jù),可變波特率
- AUXR &= 0xBF; //定時(shí)器1時(shí)鐘為Fosc/12,即12T
- AUXR &= 0xFE; //串口1選擇定時(shí)器1為波特率發(fā)生器
- TMOD &= 0x0F; //設(shè)定定時(shí)器1為16位自動(dòng)重裝方式
- TL1 = 0xE6; //設(shè)定定時(shí)初值
- TH1 = 0xFF; //設(shè)定定時(shí)初值
- ET1 = 0; //禁止定時(shí)器1中斷
- TR1 = 1; //啟動(dòng)定時(shí)器1
- TI=1;
- ES=1; //開啟串口中斷。
- }
- void Uart_SendB(unsigned char us)
- {
- TI=0
- SBUF=us;
- while(TI==0);//等待發(fā)送結(jié)束。
- TI=0;
- }
復(fù)制代碼
|
|