微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 请问各位大神这个中断程序问题出在哪里?无法执行到 flag=0,连接传感器是串口输出,输入7个,返回10个数据

请问各位大神这个中断程序问题出在哪里?无法执行到 flag=0,连接传感器是串口输出,输入7个,返回10个数据

时间:10-02 整理:3721RD 点击:
void UsartConfiguration ()
{
        SCON=0X50;                        //设置为工作方式1  ,允许接收
        TMOD=0X20;                        //设置计数器工作方式2
        PCON=0X80;                        //波特率加倍
        TH1=0XF3;                                //计数器初始值设置,波特率9600
        TL1=0XF3;
        ES=1;                                                //打开接收中断
        EA=1;                                                //打开总中断
        TR1=1;                                        //打开计数器
}

void Usart() interrupt 4
{
        for(i=0;i<7;i++)
                {
                        TI=0;                                          //清除数据传送标志       
                        SBUF=in[i];
                        while(!TI);
                        Delay1ms(1);//等特数据传送
                }
       
       
                Delay1ms(5);
       
                for(i=0;i<10;i++)
                {
                        RI=0;               
                        out[i]=SBUF;
                        while(!RI);
                        Delay1ms(1);
                               
                }
                flag=0;
}  

将接受数据部分放在中断程序中,发送数据部分放主程序部分,且在主程序发送数据时,切记发送前关中断,等发送完毕再开中断

思路很中要啊~~~~~加油吧。

中断不能这么干的把。

        UsartConfiguration ();
        while(flag);
                ES=0;                                               
                EA=0;
                for(i=0;i<10;i++)
                {
                        RI=0;               
                        out=SBUF;
                        while(!RI);
                        Delay1ms(1);
                               
                }
                ES=1;                                               
                EA=1;
void Usart() interrupt 4
{
        for(i=0;i<7;i++)
                {
                        TI=0;                                          //清除数据传送标志       
                        SBUF=in;
                        while(!TI);
                        Delay1ms(1);//等特数据传送
                }
       
       
                Delay1ms(5);
       
       
                flag=0;
}  
这样么?还是不行……

求教应该单片机应该如何和传感器进行串口通讯?比如这个发7字节的命令接收10字节的数据。

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

网站地图

Top