//这是自己写的串口中断。计算机发一个数十六进制00给单片机,单片机蜂鸣器可以响,同时计算机可以显示I GET ....
现在我有这样一个想法,计算机输入1,蜂鸣器每隔0.5s叫一次,计算机输入2,蜂鸣器1s叫一次,计算机输入3,蜂鸣器停止叫;
我觉得实现这个用串口依次排查会不会好点,中断也可以实现吗?
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit D1=P2^3;
uchar code table[]="I GET ";
uchar flag,A,i;
void init();
void main()
{
init();
while(1)
{
if(flag==1)
{
ES=0;
flag=0;
for(i=0;i<6;i++)
{
SBUF=table[i];
while(!RI);
RI=0;
}
SBUF=D1;
while(!RI)
RI=0;
ES=1;
}
}
}
void init()
{
TMOD=0X20;
TH1=0XFD;
TL1=0XFD;
EA=1;
ES=1;
TR1=1;
SM0=0;
SM1=1;
REN=1;
}
void zhongduan() interrupt 4
{
RI=0;
D1=SBUF;
flag=1;
}
|