⑴ 如何用單片機普通I/0檢測電平跳變
while(PinStD)//檢測
低電平
{;}ShortDelay(5);//模擬
上升沿
時間
while
(!PinStD)//檢測
高電平
{;}其中PinStD在
頭文件
中以定義為單片機的某一I/O口,該程序用來檢驗I/O口上的正跳變,在
模擬軟體
中取得了很好的效果。
⑵ 檢測單片機多個引腳的跳變情況!
這樣子哈,我給你舉個例子:
你用P1.1、P1.2、P1.3(K1、K2、K3)這三個腳做為按鍵輸入,用P3.3做為按鍵檢測輸入。
硬體連接:K1、K2、K3全部通過一隻1K電阻接到P3.3。
初始化時:將K1、K2、K3全部置為低,設置外中斷1有效(中斷服務程序即是鍵盤處理程序,同時單片機進入掉電模式的喚醒辦法)
鍵盤處理(中斷服務1):進入後先將K1、K2、K3全部置高,然後逐一置低檢測中斷引腳狀態,如,置低K2時,中斷引腳P3.3同時也為低,那麼就是按下了K2。
這樣有個最好的好處就是,單片機執行完畢後立即進入掉電模式(待機模式),在掉電模式下只有復位和外中斷可以激活。掉電模式下只有幾微安的電流,電池隨便幾個月沒問題。
我有150mA的鋰電池做的遙控器,充次電得管2個多月。
⑶ 什麼是單片機中的負跳變呀
就是信號由高電平向低電平的跳變.
⑷ 單片機數碼管顯示同一個數碼管上出現數字跳變
for(num=0;num<16;num++)…你有16個數碼管呀?
void main()
{
while(1) {
aa = 0x7f;
for(num = 0; num < 8; num++) {
P0 = table[num];
P2 = aa;
delay(50);
aa = _cror_(aa, 1);
}
}
}
⑸ 單片機開機有個跳變信號是什麼原因
就是信號由高電平向低電平的跳變。
在單片機中,負跳變指平由高電平變成低電平的過程,也叫下降沿,高脈沖就是正脈沖,給一個上升沿。負跳變指令檢測它前面的邏輯狀態。
⑹ 51單片機INT1中斷電平觸發方式和跳變沿觸發方式有什麼區別
真正的區別在於:
電平觸發方式時,中斷
標志寄存器
不鎖存
中斷請求
信號。也就是說,單片機把每個
機器周期
的S5P2采樣到的外部
中斷源
口線的電平邏輯直接賦值到中斷標志寄存器。標志寄存器對於請求信號來說是透明的。這樣當中斷請求被阻塞而沒有得到及時響應時,將被丟失。換句話說,要使電平觸發的中斷被CPU響應並執行,必須保證
外部中斷
源口
線的
低電平
維持到中斷被執行為止。因此當CPU正在執行同級中斷或更高級中斷期間,產生的外部中斷源(產生低電平)如果在該中斷執行完畢之前撤銷(變為
高電平
)了,那麼將得不到響應,就如同沒發生一樣。同樣,當CPU在執行不可被中斷的指令(如RETI)時,產生的電平觸發中斷
如果時間
太短,也得不到執行。邊沿觸發方式時,中斷標志寄存器鎖存了中斷請求。中斷口線上一個從高到低的跳變將記錄在標志寄存器中,直到CPU響應並轉向該
中斷服務程序
時,由硬體自動清除。因此當CPU正在執行同級中斷(甚至是外部中斷本身)或高級中斷時,產生的外部中斷(負跳變)同樣將被記錄在中斷標志寄存器中。在該中斷退出後,將被響應執行。如果你不希望這樣,必須在中斷退出之前,手工清除外部中斷標志。
選擇電平觸發還是邊沿觸發方式應從系統使用外部中斷的目的上去考慮,而不是如許多資料上說的根據中斷源信號的特性來取捨。
⑺ 51單片機埠跳變如何檢測呢
如何寫程序檢測出0010到0001的跳變呢?
--循環輸入。
每當輸入的四位由0010變為0001時,單片機輸出的四位就恆定給出一組數,如0010;
其他任意輸入情況,輸出端都輸出0000。
--上次檢測是2,現在檢測是1,那就輸出2;
--否則,都輸出0。
如果跳變不是一組而是遇到多組該如何呢?
(如輸入由0010變為0001,輸出0010;輸入由0100變為0010,輸出1000)
--依此類推。