微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 串口通讯控制蜂鸣器的响灭

串口通讯控制蜂鸣器的响灭

时间:10-02 整理:3721RD 点击:
一个小小的错误纠结了好久啊,思路是对的,就是电脑发送的是ASSIC码,我死在了这里,现在弄好了,希望大家不要跟我一样纠结啊
//1由上位机发送1给单片机时,蜂鸣器以400ms频率发声,发2时以200ms频率发声,发3时以100ms频率发声,发4时关闲蜂鸣器
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar aa,a;
sbit beep=P2^3;
sbit d1=P1^0;       
void init();
void delay(uint);
void main()
{
                init();
                while(1)
                {
                        if(a==1)
                        {
                                aa=SBUF;
                                a=0;
                                ES=0;
                                switch(aa)
                        {
                                case '1':        beep=0;delay(200);beep=1;break;          //注意,电脑发送的数据是ASIIC码,所以这里要加单撇号,‘1’,
                                 case '2':        beep=0;        delay(100);beep=1;break; //不然是没反应的,自己可以试验一下。
                                case '3':        beep=0;        delay(50);beep=1; break;
                                case '4':beep=1;break;
                                default:break;
                        }
                                ES=1;
                        }
                }                                 
}
void init()
{
        TMOD=0X20;
        SCON=0X50;
        TH1=0XFD;
        TL1=0XFD;
        TR1=1;
        EA=1;
        ES=1;
}
void ser() interrupt 4
{
        aa=SBUF;                 
        RI=0;               
        a=1;
}
void delay (uint z)
{
         uint x,y;
         for(x=z;x>0;x--)
                 for(y=110;y>0;y--);
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top