|
1黑幣
本帖最后由 天涯仗劍 于 2021-2-3 16:07 編輯
- #include<reg51.h>
- typedef unsigned char u8;
- typedef unsigned int u16;
- u8 smgduan[16]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07,
- 0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71};// 段選
- sbit LSA=P2^2;
- sbit LSB=P2^3;
- sbit LSC=P2^4;
- u16 second,minute,hour;
- void tim0init()//定時器0初始化
- {
- TMOD=0X01; //t0 方式1
- TH0=0Xfc;
- TL0=0X18;//定時1ms
- TR0=1; //打開t0定時器
- EA=1;
- ET0=1;
- }
- void delay(u8 i)
- {
- while(i--);
- }
- void display()
- {
- u16 i;
- for(i=0;i<8;i++)
- {
- switch(i)
- {
- case 0:LSA=0;LSB=0;LSC=0;P0=smgduan[second%10];break; //
- case 1:LSA=1;LSB=0;LSC=0;P0=smgduan[second/10];break; //
- case 2:LSA=0;LSB=1;LSC=0;P0=0x80;break; //
- case 3:LSA=1;LSB=1;LSC=0;P0=smgduan[minute%10];break; //
- case 4:LSA=0;LSB=0;LSC=1;P0=smgduan[minute/10];break; //
- case 5:LSA=1;LSB=0;LSC=1;P0=0x80;break; //
- case 6:LSA=0;LSB=1;LSC=1;P0=smgduan[hour%10];break; //
- case 7:LSA=1;LSB=1;LSC=1;P0=smgduan[hour/10];break; //
- default: break;
- }
- //P0=smgduan[i];
- delay(100);
- P0=0x00;
- }
- }
- void main()
- {
- tim0init();
- while(1)
- {
- display();
- }
- }
- void tim0() interrupt 3
- {
- u8 sum;
- if(TF0==1)
- {
- TF0=0;
- sum++;
- TH0=0xfc;
- TL0=0x18;
- }
- if(sum==1000)
- {
- sum=0;
- second++;
-
- if(second==60)
- {
- second=0;
- minute++;
- }
- if(minute==60)
- {
- minute=0;
- hour++;
- }
- if(hour==24)
- {
- second=0;
- minute=0;
- hour=0;
- }
-
- }
- }
復(fù)制代碼 |
最佳答案
查看完整內(nèi)容
void tim0() interrupt 1
{
static u16 sum;
sum++;
TH0=0xfc;
TL0=0x18;
if(sum==1000)
{
sum=0;
second++;
if(second==60)
{
second=0;
minute++;
}
if(minute==60)
{
minute=0;
hour++;
}
if ...
|