① 怎麼用檢測stm32引腳輸入信號的上升沿,不用中斷,我是菜鳥,最好給出C程序
#define PB8 GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_8) //讀取PB8鍵渣慶
//初始化
GPIO_InitTypeDef GPIO_InitStructure;
//PB8按鍵,下拉輸入
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN; //模式為輸入
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_DOWN; //下拉
GPIO_Init(GPIOB, &GPIO_InitStructure);//
//按沖滲鍵掃描
//PB8鍵
if(PB8==1)
{
Delay_nms(10);
if(PB8==1)
while(PB8==1);
return '散梁脊1';
}
② 51單片機中,測兩個上升沿(外部信號)之間的時間差c程序應該則樣寫。
看您的問題好像是硬體已經設計好了,而且待測I/O不是接在塵喚同一個口上而且不是外部中斷口?那就只能用查詢方式了,不斷的查詢口狀態,只要有變化(上升穗罩沿是0變1,反之下降沿)就打開定時器,再次變化關閉定時器,讀數據就行了,這樣應該會有誤差,但是比較小而且固定,看你的需要自己處理。 比如你要查詢P10和P11兩個腳上的上升沿時間差,假設P10先來,且猜兄鬧正常情況下都是低電平。
void main()
{
unsigned int a;
init();//各種初始化,自己寫。P10 P11要SBIT下。
while(!P10);//低電平的時候死循環,變高就說明上升沿來到,接著往下運行
startTimer0();//打開定時器,初始化和子函數自己寫。
while(!P11);//如法炮製
stopTimer0();//停止定時器。
a=getTimer0();//讀數,自己寫。
.......//其他代碼。
}
我就是這么寫寫,給你提供參考,具體我肯定沒試過,而且這程序也不是特別實用。有錯誤自己改一下吧。這東西你要想學好就自己想。
③ c語言做上升沿怎麼做
這有何難:
int f(int t) { return t>0?1:0; }
就形成一個階梯函數,0時刻開始為1,之前為0;
int p(int t) { return t==0?1:0; }
就形成一個脈沖函數,0時刻為1,其他時刻為0;
④ 上升沿和下降沿結合c語言怎麼編寫程序呀!隨便舉個例子就可以的!
設置一個變數為標志
比如flag=0
當flag=1的時候就是上升沿了
⑤ 請按照如下下降沿/上升沿觸發時序圖寫一段C語言程序
電子的課程我幾乎全忘了,我翻了翻書,我當初學51單片機串口通信,用的是匯編。
我當初用C語言寫51單片機代碼的時候,編譯變成機器代碼,但是keil編輯器可以把機器代碼轉成助記符,就是匯編。我看了之後發現一條C語言代碼會翻譯成多條匯編,如果是循環,翻譯成匯編就會更復雜,所以用C語言寫51單片機代碼,代碼運行時間會更長,時間不能自己掌握,因為我不知道翻譯成多少條匯編了。所以51單片機還是要用匯編寫比較好。
我也不知道為什麼你會直接用C語言寫時序圖,我只是覺得用匯編會簡單點。
⑥ 求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);
//在此應用
}
}
⑦ 單片機C語言怎麼判斷上升沿觸發
用一個外部中斷,把B=B+1寫在中斷處理函數中就行了。
⑧ 單片機中一個I/O信號的上升沿或下降沿在單片機中C語言怎麼寫,不用中斷
不用中斷只能用查詢了。
你只能寫一個while循環,然後時刻判斷IO電平。
上一次循環是低電平,下次變成高電平了,就可以判斷來了一個上升沿。
注意信號上升時間和你的單片機時鍾周期的關系,也就是說,信號上升沿要小於你查詢兩次所用的時間。如果信號你不能改變,那麼你就需要紀錄多次查詢的結果,這樣能識別比較慢的沿。
⑨ c語言怎麼判斷一個數由0變成1
就是判斷變數出現上升沿的變化。
變數是a,a可以是0x00,也可以是0x01.a.Lst是a原來的值,a.Now是現在的值,那麼春春怎猜森肢么判斷他上生沿了呢?result=((-a.Lst)&a.Now)。如果result=1,則可以判斷a是從0變成了1。你可以看,如果a原來是1,則result肯定是0。
C語言是一門穗世面向過程的、抽象化的通用程序設計語言,廣泛應用於底層開發。
⑩ 如何寫一個單片機輸入上升沿和下降沿的脈沖輸出信號的c語言程序
這個簡單,從低到高就是上升輸出,重高到低就是下降輸出
#include<reg51.h>
sbit pluse=P1^0;
main()
{
int i;
while(1)
{
pluse=0; //此時為下降輸出
i=100;
while(i--);
pluse=1; //此時為上升輸出
i=100;
while(i--);
}
}