久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 通過串口控制流水燈流動和停止的程序,發送字符1后實現流水燈,但卻不能控制停止。 [打印本頁]

作者: 蓮蓬16    時間: 2018-9-29 21:15
標題: 通過串口控制流水燈流動和停止的程序,發送字符1后實現流水燈,但卻不能控制停止。
#include<reg52.h>
#include<intrins.h>

typedef unsigned char  u8;
typedef unsigned int   u16;

u8 n[]="01";
void UsartConfig();
void delay_ms(u8 ms);

void UsartConfig()
{
        TMOD=0X20;
        TH1=0XF3;
        TL1=0XF3;
        PCON=0X80;
        SCON=0X50;
        TR1=1;
        ES=1;
        ET1=0;
        EA=1;
}

void UsartInterrupt() interrupt 4
{
        u8 m;
        u8 ReceiveData;
        m=SBUF;
        if(m==n[1])
        {
                P2=0xFE;
                while(1)
                {
                        P2=_crol_(P2,1);
                        delay_ms(150);
                }       
        }
        if(m==n[0])
        {
                P2=0XFF;
        }       
        ReceiveData=SBUF;                  //將PC機緩沖器中的內容存入變量寄存器中
        RI=0;                     //單片機接收完成后
        SBUF=ReceiveData;                 //單片機接收完了的數據存到緩沖器中
        while(!TI);              //判斷是否發送完成
        TI=0;                                         //發送完成
       
}

void delay_ms(u8 ms)
{
        u8 a,b;
        for(;ms>0;ms--)
        {
                for(a=49;a>0;a--)
                {
                        for(b=1;b>0;b--);
                }
        }       
}

void main()
{
        UsartConfig();
        while(1);       
}


作者: 冰純    時間: 2018-9-30 07:26
數組聲明不合法u8 n[]="01";改為u8 n[]={0,1};
作者: HC6800-ES-V2.0    時間: 2018-9-30 08:11
串口中斷服務程序不對嘛。
這個程序進入流水燈后,就進入到死循環了,你以后的所有操作都無效啊。
建議:將控制的內容,放在主循環內,不要放在中斷程序中。這樣,就可以不用循環流水燈,而是if流水燈,通過中斷,隨時都可以停止的。
作者: mrhan1992    時間: 2018-9-30 08:51
在UsartInterrupt函數中,有while的判斷,并且條件一直都是個真值,無法跳出該循環,一般情況下,不建議在中斷函數中做耗時比較長的操作。可以增加一個跑馬燈的函數,并且引入一個開關變量,在中斷中來改變這個變量,從而控制這個跑馬燈的函數執行效果。可以這樣試試看。
作者: phang    時間: 2018-9-30 09:06
1,校驗用的數組 n[]="01";  你是賦值字符串了,其實個人覺得直接賦值 十六進制數方便些。
2,應該是中斷函數有問題吧?中斷函數里怎么用while(1) ?? 沒試過這么用的。改一下看看
作者: yousunny    時間: 2018-9-30 09:10
     if(m==n[1])
        {
                P2=0xFE;
                while(1)
                {
                        P2=_crol_(P2,1);
                        delay_ms(150);
                }        
        }
這里不改這個樣寫的。那個流水燈循環要放在主循環中。你串口下發的是標志位,要不然,就會進入死循環,后面再發的指令接受不到的
作者: xhaity    時間: 2018-9-30 12:49
中斷里while循環是個死循環,不出來了
作者: 蓮蓬16    時間: 2018-10-6 15:19
phang 發表于 2018-9-30 09:06
1,校驗用的數組 n[]="01";  你是賦值字符串了,其實個人覺得直接賦值 十六進制數方便些。
2,應該是中斷 ...

控制流水燈需要使用循環,我用在中斷里是有問題,請問該如何改啊?感謝感謝
作者: dadiao    時間: 2018-10-12 12:11
我改了一下代碼,你試試。


unsigned char Uart_Command_Flag;//全局變量,指示接收到的命令

void UsartInterrupt() interrupt 4
{
        u8 m;
    //    u8 ReceiveData;
        m=SBUF;
        if(m==n[1])
        {
         Uart_Command_Flag = 1;//置標志位
                        /*    P2=0xFE;
                while(1)
                {
                        P2=_crol_(P2,1);
                        delay_ms(150);
                }    */   
        }
        if(m==n[0])
        {
            Uart_Command_Flag = 0;//清標志位
                    //      P2=0XFF;
        }        
        ReceiveData=SBUF;                  //將PC機緩沖器中的內容存入變量寄存器中
        RI=0;                     //單片機接收完成后
        SBUF=ReceiveData;                 //單片機接收完了的數據存到緩沖器中
        while(!TI);              //判斷是否發送完成
        TI=0;                                         //發送完成
        
}



void main()
{
        UsartConfig();
        while(1)
                        if(1 == Uart_Command_Flag)
            {
                do{P2=0xFE;}while(0);
                                P2=_crol_(P2,1);
                delay_ms(150);
            }
                        else
                                P2=0XFF;
}






歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日韩综合一区 | 亚洲一页 | 精品视频999| 尤物视频在线免费观看 | 国产美女一区二区 | 欧美日韩国产传媒 | 日本欧美在线观看视频 | 特黄特色大片免费视频观看 | 懂色中文一区二区在线播放 | 98成人网 | 日韩在线观看中文字幕 | 久久狠狠 | 精品一区国产 | 久久久精 | 国外成人在线视频 | 午夜精品久久久久久久久久久久 | 网色| 国产精品久久精品 | 精品国产一区二区久久 | 亚洲免费视频在线观看 | 久久精品一区二区 | 国产精品178页 | 久久国产精品视频 | 中文字幕高清 | 欧美一级片在线看 | 99精品久久| 国产精品久久久久久久久久免费看 | 免费99精品国产自在在线 | 精品一区国产 | 91久久久久 | 欧美一区二区激情三区 | 欧美日韩国产在线观看 | 男女视频免费 | 91精品久久久久久久久中文字幕 | 日韩av美女电影 | 亚洲精品一区二区在线观看 | 欧美一级黄色片免费观看 | 久久精品小视频 | 国产精品1区 | 黄网站在线播放 | 91就要激情 |