![]() |
發布時間: 2021-12-14 15:29
正文摘要:單片機源程序如下: #include<reg51.h> #define uchar unsigned char sbit start=P1^1; sbit stop=P1^0; uchar code dulatab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40} ;//數字編碼0-9 ... |
天ノ憶 發表于 2021-12-17 14:01 哈哈哈 |
你真應該感謝這些替你找到錯誤的人,畢竟你這代碼我看一眼就不想看了,他們忍著吃%一樣的惡心給你找錯誤挺不容易的 |
第55行的if跑到keyscan外了 |
連縮進都不愿意,出這種錯誤就是活該。
|
#include<reg51.h> #define uchar unsigned char sbit start=P1^1; sbit stop=P1^0; uchar code dulatab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40} ;//數字編碼0-9 uchar code welatab[]={0xfe, 0xfd} ;//位控制字 uchar msec, sec; void delay(uchar time)// 延時 { uchar i, j; for (i=0;i<time;i++) for (i=0;j<110;j++); } void writeled(uchar num ,addr) { P2=0xff; P0=dulatab[num]; P2=welatab[addr]; delay(4); } void display(uchar sec) { uchar sech,secl ; sech=sec/10; secl=sec%10; writeled(sech,0); writeled(secl,1) ; } void init () { TMOD=0x10;//定時器1工作方式1 TH1=0xd8; TL1=0xf0; TR1=1; EA=1; ET1=1; } void keyscan() { if(start==0) { delay(2) ; if(start==0) { TR1=~TR1; while(start==0) { display(sec); } } } if(stop==0&&TR1==0) { delay(2);//延時方抖 if(stop==0) { sec=0; while(stop==0) { display(sec); } } } } void main() { init(); while(1) { display(sec); keyscan(); } } void timer1() interrupt 3 { TH1=0xd8; TL1=0xf0; msec++; if(msec==100) { msec=0; sec++; if(sec==100) { sec=0; } } } |
第55行改成if((stop==0)&&(TR1==0))試試。 |