看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) 8051 (C) 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 按下按鈕 有時候有反應 有時候沒有 餵入的資料(Input): 按下按鈕 預期的正確結果(Expected Output): 四位數七段+1 0000~99999 錯誤結果(Wrong Output): 有時有+1有時沒有 程式碼(Code):(請善用置底文網頁, 記得排版) https://gist.github.com/okok897/85538583c8a3977323bb #include <reg51.h> //8051接腳定義。 #define seg7 P1 #define segs P2 #define PB P0 //按鈕 void scanner(int); void delay(int); int i; int flag; unsigned char j; char seg[10]={0xc0,0xf9,0xa4,0xb0,0x99, //七段的字形 0x92,0x82,0xf8,0x80,0x90}; main() { PB=1; flag=0; i=0; while(1) { scanner(i); if (PB==0){ delay(10); while(PB){ delay(20); i++; scanner(i); break; } } } } void scanner(int num){ segs=0x07; //千位數掃描信號。 seg7=seg[(num/100)/10]; //顯示千位數字。 delay(2); segs=0x0b; //百位數掃描信號。 seg7=seg[(num/100)%10]; //顯示百位數字。 delay(2); segs=0x0d; //十位數掃描信號。 seg7=seg[(num%100)/10]; //顯示十位數字。 delay(2); segs=0x0e; //個位數掃描信號。 seg7=seg[(num%100)%10]; //顯示個位數字。 delay(2); } void delay(int t){ int i,j; for(i=0;i<t;i++) for(j=0;j<120;j++); } 補充說明(Supplement): 請教如何改良程式 不知道問題是不是出在防彈跳或是 七段顯示的delay時 按鈕放開但是在delay所以沒反應? 我覺得我的程式有點像是在硬幹.... 這是我第一次在ptt發文 (Y) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.128.156.248 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1434176865.A.4BB.html
longlongint: while接break 跟if相比有優點嗎 06/13 17:49
longlongint: pb=0的 delay拿掉 06/13 17:51
longlongint: 然後我個人會用clock判斷時間 不用delay 06/13 17:52
longlongint: 如果想取消連按 偵測0->1的變化 06/13 17:53
dysyase: 中間跳出做處理!這個功能我最愛用~ 06/16 14:34