⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 time.txt

📁 独立模块通过到单片机控制
💻 TXT
字号:
#include <REG51.H>
//#include <AT89X51.H>
#define uint unsigned
#define  TIMER0_COUNT 0xEE18 
#define  TRUE 1
#define  FALSE 0
#define  TIMES 25
#define  DISPLAY  0
#define SET  1
sbit  P3_0  = P3^4;
sbit  P3_1  = P3^5;
sbit  P1_7  = P1^7;
const seven_seg[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
const scan[4]={0x0E,0x0D,0x0B,0x07};
typedef struct{
    char hour;
    char minute;
    char second;
}time;
unsigned char timer0_tick,i=0,keyA=0,keyB=0,mode=0;
time now;
static void timer0_isr(void) interrupt 1 using 1
{
    TR0=0;
    TL0=(TIMER0_COUNT&0x00FF);
    TH0=(TIMER0_COUNT>>8);
    TR0=1;
    if(keyA!=0){
        keyA--;
        if(keyA==0&&P3_0==0){
            mode++;
            if(mode==2) mode=0;     
        }
    }else if(P3_0==0)  keyA=TIMES;
    if(keyB!=0){
        keyB--;
        if(keyB==0&&P3_1==0){
            now.minute++;
            if(now.minute==60){now.hour++;
                now.minute=0;
                if(now.hour==24) now.hour=0;
            }
        }
    }else if(P3_1==0)  keyB=TIMES;
    timer0_tick++;
    if(timer0_tick==200){
        timer0_tick=0; 
        now.second++;
        if(now.second==60){now.minute++;
            now.second=0;
            if(now.minute==60){
                now.hour++;
                now.minute=0;
                if(now.hour==24) now.hour=0; 
            }
        }
}
switch (mode){
case DISPLAY:
        switch(i){
            case 0: P1=seven_seg[now.minute%10];
                    P1_7=(now.second%2);
                    break;
    	    case 1:  P1=seven_seg[now.minute/10];
                    break;
            case 2: P1=seven_seg[now.hour%10];
                    P1_7=0;
		            break;
	        case 3:  P1=seven_seg[now.hour/10];
                    break;
        } break;
case SET:
        switch(i){
            case 0: if(now.second%2)P1=seven_seg[now.minute%10];
                    else P1=0xFF;
                    break;
    	    case 1: if(now.second%2)P1=seven_seg[now.minute/10]; 
 	            else P1=0xFF;
                    break;
            case 2: if(now.second%2)P1=seven_seg[now.hour%10];
                    else P1=0xFF;
		    break;
	    case 3: if(now.second%2) P1=seven_seg[now.hour/10];
                    else P1=0xFF;
                    break;
        }
        break; 
 }
 P0=scan[i];
 i++;
 if(i==4) i=0;
}
static void timer0_initialize(void)
{
  EA=0;
  timer0_tick=0;
  TR0=0;
  TMOD &=0xf0;
  TMOD |=0x01;
  TL0=(TIMER0_COUNT & 0x00FF);
  TH0=(TIMER0_COUNT >>8);
  PT0=0;
  ET0=1;
  TR0=1;
  EA=1;
}
void main (void)
{
  timer0_initialize();
  while(1);
}










⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -