標(biāo)題:
51單片機(jī)串口通信程序
[打印本頁(yè)]
作者:
castaway
時(shí)間:
2020-5-28 18:31
標(biāo)題:
51單片機(jī)串口通信程序
51單片機(jī)串口通信程序
/******串口中斷接口說(shuō)明*************
功能:發(fā)送1幀數(shù)據(jù)/接收1字節(jié)數(shù)據(jù)
void fillTCOMData (unsigned char buffer[5]);//buffer[5]需要串口發(fā)送的數(shù)組
unsigned char cRCOMData; //暫存從串口接收的數(shù)據(jù)
*****************************/
#include <REG52.h> // SFR declarations
//,,,,,,接口變量,,,,,,,,,,,,,,,,,,,,
unsigned char cRCOMData; //暫存從串口接收的數(shù)據(jù)
//,,,,,,模塊內(nèi)變量,,,,,,,,,,,,,,,,,,,,
unsigned char cTCOMData[7]; //暫存向串口發(fā)送的數(shù)據(jù)(一組數(shù)據(jù)發(fā)送完成以后才接受下一組)
unsigned char cTCOMDataN; //向串口發(fā)送數(shù)據(jù)的剩余個(gè)數(shù)
void fillTCOMData (unsigned char buffer[7]) {
//此處只負(fù)責(zé)填充數(shù)據(jù), 主程序負(fù)責(zé)發(fā)送串口
if (cTCOMDataN == 0)
{
cTCOMData[0] = buffer[0];
cTCOMData[1] = buffer[1]; //ADC0H
cTCOMData[2] = buffer[2]; //ADC0M
cTCOMData[3] = buffer[3]; //ADC0L
cTCOMData[4] = buffer[4];
cTCOMData[5] = buffer[5];
cTCOMData[6] = buffer[6];
cTCOMDataN = 7; //賦值--允許串口發(fā)送數(shù)據(jù)
TI=1; //啟動(dòng)串口中斷
}
}
void UART_ISR() interrupt 4 {
if (TI) { //發(fā)送中斷。發(fā)送完成(TI0位被置1)時(shí)將產(chǎn)生一個(gè)中斷。
TI = 0; //中斷服務(wù)硬件不清除UART0中斷標(biāo)志,必須用軟件清除。
if (cTCOMDataN) { //將ADC0轉(zhuǎn)換結(jié)果傳出(5個(gè)字節(jié)).
SBUF = cTCOMData[7 - cTCOMDataN];
cTCOMDataN--;
}
}
else //RI0=1
{
RI = 0;
//add your code here!
cRCOMData=SBUF;
//SBUF0 = cSCOMData;
}
}
void UART_Init() {
TMOD = 0x20|TMOD; //定時(shí)器1作為波特率發(fā)生器
IE = 0x10 | IE; //串口中斷允許。位7-0:EA,ESPI0,ET2,ES0,ET1,EX1,ET0,EX0
SCON = 0x50; //SCON0: 8-bit variable bit rate 接收允許
TCON = 0x40;
//CKCON = 0x01; //無(wú)->9600 0x01->19200
TH1 = 0xfd; //0x96->9600 0x61->19200
//TI0 = 1;
//19200BPS
//CKCON = 0x08;
//TH1 = 0xB1;
}
復(fù)制代碼
作者:
1440615597
時(shí)間:
2020-6-1 22:23
沒(méi)有主函數(shù)嗎
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1