这段代码是用软件生成的,51代码,12T,9600波特率。
主程序部分在大循环之前别忘了初始化串口和定时器(InitUART()已经初始化好了),当你的串口每接收到一个字节,就会产生一个串行中断,就会执行UARTInterrupt(void) interrupt 4里面的代码,做好数据接收处理就行。
#include <reg51.h>
void InitUART(void)
{
TMOD = 0x20
SCON = 0x50
TH1 = 0xFD
TL1 = TH1
PCON = 0x00
EA = 1
ES = 1
TR1 = 1
}
void main(void)
{
InitUART()
while(1)
}
void UARTInterrupt(void) interrupt 4
{
if(RI)
{
RI = 0
//add your code here!
}
else
TI = 0
}
void SendOneByte(unsigned char c)
{
SBUF = c
while(!TI)
TI = 0
}
你的中断服务函数作用是:串口设备每接收一个字节数据(8位)便产生一次中断,并检测是否收到的是字符【,不是则放弃数据,是则保存到数组 jsbuf 里去,然后把随后接收到的字节数据也一一保存到这个数组去,直到接收到字符 】为止,同样保存,并设置标记 rflag;
一句话,就是要从接收的数据中,提取 【xxxx】数据;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)