标题:
51单片机串口通信程序
[打印本页]
作者:
castaway
时间:
2020-5-28 18:31
标题:
51单片机串口通信程序
51单片机串口通信程序
/******串口中断接口说明*************
功能:发送1帧数据/接收1字节数据
void fillTCOMData (unsigned char buffer[5]);//buffer[5]需要串口发送的数组
unsigned char cRCOMData; //暂存从串口接收的数据
*****************************/
#include <REG52.h> // SFR declarations
//,,,,,,接口变量,,,,,,,,,,,,,,,,,,,,
unsigned char cRCOMData; //暂存从串口接收的数据
//,,,,,,模块内变量,,,,,,,,,,,,,,,,,,,,
unsigned char cTCOMData[7]; //暂存向串口发送的数据(一组数据发送完成以后才接受下一组)
unsigned char cTCOMDataN; //向串口发送数据的剩余个数
void fillTCOMData (unsigned char buffer[7]) {
//此处只负责填充数据, 主程序负责发送串口
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; //赋值--允许串口发送数据
TI=1; //启动串口中断
}
}
void UART_ISR() interrupt 4 {
if (TI) { //发送中断。发送完成(TI0位被置1)时将产生一个中断。
TI = 0; //中断服务硬件不清除UART0中断标志,必须用软件清除。
if (cTCOMDataN) { //将ADC0转换结果传出(5个字节).
SBUF = cTCOMData[7 - cTCOMDataN];
cTCOMDataN--;
}
}
else //RI0=1
{
RI = 0;
//add your code here!
cRCOMData=SBUF;
//SBUF0 = cSCOMData;
}
}
void UART_Init() {
TMOD = 0x20|TMOD; //定时器1作为波特率发生器
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; //无->9600 0x01->19200
TH1 = 0xfd; //0x96->9600 0x61->19200
//TI0 = 1;
//19200BPS
//CKCON = 0x08;
//TH1 = 0xB1;
}
复制代码
作者:
1440615597
时间:
2020-6-1 22:23
没有主函数吗
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1