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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7266|回復(fù): 8
打印 上一主題 下一主題
收起左側(cè)

通過串口控制流水燈流動和停止的程序,發(fā)送字符1后實現(xiàn)流水燈,但卻不能控制停止。

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:379308 發(fā)表于 2018-9-29 21:15 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#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機緩沖器中的內(nèi)容存入變量寄存器中
        RI=0;                     //單片機接收完成后
        SBUF=ReceiveData;                 //單片機接收完了的數(shù)據(jù)存到緩沖器中
        while(!TI);              //判斷是否發(fā)送完成
        TI=0;                                         //發(fā)送完成
       
}

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);       
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:261288 發(fā)表于 2018-9-30 07:26 | 只看該作者
數(shù)組聲明不合法u8 n[]="01";改為u8 n[]={0,1};

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

板凳
ID:164602 發(fā)表于 2018-9-30 08:11 | 只看該作者
串口中斷服務(wù)程序不對嘛。
這個程序進入流水燈后,就進入到死循環(huán)了,你以后的所有操作都無效啊。
建議:將控制的內(nèi)容,放在主循環(huán)內(nèi),不要放在中斷程序中。這樣,就可以不用循環(huán)流水燈,而是if流水燈,通過中斷,隨時都可以停止的。

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

地板
ID:279667 發(fā)表于 2018-9-30 08:51 | 只看該作者
在UsartInterrupt函數(shù)中,有while的判斷,并且條件一直都是個真值,無法跳出該循環(huán),一般情況下,不建議在中斷函數(shù)中做耗時比較長的操作?梢栽黾右粋跑馬燈的函數(shù),并且引入一個開關(guān)變量,在中斷中來改變這個變量,從而控制這個跑馬燈的函數(shù)執(zhí)行效果?梢赃@樣試試看。

評分

參與人數(shù) 1黑幣 +40 收起 理由
admin + 40 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

5#
ID:396960 發(fā)表于 2018-9-30 09:06 | 只看該作者
1,校驗用的數(shù)組 n[]="01";  你是賦值字符串了,其實個人覺得直接賦值 十六進制數(shù)方便些。
2,應(yīng)該是中斷函數(shù)有問題吧?中斷函數(shù)里怎么用while(1) ?? 沒試過這么用的。改一下看看

評分

參與人數(shù) 1黑幣 +30 收起 理由
admin + 30 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

6#
ID:308437 發(fā)表于 2018-9-30 09:10 | 只看該作者
     if(m==n[1])
        {
                P2=0xFE;
                while(1)
                {
                        P2=_crol_(P2,1);
                        delay_ms(150);
                }        
        }
這里不改這個樣寫的。那個流水燈循環(huán)要放在主循環(huán)中。你串口下發(fā)的是標(biāo)志位,要不然,就會進入死循環(huán),后面再發(fā)的指令接受不到的

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

7#
ID:373388 發(fā)表于 2018-9-30 12:49 | 只看該作者
中斷里while循環(huán)是個死循環(huán),不出來了

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

8#
ID:379308 發(fā)表于 2018-10-6 15:19 | 只看該作者
phang 發(fā)表于 2018-9-30 09:06
1,校驗用的數(shù)組 n[]="01";  你是賦值字符串了,其實個人覺得直接賦值 十六進制數(shù)方便些。
2,應(yīng)該是中斷 ...

控制流水燈需要使用循環(huán),我用在中斷里是有問題,請問該如何改啊?感謝感謝

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

9#
ID:297824 發(fā)表于 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;//置標(biāo)志位
                        /*    P2=0xFE;
                while(1)
                {
                        P2=_crol_(P2,1);
                        delay_ms(150);
                }    */   
        }
        if(m==n[0])
        {
            Uart_Command_Flag = 0;//清標(biāo)志位
                    //      P2=0XFF;
        }        
        ReceiveData=SBUF;                  //將PC機緩沖器中的內(nèi)容存入變量寄存器中
        RI=0;                     //單片機接收完成后
        SBUF=ReceiveData;                 //單片機接收完了的數(shù)據(jù)存到緩沖器中
        while(!TI);              //判斷是否發(fā)送完成
        TI=0;                                         //發(fā)送完成
        
}



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;
}

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美激情一区二区三区 | 黄色在线网站 | 国产欧美一区二区三区国产幕精品 | 久久久久久久久久久国产 | 欧美精品 在线观看 | 欧美精品一区二区免费视频 | 久久亚洲一区二区三 | 日韩在线免费视频 | 污片在线观看 | 欧美成人h版在线观看 | 青青草原综合久久大伊人精品 | 岛国av在线免费观看 | 精品免费 | 欧美日韩精品国产 | 国产在线观看福利 | 一区二区成人在线 | www.精品国产| 一区二区视频在线 | 亚洲成人一二区 | 国产精品久久久亚洲 | 精品国产成人 | 黄色一级大片在线免费看产 | 一区中文字幕 | 久热精品在线 | 欧美日韩在线视频一区 | 精品国产欧美 | 日本在线免费观看 | 欧美日韩大陆 | 高清欧美性猛交 | 亚洲天堂色| 日韩精品一区二区三区中文在线 | 久久久成人免费一区二区 | 日韩手机在线看片 | 亚洲高清视频在线观看 | 激情av网站 | 伊人精品久久久久77777 | 亚洲+变态+欧美+另类+精品 | 成人在线视频网站 | 国产精品1区2区3区 男女啪啪高潮无遮挡免费动态 | 成人影院免费视频 | 国产yw851.c免费观看网站 |