你這是郭天祥的示例改的,其原程序本身就有缺陷。給你改了,你試試。對比一下就明白問題在哪里。樓上講的都不在重點上。
- #include"reg51.h"
- #define uint unsigned int
- #define uchar unsigned char
- sbit wela=P2^7;
- sbit dula=P2^6;
- uint num,num1,shi,ge;
- uchar code table[]={
- 0x3f,0x06,0x5b,0x4f,
- 0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,
- 0x39,0x5e,0x79,0x71};
- bit flag=0;
- void delay(uint z)
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
- void main()
- {
- while(1)
- {
- P0=0x00;//消隱
- dula=1;
- dula=0;
- if(!flag)
- {
- P0=0xfe;
- wela=1;
- wela=0;
- P0=table[shi];
- dula=1;
- dula=0;
- flag=1;
- }
- else
- {
- P0=0xfd;
- wela=1;
- wela=0;
- P0=table[ge];
- dula=1;
- dula=0;
- flag=0;
- }
- delay(1);
- num++;
- if(num>=1000)
- {
- num=0;
- num1++;
- if(num1>=100)
- num1=0;
- }
- shi=num1/10;
- ge=num1%10;
- }
- }
復制代碼 |