【望不吝赐教】串口通信编程有问题

2020-02-05 08:51发布

//1.由上位机发送1给单片机时,蜂鸣器以400ms频率发声,发2时以200ms频率发声,发3时以100ms频率发声,发4时关闲蜂鸣器。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar recv_num,flag,t0,temp;
sbit beep=P2^3;
void init();
void main()
{
        init();
        beep=0;
        while(1)
        {
                if(flag==1)
                {
                        flag=0;
                        ES=0;
                        switch (recv_num)
                        {
                                case 1:temp=8;break;
                                case 2:temp=4;break;
                                case 3:temp=2;break;
                                case 4:TR0=0;beep=0;break;
                        }
                        ES=1;
                }
        }
}
void serial() interrupt 4
{
        RI=0;
        recv_num=SBUF;
        flag=1;
}
void time0() interrupt 1
{
        if(t0==temp)
        {       
                t0=0;
                beep=~beep;
        }
        t0++;
}
void init()
{
        TMOD=0X21;
        TH1=0XFD;
        TL1=0XFD;
        EA=1;
        TR1=1;

        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        ET0=1;
        TR0=1;
       
        SM0=0;
        SM1=1;
        ES=1;
        REN=1;       
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
loveye21
1楼-- · 2020-02-05 13:49
 精彩回答 2  元偷偷看……
love_e
2楼-- · 2020-02-05 13:56
能否更加详细一点
loveye21
3楼-- · 2020-02-05 15:27
T0中断级别优先于串口中断,进入T0后无法跳出。

你需要改一下中断优先级。或者进入T0中断后短暂延时一下跳出。

一周热门 更多>