|
STC單片機(jī)串口通信,測試程序,C51寄存器變量設(shè)置
單片機(jī)源程序如下(注釋很詳細(xì)):
- #include <STC89C5xRC.H>
- #include <LCD_12864.H>
- #include <intrins.h>
- #include <string.h>
- #include <stdio.h>
- #include <math.h>
- // 0 / 0:13位計(jì)數(shù)器;
- typedef unsigned int u16; //常用M1M0 0 / 1: 16位計(jì)數(shù)器;
- typedef unsigned char u8; // 1 / 0:自動(dòng)重裝8位計(jì)數(shù)器
- void UartInit(void); // 定時(shí)器1 定時(shí)器0
- //TMOD寄存器位變量: GATE C/T M1 M0 GATE C/T M1 M0
- // 0 0 1 0 0 0 1 0
- // 1 1
- // C/T=0:定時(shí)器 C/T=1:計(jì)數(shù)器
- //TCON寄存器位變量: TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
- // / 1 / 1 / 1 / 1
- // '/'代表有硬件置1或0,無需編程
- // TR1、TR0置1分別啟動(dòng)定時(shí)器1、0 ;置0分別關(guān)閉定時(shí)器1、0;
- // IT1、IT0置1外部中斷1、0下降沿有效;置0低電平有效;
- // 下降沿或者上升沿有效可以用于1/2分頻。
-
- //SCON寄存器位變量: SM0 SM1 SM2 REN TB8 RB8 TI RI
- //8位移位寄存器 0 0 0 1 /* /*
- void main() //10位波特率可變 0 1 0
- { //11位波特率固定 1 0 1
- UartInit(); //11位波特率可變 1 1 1
- //SM2接收數(shù)據(jù)第9位校驗(yàn)位。
- while(1); //方式0發(fā)送:TI位0允許發(fā)送,數(shù)據(jù)格式- 8 -;發(fā)送結(jié)束TI硬件置1,發(fā)送下一幀TI程序置0,TB8無作用
- //方式0接收:REN為1且RI位0允許發(fā)送,數(shù)據(jù)格式- 8 -;接收結(jié)束RI硬件置1,接收下一幀RI程序置0,RB8無作用
- // SM2==0
- } //方式1發(fā)送:TI為0允許發(fā)送,數(shù)據(jù)格式0+8+1;發(fā)送結(jié)束TI硬件置1,發(fā)送下一幀TI程序置0,TB8無作用
- //方式1接收: REN為1且RI為0允許接收,數(shù)據(jù)格式0+8+1;接收結(jié)束第9位1送至RB8、RI硬件置1,接收下一幀RI由程序置0
- // SM2=0>>RB8=1或0,都接收數(shù)據(jù),RI硬件置1;SM2=1>>RB8=1 接收數(shù)據(jù),RI硬件置1
- void Uart() interrupt 4 //方式2發(fā)送:TI位0允許發(fā)送,數(shù)據(jù)格式0+8+1/0+1;TB8軟件置1或0代表發(fā)送數(shù)據(jù)第9位,TI硬件置1,發(fā)送下一幀TI程序置0
- { // TB8為1表示發(fā)送地址,TB8為0表示發(fā)送數(shù)據(jù)
- u8 receiveData; //方式2接收: REN為1且RI為0允許接收,數(shù)據(jù)格式0+8+1/0+1;接收結(jié)束第9位送至RB8、RI硬件置1,接收下一幀RI由程序置0
- receiveData=SBUF; // SM2=0>>RB8=1或0,都接收數(shù)據(jù),RI硬件置1;SM2=1>>RB8=1 接收數(shù)據(jù),RI硬件置1
- while(!RI);
- RI = 0; //方式3同方式2,只是波特率可調(diào)
- SBUF=receiveData;
- while(!TI); //IE中斷允許寄存器: EA -- ET2 ES ET1 EX1 ET0 EX0
- TI=0; //EA中斷總開關(guān) ; ET2允許定時(shí)器2中斷 ; ES允許串口中斷 ; ET1允許定時(shí)器1中斷
- } // EX1允許外部中斷1斷 ; ET0允許定時(shí)器0中斷 ; EX0允許外部中斷0斷
-
- // 中斷源 Keil中斷編號(hào) 矢量地址
- // 最高優(yōu)先級(jí) 6 0x0033
- // 外部中斷0 0 0x0003
- // 定時(shí)器0溢出 1 0x000B
- // 外部中斷1 2 0x0013
- // 定時(shí)器1溢出 3 0x001B
- // 串口 4 0x0023
- // 定時(shí)器2溢出 5 0x002B
- void UartInit(void) //9600bps@11.0592MHz
- {
- TMOD = 0x20;
- SCON = 0x50;
- TH1 = 0xF4;
- TL1 = 0xF4;
- PCON = 0x80;
- EA = 1;
- ES = 1;
- TR1 = 1;
- }
復(fù)制代碼
所有資料51hei提供下載:
STC通信-發(fā)送數(shù)據(jù).rar
(1.44 KB, 下載次數(shù): 141)
2018-2-22 14:00 上傳
點(diǎn)擊文件名下載附件
串口通信 下載積分: 黑幣 -5
|
|