![]() |
發布時間: 2020-3-14 11:18
正文摘要:while((p3.6=0)&&((time++)<500)) 這個while停在這里判斷 兩個條件 , 匯編中如果jnb p3.6 $這個就停在這里了,沒辦法加時間判斷。(C中也沒 ... |
Y_G_G 發表于 2020-3-18 21:05 你好 搞明白了,重新弄了一個 看清楚思路了 。 謝謝 |
time++; if((key==0)&&(time>40)); //如果按鍵時間超過2秒且鍵未釋放,變量+1 if(key==1)time=0; //如果鍵釋放,時間復位 你這個是進入中斷之后,變量就先+1 后一個語句沒有作用,條件成不成立都是執行下一條語句的 不要在函數外面聲明變量,這樣編譯器會生成一大堆無用的匯編代碼出來的 |
因為C每個人的寫法不一樣(自己感覺看起來沒有匯編的好,具有統一性) 所以想學匯編。 而被這個卡住了 沒有明白是這個語句用匯編是怎么寫的 所以請教大神幫解答下。 |
Y_G_G 發表于 2020-3-17 13:55 你好幫看下謝謝 #include<reg51.h> #define uint unsigned int #define uchar unsigned char uint v=0,time=0; sbit key=P1^0; void t0isr() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; time++; if((key==0)&&(time>40)); //如果按鍵時間超過2秒且鍵未釋放,變量+1 if(key==1)time=0; //如果鍵釋放,時間復位 } main() { TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; ET0=1; EA=1; while(1); } |
比較90.0(應該是p3.6引腳不為0)跳轉到00B3行,即下面3行處,不進行time清零操作 |
這樣我看不明白,你把C文件上傳,我試一下 |
Y_G_G 發表于 2020-3-14 15:30 好的 試一下看看 謝謝 |
只要你的程序可以正常編譯,在KEIL仿真一下,會有相應的匯編代碼給你看的 |
while((p3.6==0)&&((time++)<500)) |