|
多種波特率封裝成函數(shù),方便使用。
11.0592Mhz,12.00Mhz波特率都配置好了,直接改參數(shù)調(diào)用就行,附詳細(xì)注釋方便學(xué)習(xí)
全部親自試過(guò)了,誤差0.00%
1.jpg (118.31 KB, 下載次數(shù): 71)
下載附件
2021-7-13 16:00 上傳
運(yùn)行截圖:
(注意串口通信波特率與程序一致)
Snipaste_2021-07-13_15-53-36.jpg (218.82 KB, 下載次數(shù): 74)
下載附件
2021-7-13 15:56 上傳
單片機(jī)源程序如下:
- #include <STC12C5A60S2.H>
- void UART_Init(unsigned int BaudRate) //串口初使化函數(shù) 11.0592Mhz 12單片機(jī)
- {
- unsigned char TH1_Dat;
- unsigned char PCON_Dat;
- switch(BaudRate)
- {
- case 1200: TH1_Dat=0xE8; PCON_Dat=0x00; break;
- case 2400: TH1_Dat=0xF4; PCON_Dat=0x00; break;
- case 4800: TH1_Dat=0xFA; PCON_Dat=0X00; break;
- case 9600: TH1_Dat=0xFD; PCON_Dat=0x00; break;
- case 14400: TH1_Dat=0xFE; PCON_Dat=0X00; break;
- }
- TMOD &= 0x0F; //清除高4位數(shù)據(jù)
- TMOD |= 0x20; //定時(shí)器工作模式,0x20-工作方式2:8位自動(dòng)重裝載模式
- SCON = 0x50; //串行口工作方式控制寄存器,當(dāng)前為1
- //Bit[7:6],00為工作方式0,01方式1,10方式2,11方式3
- TH1 = TH1_Dat; //8位自動(dòng)重裝載定時(shí)器模式下,TH1被用作自動(dòng)重裝載值寄存器
- TL1 = TH1_Dat; //TL1為計(jì)數(shù)寄存器
- PCON |= PCON_Dat; //Bit7-波特率倍增位:0-不培增 1-培增
- EA = 1; //打開(kāi)總中斷
- ES = 1; //串口中斷允許位
- TR1 = 1; //定時(shí)器1開(kāi)始計(jì)數(shù)
- }
- //void UART_Init(unsigned int BaudRate) //串口初使化函數(shù) 12.00Mhz 12單片機(jī)
- //{
- // unsigned char TH1_Dat;
- // unsigned char PCON_Dat;
- // switch(BaudRate)
- // {
- // case 1200: TH1_Dat=0xCC; PCON_Dat=0x80; break;
- // case 2400: TH1_Dat=0xE6; PCON_Dat=0x80; break;
- // case 4800: TH1_Dat=0xF3; PCON_Dat=0X80; break;
- // }
- // TMOD &= 0x0F; //清除高4位數(shù)據(jù)
- // TMOD |= 0x20; //定時(shí)器工作模式,0x20-工作方式2:8位自動(dòng)重裝載模式
- // SCON = 0x50; //串行口工作方式控制寄存器,當(dāng)前為1
- // //Bit[7:6],00為工作方式0,01方式1,10方式2,11方式3
- // TH1 = TH1_Dat; //8位自動(dòng)重裝載定時(shí)器模式下,TH1被用作自動(dòng)重裝載值寄存器
- // TL1 = TH1_Dat; //TL1為計(jì)數(shù)寄存器
- // PCON |= PCON_Dat; //Bit7-波特率倍增位:0-不培增 1-培增
- // EA = 1; //打開(kāi)總中斷
- // ES = 1; //串口中斷允許位
- // TR1 = 1; //定時(shí)器1開(kāi)始計(jì)數(shù)
- //}
- void main()
- {
- UART_Init(14400);
- while(1);
- }
- void Usart() interrupt 4
- {
- unsigned char receiveData;
- receiveData=SBUF; //出去接收到的數(shù)據(jù)
- RI = 0; //清除接收中斷標(biāo)志位
- SBUF=receiveData; //將接收到的數(shù)據(jù)放入到發(fā)送寄存器
- while(!TI); //等待發(fā)送數(shù)據(jù)完成
- TI=0; //清除發(fā)送完成標(biāo)志位
- }
復(fù)制代碼
Keil代碼工程51hei提供下載:
串口發(fā)送-12.zip
(19.85 KB, 下載次數(shù): 66)
2021-7-13 16:07 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|