欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 求助 兩個判斷,需要一直檢測,不用定時器可以實現(xiàn)嗎? [打印本頁]

作者: 51_users    時間: 2020-11-6 17:37
標(biāo)題: 求助 兩個判斷,需要一直檢測,不用定時器可以實現(xiàn)嗎?
該怎么寫程序?想實現(xiàn)按下開/關(guān)按鈕后,之后進行一直判斷加減速按鈕的檢測。謝啦!



%0P37X2DER29]ZYHQ%8O$LI.png (4.68 KB, 下載次數(shù): 60)

%0P37X2DER29]ZYHQ%8O$LI.png

作者: hcfat51h    時間: 2020-11-6 18:50
用中斷唄
作者: 51_users    時間: 2020-11-6 20:34
hcfat51h 發(fā)表于 2020-11-6 18:50
用中斷唄

51 中的 兩個中斷已被占用
作者: wysh_2004    時間: 2020-11-6 20:40
很簡單呀,把加減速按鈕檢測放在主函數(shù)中不就一直檢測嗎?
作者: 心有浮生    時間: 2020-11-6 20:49
delay延時,死等
作者: xqleft    時間: 2020-11-7 13:46
51_users 發(fā)表于 2020-11-6 20:34
51 中的 兩個中斷已被占用

來來來 ,你告訴我中斷被什么用了? 其他的都不能用中斷?
作者: 123456czst    時間: 2020-11-8 00:15
用查詢的辦法,用if語句判斷B0和B1的狀態(tài)while(1){if(b0 > 0)......,if(b1>0)....}
作者: 123456czst    時間: 2020-11-8 00:15
但是查詢的辦法有點不好,會特別耗費單片機的系統(tǒng)內(nèi)部資源
作者: 123456czst    時間: 2020-11-8 00:16
還是用中斷的辦法好,畢竟單片機有5個中斷源呢
作者: TTQ001    時間: 2020-11-8 09:24
使用按鍵掃描中斷
作者: huwqly    時間: 2020-11-8 10:48
if(bt0){}
作者: huwqly    時間: 2020-11-8 10:51
if(bt0){}//開關(guān)
else if(b0){ }//加速
else if(b1){ }//減速
作者: shiwowo    時間: 2020-11-8 10:52
按鍵掃描中斷  我也是這個建議

作者: 51_users    時間: 2020-11-8 11:09
xqleft 發(fā)表于 2020-11-7 13:46
來來來 ,你告訴我中斷被什么用了? 其他的都不能用中斷?

串口通信與PWM
作者: 51_users    時間: 2020-11-8 11:10
123456czst 發(fā)表于 2020-11-8 00:16
還是用中斷的辦法好,畢竟單片機有5個中斷源呢

兩個定時器給了串口與PWM
作者: 51_users    時間: 2020-11-8 11:13
shiwowo 發(fā)表于 2020-11-8 10:52
按鍵掃描中斷  我也是這個建議

嗯嗯  嗯嗯
作者: wulin    時間: 2020-11-8 13:04
除了搶答器之類要求按鍵及時響應(yīng)外,其它按鍵控制電路沒有這么高要求,20ms響應(yīng)根本感覺不出來。所以按鍵掃描程序放在主循環(huán)中不會有什么問題。給你寫個示例,基本邏輯關(guān)系一看就明白。
#include <reg51.H>
#define uchar unsigned char
#define uint  unsigned int

sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;

uchar PWM=0;

void key_scan()
{
        static uchar count=0;
        static bit key_sign=0;
        static bit flag=0;
        if(!key1||!key2||!key3)
        {
                if(++count>=10 && key_sign==0)//消抖
                {
                        key_sign=1;
                        if(!key1)                        //開關(guān)
                        {
                                flag=~flag;
                                if(flag==1)
                                        PWM=50;                //初速
                                else PWM=0;                //停止
                        }
                        if(!key2 && flag==1)//加速
                        {
                                if(PWM<100)
                                        PWM++;
                        }
                        if(!key3 && flag==1)//減速
                        {
                                if(PWM>10)
                                        PWM--;
                        }
                }
        }
        else
        {
                count=1;
                key_sign=0;
        }
}
void main()
{
        while(1)
        {
                key_scan();
//                其它任務(wù);
        }
}





歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1