1. 單片機,什麼是下降沿
單片機中的下降沿,並非是一般意義的下降沿。
單片機工作時,它會自動的,每隔一個機器周期,檢測一次引腳上的電壓。
當,前一次檢測,是高電平,後一次,卻檢測到了低電平,
單片機,就認為是收到了一個《下降沿》。
在單片機中,所說的《下降沿滑滑散》,必須有一個高電平、有一個低電平。
高電平、信氏低電平的持續時間,都必須超過一個機器周期。
否則,單片機就檢測不到。
高、低之間的《斜坡》,不要超過一個機器周期,讓液否則,單片機就難以檢測。
2. 求教關於單片機下降沿捕獲的問題
1.一開始讓430的內部定時器跑起來,你要做的就是設置定時器的時鍾,是否分頻,是否中斷,計數模式這些。要是用到捕獲模式測頻率就要選擇成捕獲模式,還有上升沿或者下降沿捕獲這些。2.之後的過程是這樣的,當單片機的特殊引腳檢測到你設定的觸發信號之後就會立刻把當前時刻的TAR(定時器的16位計數器)中的數據記錄到CCR中(也是一個16位計數器)。然後就跳進一個中斷,如果你要測頻的話就記錄下此刻的CCR值,挑出中斷,隨後在下一個觸發信號到來時再記錄一次CCR的值,兩次數據之差就是再除以定時器時鍾頻率就得到了被測信號一個方波的時間了。3.關於特殊引腳,就是一個復用的腳,可以作為一般IO口,也可以作為捕獲信號入口,就像msp430F449中P2.0還可以作為定時器A,CCR2的信號捕獲口。4.如果你要測的信號頻率太低還需要一個溢出中斷,溢出的話就是一個62256,最後溢出了幾個就加上幾個62256即可。
3. 如何寫一個單片機輸入上升沿和下降沿的脈沖輸出信號的c語言程序
如果是循環中查詢的話我一般這樣做, 定義一個變數比如keyLastStatus來記錄上一次掃描周期的狀態
sbit key=P2.0; char keyLastStatus=0;
keyLastStatus=key; //初始化
while (1)
{
if(key==0 && keyLastStatus!=key) Todo(); //上升沿
if(key==1 && keyLastStatus!=key) Todo(); //下降沿
keyLastStatus=key; //記錄上一次的狀態
}
4. 用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);
//在此應用
}
}
(4)單片機下降沿擴展閱讀:
直接使用肢猛匯編指令編寫單片機程序,對硬體的控制更加直接,可以直接操作物理地址,寄存器,埠等;歷坦橋其它更高級的語言(如:C語言)對硬體的控制是依賴於類庫來實現的。並且,對於一些對程序大小和運行速度有非常嚴苛要求的項目而言,都必須使用匯編指令。
C語言只是為了方便編寫,與機器打交道的信山其實都是2進製得代碼,匯編語言就是這些代碼好記憶的名稱和規則,只是比C語言難理解些。