C语言数字时钟设计
#include
#include
#define uchar unsigned char
#define PA XBYTE[0x0fefc]
#define PB XBYTE[0x0fefd]
#define PC XBYTE[0x0fefe]
#define CTL XBYTE[0x0feff]
code unsigned char pan[]={0x0e7,10,0x0eb,3,0x0ed,2,0x0ee,1, //键盘
0x0d7,11,0x0db,6,0x0dd,5,0x0de,4,
0x0b7,12,0x0bb,9,0x0bd,8,0x0be,7,
0x77,13,0x7b,14,0x7d,0,0x7e,15};
unsigned char buf[]={0,0,0,0,0,0,0,0},now,old=0xff;
code char led[]={0x0c0,0x0f9,0x0a4,0x0b0, 0x99,0x92,0x82,0x0f8,0x80,0x90,0x0bf,
0x40,0x79,0x24,0x30, 0x19,0x12,0x02,0x078,0x00,0x10,0x88,0x0c8,0x8e};//字段码0~9,-,0.~9.,n,f
char time[8]={0,0,0,0,0,0,0,0}; //用于放时间
char date[8]={0,0,0,0,0,0,0,0}; //用于放日期
int show_state;
code int MAX=150;//用于设置时,无键按下的最多时间
unsigned char clock_hour=6,clock_minute=30;//设置闹钟的时间
char ms50,mx50,hour=5,minute=59,second=55;
int year=2008;
unsigned char month=10,day=1
;
// XXXXXXXXXXXXXXXX延时1毫秒XXXXXXXXXXXXXXXX //
void delay(void)
{uchar m;
for(m=0;m<150;m++);
}
//XXXXXXXXXXXXXXXX LED显示子程序1 XXXXXXXXXXXXXXXXX //
void scan1()
{
unsigned char m,tc=0x80;
int j;
for(m=0;m<8;m++)
{
PA=0x00;
PB=tc; tc>>=1;
for(j=0;j<1000;j++) delay();
PB=0x00;
for(j=0;j<100;j++) delay();
}
}
//XXXXXXXXXXX LED显示 XXXXXXXXXXX//
void scan2(unsigned char x[],char a) {unsigned char m,tb,tc=0x80;
for(m=0;m<8;m++)
{
tb=x[m];
PA=led[tb];
if(m==a)
{
PB=0x00;//灭
}
else
{PB=tc;}//亮
tc>>=1;
delay();
}
}
void time1() //时间存放数组
{
time[7]=second%10;
time[6]=second/10;
time[5]=10;
time[4]=minute%10;
time[3]=minute/10;
time[2]=10;
time[1]=hour%10;
time[0]=hour/10;
}
void date1() //日期存放数组
{
date[7]=day%10;
date[6]=day/10;
date[5]=month%10+11;
date[4]=month/10;
date[3]=year%10+11;
date[2]=year%100/10;
date[1]=year%1000/100;
date[0]=year/1000;
}
//XXXXXXXXXXXX 判