導航:首頁 > 操作系統 > 單片機加1法

單片機加1法

發布時間:2022-07-09 21:56:27

1. 單片機C語言如何實現按鍵按一下的時候加一,長按的時候連加。

這個可以通過定時器來實現,比如當按鍵時間小於2秒時,按一次加1,當超過2秒時,沒50毫秒加1實現連加功能。常式如下:
#include<reg51.h>
unsigned int a;
unsigned char times;
sbit key=P1^0;
void t0isr() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
times++;
if(times>40)
{

a++;
printf("%d",a);

}

}

main()
{
TMOD=0x21;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=0xfd;
TL1=0xfd;
TR0=1;
TR1=1;
ET0=1;
EA=1;
times=0;
a=0;
while(1)
{
if(key==0)

{

a++;

printf("%d",a);

while(key==0);

times=0;

}

}

}

2. 如何使單片機寄存器中存放的地址數據加1(假設該地址數據未知)

嘿嘿 可以使用單片機的加1指令
存放地址的寄存器 是指針 可以存地址的寄存器有 DPTR 、 R0、 R1、
可以使用加1指令 使他們中存放的地址數據加1
INC DPTR
INC R0
INC R1

要使指針所指的內容加1 可以使用

INC @ R0
INC @R1

呵呵 滿意 就選滿意回答

3. 單片機 2位數間隔1s自動加1 的程序怎麼寫呀、

2位數間隔1s自動加1 的程序的實現方法:

1 利用定時器1,定時50毫秒,每當50毫秒定時時間到時,使用軟體計數器計數,當計數到20時,即1秒時間到。(這時軟體計數器要清零,重新開始為下一秒計數)

2 每當1秒時間到時,應該讓你的自動加1計數器加1。

3 樓上的朋友配合的真好,這么快就已經給出了具體的程序 其中 time為軟體計數器;x為自動加1計數器。你可以作為參考,修改後嵌入到自己的程序中。

4. 單片機按鍵按一次就加一

按鍵相對是個低速任務。你按的再快,一秒可以按十次嗎?什麼?你可以。。那你就是作弊了。因為哪怕你反應的過來。按鍵可不行。所以。這個本質你需要牢牢抓住。那麼你可以選擇一秒之內只檢測幾次按鍵。把幾乎是連續在使用的機器時間碎片化。比如在一個碎片里只查一次按鍵。是的,你現在就是這么做的。只是循環太快。碎片太多。按鍵的抖動你都查到了。所以你需要的僅僅是慢下來。極限就是剛剛說的查10次。算算,這是一個100ms的定時。明白定時器的真正用途了嗎?如果你實際這么實驗了你會發現這的確有效。不會加個成百上千了。接下來你需要設置一個邏輯讓按鍵檢測只對下降沿起作用。最好的辦法就是和前次的狀態比較。如果上次的狀態為高而此次狀態為低。那麼這就是個下降沿。於是你需要一個寄存器保存上一次的狀態。並每次比較後更新。原來這寄存器是這么用的。。實際實驗後發現這么干已經可以保證基本每次長按只會加1。但是短按似乎會丟失。那是因為。100ms實在是長了些。電平保持100ms有時是太難了。所以,你可以適當提高頻率。比如提高10倍。以10ms為周期。基本能解決大多數問題。

5. c51單片機按鍵加1,保持

1.設置一個狀態變數,如flag,定義flag=0為開狀態,flag=1為關狀態。
2.因為是按鍵(不是開關),所以實際上單片機讀取的應該是脈沖形式的輸入。設按鍵接單片機p01引腳,故可採用以下程序實現按鍵掃描
if(p01==0)//按下按鍵,進入下降沿
{
delay2();//20ms延時去按鍵前抖動
while(p01==0);//等待上升沿到
來,即按鍵彈起
flag=~flag;//flag取反,實現狀態切換
}
void
delay2()//20ms延時子程序
{
unsigned
char
i,k;
for(i=0;i<100;i++)
for(k=0;k<100;k++);
}
註:根據按鍵的具體接法,若按下按鍵向單片機輸入低電平,則採用以上程序;若按下按鍵向單片機輸入高電平,則將兩處p01==0均改為p01==1。

6. 如何使單片機寄存器中存放的地址數據加1(假設該地址數據未知)

嘿嘿
可以使用單片機的加1指令
存放地址的寄存器
是指針
可以存地址的寄存器有
DPTR

R0、
R1、
可以使用加1指令
使他們中存放的地址數據加1
INC
DPTR
INC
R0
INC
R1
要使指針所指的內容加1
可以使用
INC
@
R0
INC
@R1
呵呵
滿意
就選滿意回答

7. 單片機中,inc指令是在執行前加1還是執行後加1

具體執行方法如下
首先需要在編程區域輸入指令的執行條件,在左母線右側輸入:LD X2,當X2接通時運行加1指令。

然後輸入加1指令:INCP D0。其含義為當執行此指令時,D0的數據自動加1,INC與INCP的區別在於:INC是程序運行每個周期都加1,而INCP是脈沖指令型指令,只在第一個掃描周期執行加1.

編寫好程序先對程序進行轉換,然後點擊模擬測試按鈕將程序寫入模擬PLC。

點擊測試窗口的「菜單啟動」然後選擇「繼電器內存監視」。

從監視窗口選擇位軟元件X和字軟元件D。

通過模擬模擬可以看到:當X2每次接通時,目標操作數都會進行加1運算。

注意事項:
若不採用脈沖型,當X2接通時,D0會一直進行加1運算。
參考資料來源:吳鑒鷹吧
貢獻文檔:網路文庫《吳鑒鷹單片機項目實戰精講》
參考實例:吳鑒鷹單片機開發板

8. 單片機按一下加一,加到20的程序

假設P0 P1口各接一個數碼管,p2.0接按鍵,程序如下:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit key=P2^0;
uchar num=0;
//共陰數碼管七段碼
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77};
void Delay1ms(uint i) //1ms延時程序
{
uint j;
for(;i>0;i--)
{
for(j=0;j<164;j++)
{;}
}
}
void main(void )//主程序
{
while(1)
{
if(key==0)//判斷按鍵是否按下
{
Delay1ms(10);//延時消抖
if(key==0)
{
while(key==0);;//等待按鍵抬起
num++;
if(num==20)num=0;
}
}
P0=table[num%10];
P1=table[num/10];
}
}

閱讀全文

與單片機加1法相關的資料

熱點內容
季羨林pdf 瀏覽:714
php支付寶介面下載 瀏覽:814
ipad怎麼把app資源庫關了 瀏覽:301
量柱比前一天多源碼 瀏覽:416
電子書app怎麼上傳 瀏覽:66
國家反詐中心app注冊怎麼開啟 瀏覽:804
全波差分傅里葉演算法窗長 瀏覽:41
程序員如何講自己做過的項目 瀏覽:7
程序員要看的書頸椎 瀏覽:946
php文章cms 瀏覽:553
CSS權威指南第三版PDF 瀏覽:496
android怎麼搭建框架 瀏覽:184
正宗溯源碼大燕條一克一般多少錢 瀏覽:917
電腦感染exe文件夾 瀏覽:916
wpsppt怎麼轉pdf格式 瀏覽:88
騰訊文檔在線編輯怎麼添加密碼 瀏覽:880
本地不能訪問伺服器地址 瀏覽:865
訪問伺服器命令 瀏覽:835
華為雲伺服器分銷商 瀏覽:954
Linux定位內存泄露 瀏覽:198