不要把中斷看作萬能膠,在主函數內很容易實現此功能。
無標題.jpg (150.31 KB, 下載次數: 20)
下載附件
2022-4-28 20:54 上傳
- #include <REG51.H>
- sbit W1=P2^0;//十位
- sbit W2=P2^1;//個位
- sbit S1=P2^2;//++
- sbit S2=P2^3;//--
- sbit S3=P2^4;//清0
- unsigned char code table[]={//共陰數碼管段碼"0~f-."
- 0x3f,0x06,0x5b,0x4f,
- 0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,
- 0x39,0x5e,0x79,0x71,0x40,0x80};
- void Delay(unsigned t)
- {
- unsigned i,j;
- for(i=t;i>0;i--)
- for(j=120;j>0;j--);
- }
- void main()
- {
- unsigned char num=0;
- unsigned char count=0;
- bit sign=0;
- bit flag=0;
- while(1)
- {
- if(!S1||!S2||!S3)
- {
- if(++count>=10 && sign==0)
- {
- sign=1;
- if(!S1){if(num<99)num++;}
- if(!S2){if(num>0)num--;}
- if(!S3)num=0;
- }
- }
- else{count=0;sign=0;}
- if(flag)
- {
- W1=1;W2=1;
- P0=table[num/10];
- W1=0;W2=1;flag=0;
- }
- else
- {
- W1=1;W2=1;
- P0=table[num%10];
- W1=1;W2=0;flag=1;
- }
- Delay(1);
- }
- }
復制代碼
|