//在上位机用串口调试助手发送一个字符X,单片机收到字符后返回给上位机“I get X”,串口波特率设为9600bps。
#include <reg52.h> #define uchar unsigned char #define uint unsigned int uchar flag, a, i; uchar code table[] = "I get"; void init() { ?? ?TMOD = 0x20; ? ?//设定T1定时器工作方式2 ?? ?TH1 = 0xfd;? ? ? ?//T1定时器装初值 ?? ?TL1 = 0xfd; ? ? //T1定时器装初值 ?? ?TR1 = 1; ? ? ? ?//启动T1定时器 ?? ?REN = 1; ? ? ? ?//允许串口接收 ?? ?SM0 = 0; ? ? ? ?//设定串口工作方式1 ?? ?SM1 = 1; ? ? ? ?//设定串口工作方式1 ?? ?EA = 1; ? ? ? ? ?//开总中断 ?? ?ES = 1; ? ? ? ? ? //开串口中断 } void main() { ?? ?init(); ?? ?while (1) ?? ?{ ?? ??? ?if (flag == 1) ?? ??? ?{ ?? ??? ??? ?ES = 0; ?? ??? ??? ?for (i = 0; i < 6; i++) ?? ??? ??? ?{ ?? ??? ??? ??? ?SBUF = table[i]; ?? ??? ??? ??? ?while (!TI); ?? ??? ??? ??? ?TI = 0; ?? ??? ??? ?} ?? ??? ??? ?SBUF = a; ?? ??? ??? ?while (!TI); ?? ??? ??? ?TI = 0; ?? ??? ??? ?ES = 1; ?? ??? ??? ?flag = 0; ?? ??? ?} ?? ?} } void ser() interrupt 4 { ?? ?RI = 0; ?? ?a = SBUF; ?? ?flag = 1; }
|