关于用串口助手来实现pc控制单片机led并将数据回传

关于用串口助手来实现pc控制单片机led并将数据回传,第1张

关于用串口助手来实现pc控制单片机led并将数据回传

源代码(C语言)

#include
//#include
//#include
#define u16 unsigned int
#define u8 unsigned char
u8 flag,temp;

void Usart_Init()
{
            TMOD=0x20;//定时器1方式2自动重装   0010 0000(方式2)高四位启动定时器1
            TH1=0xf3;//4800倍频,12Mhz//倍频之后串口调试还是选择4800波特率
            TL1=0xf3;//高四位的值一直会往低四位送
            PCON=0x80;//倍频
            SCON=0x50;//工作方式1    0101 0000 
            //ET1=1;    //可不开,此开关打开,led初始全亮
            EA=1;    //打开总中断
            TR1=1;//打开计数器
            ES=1;//打开接收中断
}

void main()
{
            Usart_Init();//初始化
            while(1)
            {                                        
                    if(flag==1)
                    {
                            ES=0;//关闭接收中断
                            flag=0;
                            SBUF=temp;//接受缓存器                        
                                while(!TI);             //等待发送数据完成
                                TI=0;                         //清除发送完成标志位
                            ES=1;
                    }
            }                
}
void Usart()interrupt 4
{
        
        RI=0;//清除接收中断标志位        
        P2=SBUF;//发送缓存器,两个地址一样  不同的缓存器  
        temp=SBUF;
        flag=1;

}

如果pc向单片机发送了数据则进入中断flag被置1 if判定进去关闭接收中断防止单个数据在while里一直被发送

下面展示while里ES没有被关闭的情况 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5703095.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存