51串口中断求思路

[复制链接]
1381|5
 楼主| DT天若有情 发表于 2017-7-6 20:50 | 显示全部楼层 |阅读模式
//这是自己写的串口中断。计算机发一个数十六进制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;
}
whirt_noob 发表于 2017-7-7 07:58 | 显示全部楼层
`在侃单片机论坛上有个帖子有,搜一下叫吴坚宏的
mcu5i51 发表于 2017-7-7 09:04 | 显示全部楼层
D1是个位变量,好像有些问题
ningling_21 发表于 2017-7-7 09:14 | 显示全部楼层
不行,位变量有问题
fengfeng的恒 发表于 2017-7-7 09:19 | 显示全部楼层
DI是bit变量,有问题;你的蜂鸣器部分呢?
hanlie2345678 发表于 2017-7-7 15:21 | 显示全部楼层
这样写是不行啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

23

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部