導航:首頁 > 操作系統 > 單片機檢查上升沿計數

單片機檢查上升沿計數

發布時間:2022-05-26 16:02:23

A. 如何探測51單片機IO口的上升沿

好像不能實現。51里的中斷也是低電平或者下降沿觸發。
可以把上升沿信號加個反向器,來觸發51得中斷。

B. 如何用單片機普通I/O口檢測上升沿或下降沿

您是問硬體的方式?還是軟體的方式?
如果是硬體的方式,那麼,各種單片機很不相同,需要具體看它的資料。
一般來說,某些引腳,例如:外中斷引腳、定時器的計數觸發引腳、捕獲引腳等等,都可以用來檢測上升沿與下降沿。
以捕獲(有的單片機資料如80196,將它稱作「高速輸入」)引腳為例:
捕獲引腳可以與某個定時器相關聯,在捕獲引腳上遇到上升沿或下降沿時,硬體就自動記錄下當時定時器的讀數,並產生中斷請求。您可以在中斷服務程序中做所需的相應操作。
至於是上升沿捕獲,還是下降沿捕獲,還是二者都能捕獲,可以由用戶自己選擇配置。
如果是用軟體的方式來檢測,那道理就簡單了。用查詢方式:只要將要檢測的信號接到某個輸入埠的某個位,在程序中反復讀取該位的輸入,一旦遇到「上次是0此次是1」的情況,就說明檢測到了上升沿,遇到「上次是1此次是0」的情況,就說明檢測到了下降沿。

C. 51單片機如何識別方波脈沖的上升沿下降沿,方波周期未知,且下降沿時觸發計數器計數,硬體電路。

最簡單的就是利用定時計數中斷的上升沿和下降沿觸發來實現,

D. 請教,用單片機一個輸入口實現上升沿,下降沿都計數

對於51單片機,可用一個外部中斷引腳,如INT0-P3.2
設置成下降沿中斷模式,中斷後計數,在中斷程序中,查詢P3.2引腳狀態,由0變成1,即發現上升沿後就計數。然後退出中斷。再次下降沿,再次重復。

E. 求51單片機的上升沿和下降沿C語言檢測程序列子,埠就是普通IO口。

這里只講原理,不關注速度。實際設計工作中,已經有很多單片機能夠識別io埠上升沿和下降沿中斷,且方式不止一種。
sbit io_inp=P2^1;輸入端
bit old_bit;輸入端電平記憶
unsigned char low_high;上升下降沿標志,0=無變化,1=上升沿,2、下降沿
void io_rest(void)
{
if(old_bit=!io_inp)
{
old_bit=io_inp;
if(io_inp=1)
low_high=1;
else
low_high=2;
}
}

void main(void)
{
old_bit=io_inp=P2^1;
while(1)
{
low_high=0;
io_rest(void);
//在此應用
}
}

F. 單片機C語言怎麼判斷上升沿觸發

1、上升沿和下降沿一般是硬體處理,程序只能判斷是否已出現。計數器一般會自動計數,如果是程序模擬計數器,先置狀,如被外部改變,就認為已出現跳變。
2、單片機(Microcontrollers)是一種集成電路晶元,是採用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計數器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊矽片上構成的一個小而完善的微型計算機系統,在工業控制領域廣泛應用。從上世紀80年代,由當時的4位、8位單片機,發展到現在的300M的高速單片機。

G. 單片機使用計數器時 使用上升沿或下降沿計數肘 如何防止抖動產生的重復計數

加防抖,就是在電平變化超過一定的值時才認為是有效電平變化,防抖時間取決於信號及干擾

H. 單片機如何做上升沿

單片機上升沿:
順時針旋轉A超前B相信號90°:
A: _|--|__|--|_
B: __|--|__|--|
逆時針旋轉B相信號超前A相信號90°:
A:__|--|__|--|_
B:_|--|__|--|__
下面是AT89C2051檢測並進行二倍頻程序:
;採用外部中斷方式
ORG 00H
LJMP MAIN
ORG 03H
LJMP INT0
ORG 13H
LJMP INT1
ORG 50H
MAIN: MOV SP,#40H
MOV P3,#0FFH
MOV IE,#10000101B ;設定外部中斷
MOV TCON,#00000101B
SETB EA
MA1: MOV P1,#0FFH
MOV P3,#0FFH
SJMP MA1
;*******************
INT0: PUSH PSW
CLR EA
I0: JNB P1.0,FAN
CLR P3.4
SJMP INT0END
FAN: CLR P3.5
INT0END:
POP PSW
SETB EA
MOV P3,#0FFH
RETI

INT1: PUSH PSW
CLR EA
JNB P1.0,ZHENG
CLR P3.5
SJMP INT1END
ZHENG: CLR P3.4
INT1END:
POP PSW
SETB EA
MOV P3,#0FFH
RETI

I. 用51單片機匯編語言檢測上升沿和下降沿

這里只講原理,不關注速度。實際設計工作中,已經有很多單片機能夠識別io埠上升沿和下降沿中斷,且方式不止一種。

sbit

io_inp=p2^1;輸入端

bit

old_bit;輸入端電平記憶

unsigned

char

low_high;上升下降沿標志,0=無變化,1=上升沿,2、下降沿

void

io_rest(void)

{

if(old_bit=!io_inp)

{

old_bit=io_inp;

if(io_inp=1)

low_high=1;

else

low_high=2;

}

}

void

main(void)

{

old_bit=io_inp=p2^1;

while(1)

{

low_high=0;

io_rest(void);

//在此應用

}

}

(9)單片機檢查上升沿計數擴展閱讀:

直接使用匯編指令編寫單片機程序,對硬體的控制更加直接,可以直接操作物理地址,寄存器,埠等;其它更高級的語言(如:C語言)對硬體的控制是依賴於類庫來實現的。並且,對於一些對程序大小和運行速度有非常嚴苛要求的項目而言,都必須使用匯編指令。

C語言只是為了方便編寫,與機器打交道的其實都是2進製得代碼,匯編語言就是這些代碼好記憶的名稱和規則,只是比C語言難理解些。

J. 單片機檢查上升沿並計數,怎麼實現可否有例子示範

單片機定時器只能在脈沖下降沿計數,為了能在上升沿計數,我們須在單片機相應的外部輸入引腳T0(P3.4)或T1(P3.5)上接一個反相器,這樣就能把上升沿變為下降沿,從而滿足了我們需要的功能。

參考C51程序如下:希望對你能有幫助

#include<reg51.h>
#define ulong unsigned long
#define uchar unsigned char
#define uint unsigned int
ulong i;
void time0_int(void) interrupt 1 //硬體寄存器最多稚計數65536個脈沖,
{ //為解決此問題用件計數來實現
i=i+1; TH0=0;TL0=0;TR0=1;
}
uint read()
{
uchar tl,th1,th2;
uint val;
while(1)
{
th1=TH0;
tl=TL0;
th2=TH0;
if(th1==th2)
break;
}
val=th1*256+tl;
return val;
}
void main()
{
uchar num;
TMOD=0x05;
TH0=0;
TL0=0;
TR0=0;
while(1)
{
num=read(); //讀取T0引腳上的脈沖個,賦值給num
}
}

閱讀全文

與單片機檢查上升沿計數相關的資料

熱點內容
移動端微信商城源碼 瀏覽:442
編程貓下一個背景在哪裡 瀏覽:354
javaclasstype 瀏覽:234
樂高編程和樂高課的延伸 瀏覽:354
蘋果手機怎麼切換app美國賬號 瀏覽:861
編譯程序輸入一個字元串 瀏覽:407
圓命令畫法 瀏覽:308
如果給電腦e盤文件加密 瀏覽:801
javaswing項目 瀏覽:778
androidsdksetup 瀏覽:1005
pdf怎麼設置中文 瀏覽:128
安卓手機用什麼軟體看倫敦金 瀏覽:966
魅族文件夾無名稱 瀏覽:792
蘇黎世無人機演算法 瀏覽:876
核桃編程和小碼王的融資 瀏覽:686
微積分教材pdf 瀏覽:727
寫python給微信好友發消息 瀏覽:340
蚊帳自營米加密 瀏覽:422
學校推薦核桃編程 瀏覽:807
湖南農信app怎麼導明細 瀏覽:475