標(biāo)題:
STC單片機(jī)收發(fā)通信串口調(diào)試程序 帶詳細(xì)注釋
[打印本頁]
作者:
sgh_ran
時間:
2018-2-22 14:27
標(biāo)題:
STC單片機(jī)收發(fā)通信串口調(diào)試程序 帶詳細(xì)注釋
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位計數(shù)器;
typedef unsigned int u16; //常用M1M0 0 / 1: 16位計數(shù)器;
typedef unsigned char u8; // 1 / 0:自動重裝8位計數(shù)器
void UartInit(void); // 定時器1 定時器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:定時器 C/T=1:計數(shù)器
//TCON寄存器位變量: TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
// / 1 / 1 / 1 / 1
// '/'代表有硬件置1或0,無需編程
// TR1、TR0置1分別啟動定時器1、0 ;置0分別關(guān)閉定時器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位校驗位。
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允許定時器2中斷 ; ES允許串口中斷 ; ET1允許定時器1中斷
} // EX1允許外部中斷1斷 ; ET0允許定時器0中斷 ; EX0允許外部中斷0斷
// 中斷源 Keil中斷編號 矢量地址
// 最高優(yōu)先級 6 0x0033
// 外部中斷0 0 0x0003
// 定時器0溢出 1 0x000B
// 外部中斷1 2 0x0013
// 定時器1溢出 3 0x001B
// 串口 4 0x0023
// 定時器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 上傳
點擊文件名下載附件
串口通信
下載積分: 黑幣 -5
作者:
iritwq
時間:
2018-7-20 10:33
正在學(xué)習(xí)怎么用電腦看單片機(jī)的數(shù)據(jù),謝謝樓主
作者:
quhong0411
時間:
2019-10-7 13:57
不會這個。正好學(xué)習(xí)一下。感謝樓主分享。
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1