#include<reg52h>
#define uint unsigned int
#define uchar unsigned char
sbit QB1=P1^0;
sbit QB2=P1^1; //数码管段选
sbit QB3=P1^2;
sbit QB4=P1^3;
sbit QB5=P1^4;
sbit QB6=P1^5;
sbit fm=P1^6; //蜂鸣器
sbit s1=P2^4; //s5按键,切换显示
sbit s2=P2^3; //s2按键,设置调时
sbit s3=P2^2; //s3按键,加1
sbit s4=P2^1; //s4按键,减1
sbit led1=P0^0;
sbit led2=P0^1;
sbit led3=P0^2;
uchar count;
uchar sec,minu,hour,day,week,mon;
uchar n_sec,n_minu,n_hour;
uint year;
uchar set_2=1,set_1=1;
uchar hs,hg,mis,mig,ss,sg;
uchar nhs,nhg,nms,nmg,nss=0,nsg=0;
uchar ms,mg,ds,dg,w;
uchar code table[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,
0X90,0X88,0X83,0XC6,0XA1,0X8E,0X86,0xbf}; //0~F,-,共阳
//uchar code tableyi[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
//0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40};//0-F,-,共阴
uchar code table_d[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,
0x87,0xff,0xef}; //0~9数组,带小数点
uchar table1[]={31,31,29,31,30,31,30,31,31,30,31,30,31}; //闰年
uchar table2[]={31,31,28,31,30,31,30,31,31,30,31,30,31}; //非闰年
void delay(uint); //延时函数
void timer0(); //走时中断函数
void jishi(); //计时函数
void key_change(); //切换显示按键函数
void key_set(); //设置时间按键函数
void disp(uchar,uchar,uchar,uchar,uchar,uchar); //显示函数
void zd_clock(); //整点报时函数
void nz_clock(); //闹钟函数
uchar incone(uchar); //加1函数
uchar decone(uchar); //减1函数
void set_time(); //设置时间函数
void set_clock(); //设置闹钟函数
void set_mdw(); //设置月日星期函数
void main() //主函数
{
EA=1;
ET0=1;
TR0=1;
TMOD=0x01;
TH0=0x4c; //50ms初值 晶振110592
TL0=0x00;
hour=23;minu=59;sec=49; //赋初值:11点59分0秒
n_hour=12;n_minu=56;n_sec=0; //闹钟赋初值12点1分0秒
year=2008;mon=5;day=14;week=3;//年月日星期赋初值2008年5月11日星期天;祝天下所有母亲节日快乐
while(1)
{
hs=hour/10; //时分秒HHMMSS
hg=hour%10;
mis=minu/10;
mig=minu%10;
ss=sec/10;
sg=sec%10;
ms=mon/10; //月日-星期MMDD-W
mg=mon%10;
ds=day/10;
dg=day%10;
w=week;
nhs=n_hour/10; //闹钟定时HHMMSS
nhg=n_hour%10;
nms=n_minu/10;
nmg=n_minu%10;
nss=n_sec/10;
nsg=n_sec%10;
key_change(); //s4按键扫描
key_set(); //s2按键扫描
set_time(); //设置时间
set_mdw(); //设置月日星期
set_clock(); //设置闹钟
if(set_1==1) //正常走时显示
{
disp(hs,hg,mis,mig,ss,sg);
}
if(set_1==2) //设置时间,LED1闪亮
{
disp(hs,hg,mis,mig,ss,sg);
if(sec%2==0)
{led2=1;led3=1;led1=~led1;}
// else
// {led1=1;}
}
if(set_1==3) //正常显示月日-星期
{
disp(ms,mg,ds,dg,16,w);
}
if(set_1==4) //设置月日-星期,LED2闪亮
{
disp(ms,mg,ds,dg,16,w);
if(sec%2==0)
{led1=1;led3=1;led2=~led2;}
// else
// {led2=1;}
}
if(set_1==5) //正常显示定时
{
disp(nhs,nhg,nms,nmg,nss,nsg);
}
if(set_1==6) //设置闹钟定时,LED3闪亮
{
disp(nhs,nhg,nms,nmg,nss,nsg);
if(sec%2==0)
{led1=1;led2=1;led3=~led3;}
// else
// {led3=1;}
}
zd_clock(); //整点报时
nz_clock(); //闹钟
}
}
void timer0() interrupt 1 //50ms中断函数
{
TMOD=0x01;
TH0=0x4c; //50ms初值 晶振110592
TL0=0x00;
count++;
if(count==20)
{
count=0;
sec++;
jishi(); //调计时函数
}
}
void jishi() //计时函数
{
if(sec==60)
{
sec=0;
minu++;
if(minu==60)
{
minu=0;
hour++;
if(hour==24)
{ hour=0;
day++;
week++;
if(week==8)
{week=0;}
if(year%4==0&&year%100!=0||year%400==0) //闰年
{
if(day==table1[mon]+1)
{
day=0;
mon++;
if(mon==13)
{mon=0;year++;}
}
}
else //非闰年
{
if(day==table2[mon]+1)
{
day=0;
mon++;
if(mon==13)
{mon=0;year++;}
}
}
}
}
}
}
void key_change() //s1按键扫描
{
if(s1==0)
{
delay(200);
if(s1==0)
{
set_1++;
while(!s1);
if(set_1==7)
{set_1=1;}
}
}
}
void key_set() //s2按键扫描
{
if(s2==0)
{
delay(10);
if(s2==0)
{
set_2++;
while(!s2);
if(set_2==4)
{set_2=1;}
}
}
}
void disp(uchar a1,uchar a2,uchar a3,uchar a4,uchar a5,uchar a6) //显示函数
{
QB1=1;
QB2=0;
QB3=0;
QB4=0;
QB5=0;
QB6=0;
P3=table[a1]; //段码送P0口
delay(10); //延时一小会
QB1=0;
QB2=1;
QB3=0;
QB4=0;
QB5=0;
QB6=0;
P3=table[a2]; //第2个数码管显示,带小数点
delay(10);
QB1=0;
QB2=0;
QB3=1;
QB4=0;
QB5=0;
QB6=0;
P3=table[a3]; //第3个数码管显示
delay(10);
QB1=0;
QB2=0;
QB3=0;
QB4=1;
QB5=0;
QB6=0;
P3=table[a4]; //第4个数码管显示,带小数点
delay(10);
QB1=0;
QB2=0;
QB3=0;
QB4=0;
QB5=1;
QB6=0;
//第5个数码管显示
P3=table[a5];
delay(10);
QB1=0;
QB2=0;
QB3=0;
QB4=0;
QB5=0;
QB6=1;
P3=table[a6]; //第6个数码管显示
delay(10);
QB1=0;
QB2=0;
QB3=0;
QB4=0;
QB5=0;
QB6=0;
}
void zd_clock() //整点报时函数
{
if(minu==59&&(sec==53||sec==55||sec==57))
{
fm=0;
delay(5);
fm=1;
delay(5);
}
fm=0;
if(minu==59&&sec==59)
{
fm=0;
delay(5);
fm=1;
delay(5);
fm=0;
}
}
void nz_clock() //闹钟函数
{
if(hour==n_hour&&minu==n_minu&&sec==n_sec)
//if((sec%2==0)&&sec<30)
{
fm=0;
delay(1);
fm=1;
delay(1);
}
}
void set_time() //设置时间函数
{
if(set_1==2)
{
if(set_2==1)
{
hour=incone(hour);
if(hour==24)
{hour=0;}
// if(hour<0)
// {hour=23;}
hour=decone(hour);
}
if(set_2==2)
{
minu=incone(minu);
if(minu==60)
{minu=0;}
// if(minu<0)
// {minu=59;}
minu=decone(minu);
}
}
}
void set_mdw() //设置月日星期函数
{
if(set_1==4)
{
if(set_2==1)
{
mon=incone(mon);
if(mon==13)
{mon=1;}
mon=decone(mon);
// if(mon==0)
// {mon=12;}
}
if(set_2==2)
{
day=incone(day);
if(day==32)
{day=0;}
day=decone(day);
// if(day==0)
// {day=0;}
}
if(set_2==3)
{
week=incone(week);
if(week==8)
{week=0;}
week=decone(week);
// if(week==0)
// {week=7;}
}
}
}
void set_clock() //设置闹钟函数
{
if(set_1==6)
{
if(set_2==1)
{
n_hour=incone(n_hour);
if(n_hour==24)
{n_hour=0;}
n_hour=decone(n_hour);
if(n_hour==0)
{n_hour=0;}
}
if(set_2==2)
{
n_minu=incone(n_minu);
if(n_minu==60)
{n_minu=0;}
n_minu=decone(n_minu);
if(n_minu==0)
{n_minu=0;}
}
}
}
uchar incone(uchar n) //加1函数
{
if(s3==0)
{ delay(200);
if(s3==0)
{
n++;
while(!s3);
}
}
return(n);
}
uchar decone(uchar m) //减1函数
{
if(s4==0)
{
delay(200);
if(s4==0)
{
m--;
while(!s4);
if(m<0)
{m=0;}
}
}
return(m);
}
void delay(uint k) //延时函数
{
uint i,j;
for(i=k;i>0;i--)
for(j=80;j>0;j--);
}
我给你一个保证好用的,KEY_COM调模式,按一下进入调时 ,在按一下调分,再按一下退出调时模式,这时加减按键都无效,在调时模式时会产生闪烁方式,这段程序是我自己想的办法实现的,可能有点笨拙,但效果很好,我建议你用DS1302做时钟,用单片机计数器由于晶振等原因会有很大的误差,实际中没有用直接用单片机做的,希望对你有帮助。
(段选和位选接的都是8位的D触发器,如果你的开发板电路结构有区别,改一下显示部分的程序就行了)
#include<reg51h>
#define uchar unsigned char
sbit duan=P0^0;
sbit wei=P0^1;
sbit KEY_ADD=P3^3;
sbit KEY_DEC=P3^4;
sbit KEY_COM=P3^5;
uchar code a[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40, 0x00 };
char hour=0,minute=0,second=0,i=0,flag=0;
unsigned char t=0,t1=0,t2=0,t3=0;
unsigned int count=0;
void delays()//10ms延时子程序
{unsigned char i,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
void start()
{
TMOD=0x01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
ET0=1;
EA=1;
TR0=1;
}
void main()
{
start();
KEY_ADD=1;
KEY_DEC=1;
KEY_COM=1;
while(1){
if(!KEY_COM)
{
delays();
if(!KEY_COM)
{while(!KEY_COM);
flag++;if(flag==3)flag=0;
}
}
if(!KEY_ADD)
{
delays();
if(!KEY_ADD)
{
while(!KEY_ADD);
if(flag==1)
{hour++;if(hour==24)hour=0;}
if (flag==2)
{minute++;if(minute==60)minute=0;}
}
}
if(!KEY_DEC)
{
delays();
if(!KEY_DEC)
{while(!KEY_DEC);
if(flag==1)
{hour--;if(hour<0)hour=23;}
if(flag==2)
{minute--;if(minute<0)minute=59;}
}
}
}
}
void t0() interrupt 1
{
TH0=(65536-2000)/256;
TL0=(65536-2000)%256;
count++;
switch(i)
{case 0: {if(flag==1){t++;if(t==60)t=0; if(t<30) {P1=a[hour/10];duan=1;duan=0;P1=~0x01;wei=1;wei=0;}
else {P1=0x00;duan=1;duan=0;P1=~0x01;wei=1;wei=0;} } else {P1=a[hour/10];duan=1;duan=0;P1=~0x01;wei=1;wei=0;} } break;
case 1: {if(flag==1) {t1++;if(t1==60)t1=0; if(t1<30) {P1=a[hour%10];duan=1;duan=0;P1=~0x02;wei=1;wei=0;}
else {P1=0x00;duan=1;duan=0;P1=~0x01;wei=1;wei=0;} } else {P1=a[hour%10];duan=1;duan=0;P1=~0x02;wei=1;wei=0;} } break;
case 2:{P1=0x40;duan=1;duan=0;P1=~0x04;wei=1;wei=0;}break;
case 3: {if(flag==2) {t2++;if(t2==60)t2=0; if(t2<30) {P1=a[minute/10];duan=1;duan=0;P1=~0x08;wei=1;wei=0;}
else {P1=0x00;duan=1;duan=0;P1=~0x01;wei=1;wei=0;} } else {P1=a[minute/10];duan=1;duan=0;P1=~0x08;wei=1;wei=0;} } break;
case 4: {if(flag==2) {t3++;if(t3==60)t3=0; if(t3<30) {P1=a[minute%10];duan=1;duan=0;P1=~0x10;wei=1;wei=0;}
else {P1=0x00;duan=1;duan=0;P1=~0x01;wei=1;wei=0;} } else {P1=a[minute%10];duan=1;duan=0;P1=~0x10;wei=1;wei=0;} } break;
case 5:{P1=0x40;duan=1;duan=0;P1=~0x20;wei=1;wei=0;}break;
case 6:{P1=a[second/10];duan=1;duan=0;P1=~0x40;wei=1;wei=0;}break;
case 7:{P1=a[second%10];duan=1;duan=0;P1=~0x80;wei=1;wei=0;}break;
}
i++;
if(i==8)i=0;
if(count==500)
{count=0;
second++;
if(second==60)
{second=0;
minute++;
if(minute==60)
{minute=0;
hour++;
if(hour==24)
{
hour=0;
}
}
}
}
}
#include<reg51h>
#define uchar unsigned char //unsigned char用uchar代替
#define uint unsigned int //同上
#define delay_time 3/宏定义/ // delay_time =3
uchar k,dat[]={0,0,0,0,0,0,0,0};
uint tcount,t,u;
uchar dat1[]={0,0,0,0,0,0,2,1};
uchar dat2[]={0,0,0,0,0,0,0,0};
uchar alarms[]={0,0,0,0,0,0,0,0};
uchar dis_bit[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
unsigned char code SEG7[11]={0xC0,/0/ //共阳极数码管的显示
0xF9,/1/
0xA4,/2/
0xB0,/3/
0x99,/4/
0x92,/5/
0x82,/6/
0xF8,/7/
0x80,/8/
0x90,/9/
0xBF,/-/ };/数字显示数组/
sbit miaobiao1=P1^0;//根据仿真实现是端口定义
sbit thour=P1^1;
sbit tminute=P1^2;
sbit xianshi=P1^3;
sbit alarm=P1^4;
sbit pause=P1^5;/端口定义/
uchar ms=0;
uchar flag=0;
uchar sec=0;
uchar minit=0;
struct time{uchar second;uchar minute;uchar hour;}time1;
uchar n,i;
void delay(n)
{while(n--)
{ for(i=120;i>0;i--); }
}/延时子程序/
void modify(void) //flag是标志位 其值不同时处理不同的事情
{
EA=0;//关总中断
if(thour==0)
{
if(flag==0)
{
dat1[6]++;delay(280);//小时的显示 dat1[6] 为低位dat1[7]高位
if(dat1[6]>9) { dat1[6]=0;dat1[7]++;}
else if((dat1[7]>1)&&(dat1[6]>3)){dat1[7]=0; dat1[6]=0;}
}
if(flag==1)
{
alarms[6]++;delay(300);
if(alarms[6]>3&&alarms[7]==2)
{
alarms[6]=0;alarms[7]=0;}
if(alarms[6]>9)
{
alarms[6]=0;alarms[7]++;}
dat[6]=alarms[6];
dat[7]=alarms[7];
}
}
if(tminute==0)
{
if(flag==0)
{
dat1[3]++;delay(280);
if(dat[3]>=9)
{
dat1[4]++;dat1[3]=0;
if(dat1[4]>5) {dat1[4]=0;}
}
time1minute=10dat1[4]+dat1[3];//分钟的显示
}
if(flag==1)
{
alarms[3]++; delay(300);
if(alarms[3]>9)
{
alarms[4]++;alarms[3]=0;
if(alarms[4]>5){alarms[4]=0;}
}
dat[3]=alarms[3];
dat[4]=alarms[4];
}
}
if(miaobiao1==0){TR0=0;ET0=0;TR1=1;ET1=1;}//关定时器T0开定时器T1
if(xianshi==0)
{
TR0=1;ET0=1;TR1=0;ET1=0;//关定时器T1开定时器T0 处理定时器
;} dat2[0]=0;
dat2[1]=0;
dat2[3]=0;
dat2[4]=0;
dat2[6]=0;
dat2[7]=0;
ms=0;
sec=0;
minit=0;
}
if(pause==0){TR0=0;ET0=0;TR1=0;ET1=0;}//按下此键后 关闭定时器T0 T1
if(alarm==0)//这个键表示初始化状态
{
TR0=0;ET0=0;TR1=0;ET1=0;flag=1;//处理标志位
dat[0]=0;
dat[1]=0;
dat[2]=10;//表示‘—’
dat[3]=0;
dat[4]=0;
dat[5]=10;
dat[6]=0;
dat[7]=0;
}
EA=1;//开总中断
}/按键扫描/
你这个程序的结构不怎么清楚 就没怎么特别看 下面程序 后面有解释哈 比较清楚你看看 希望会对你有帮助 我现在也在努力学习中
#include<reg51h>
#define uchar unsigned char
#define uint unsigned int
/定义管脚/
sbit RELAY=P1^0;
sbit LED1=P1^1;
sbit LED2=P1^2;
sbit LED3=P1^3;
sbit LED4=P1^4;
sbit LED5=P1^5;
sbit LED6=P1^6;
sbit LED7=P1^7;
sbit Line1=P2^1;
sbit Line2=P2^0;
/定义缓冲区及初始化/
uchar data TimeTab[6]={0x06,0x5b,0x4f,0x66};
uchar data Tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
/定义参数及初始化/
char hour=12,minute=34,second=0;
uchar Keyno=0;
uchar num=0,count=0;
uchar STATE=0;
/
延时子函数
/
void Delay( uint x) //自定义延时约01ms
{
uint t;
while(--x)
for(t=0;t<120;t++)
;
}
//
/ 刷新缓冲区子程序 /
//
void RefreshTab(void)
{
TimeTab[0]=Tab[hour/10];
TimeTab[1]=Tab[hour%10];
TimeTab[2]=Tab[minute/10];
TimeTab[3]=Tab[minute%10];
}
//
/ 按键处理子程序 /
//
void Key_Process(void)
{
switch(STATE)
{
case 0: if(Keyno==1){STATE=1;}
break;
case 1: if(Keyno==2){hour++;if(hour==24)hour=0;}
if(Keyno==3){hour--;if(hour==-1)hour=23;}
if(Keyno==1){STATE=2;}
break;
case 2: if(Keyno==2){minute++;if(minute==60)minute=0;}
if(Keyno==3){minute--;if(minute==-1)minute=59;}
if(Keyno==1){STATE=0;}
break;
default: break;
}
}
//
/ 数码管显示子程序 /
//
void SEG_Display(void)
{
P0=TimeTab[num];
}
//
/ LED显示子程序 如果只是数字钟 这可以不用管 /
//
void LED_Display(void)
{
switch(STATE)
{
case 0: LED2=0;LED3=0;LED4=0;LED5=0;LED6=0;LED7=0;break;
case 1: LED2=1;LED3=0;LED4=0;LED5=0;LED6=0;LED7=0;break;
case 2: LED3=1;LED2=0;LED4=0;LED5=0;LED6=0;LED7=0;break;
default: break;
}
}
//
/ 主程序 /
//
void main(void)
{
P1=0x00;
EA=1;
TMOD |=0x01;//定时器0计时50ms in 12M crystal
TH0=0x3C; //初值
TL0=0xB0;
ET0=1;
TR0=1;
TMOD |=0x10; //定时器1用于动态扫描
TH1=0xFa; //初值
TL1=0xF0;
ET1=1;
TR1=1;
while(1)
{
RefreshTab();
LED_Display();
if(!Line1||!Line2){Delay(200);Key_Process();}
}
}
//
/ 定时器0中断用于计时 /
//
void Timer0(void) interrupt 1
{
TH0=0x3C; //重新赋值50ms溢出
TL0=0xB0;
count++;
if(count==10)
LED1=~LED1;
if (count==20)
{
count=0;
second++; //秒加1
if(second==60)
{
second=0;
minute++; //分加1
if(minute==60)
{
minute=0;
hour++; //时加1
if(hour==24)
{
hour=0;
}
}
}
}
}
//
/ 定时器1中断扫描显示+键值判断 /
//
void Timer1(void) interrupt 3
{
TH1=0xFa; //定时2ms显示下一个数码管
TL1=0xF0;
switch(num)
{
case 0: P2=0x0f;
if(!Line1)Keyno=1;
if(!Line2)Keyno=6;
SEG_Display();
break;
case 1: P2=0x1f;
if(!Line1)Keyno=4;
if(!Line2)Keyno=5;
SEG_Display();
break;
case 2: P2=0x2f;
if(!Line1)Keyno=3;
if(!Line2)Keyno=12;
SEG_Display();
break;
case 3: P2=0x3f;
if(!Line1)Keyno=7;
if(!Line2)Keyno=8;
SEG_Display();
break;
case 4: P2=0x4f;
if(!Line1)Keyno=2;
if(!Line2)Keyno=9;
SEG_Display();
break;
case 5: P2=0x5f;
if(!Line1)Keyno=10;
if(!Line2)Keyno=11;
SEG_Display();
break;
default: break;
}
num++;
if(num==6)
num=0;
}
你所有调用display()和 delay()函数时候都没在后面加个分号。漏了还是???
还有:
uchar code table[]={ //显示编码
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71}
也应该在后面加个分号!!
你的分不好拿啊,该用分号的不用,不该用的地方用了,还有括号你用了很多中文的括号。
现在帮你改了,你自己好好对一下了,反正编译通过了,运行结果你自己看吧,我没你的目标板,运行不了。
#include<reg51h>
#define uchar unsigned char//宏定义
#define uint unsigned int
sbit dula=P2^6; //段控制位
sbit wela=P2^7; //位控制位
uchar miao,fen,aa,n1,n2,n3,n4;
uchar code table[]={ //显示编码
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uint z); //延时程序声明
void init(void);//初始化程序声明
void display(uchar n1 ,uchar n2,uchar n3,uchar n4); //显示程序声明
void main() //主程序
{
init(); //调用初始化程序
while(1) //进入大循环
{
if(aa==20) //判断是否到了1S
{
miao++; //秒数加1
if(miao==60) //判断是否到了60秒
{
miao=0; //秒数清0
fen++; //分数加1
if(fen==60) //判断是否到了60分
{
fen=0; //分数到60则清0
}
n1=fen/10; //第一个数码管显示分的十位
n2=fen%10; //第二个数码管显示分的个位
n3=miao/10; //第三个数码管显示秒的十位
n4=miao%10; //第四个数码管显示秒的个位
}
display(n1,n2,n3,n4);
}
}
}
void delay(uint z) //延时程序
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void display(uchar n1 ,uchar n2,uchar n3,uchar n4)
{
dula=1; //开段选
P0=table[n1]; //送分的十位
dula=0; //关段选
P0=0xff; //消隐
wela=1; //开位选
P0=0xfe; //选通分的十位
wela=0; //关位选
P0=0xff; //消隐
delay(1); //延时
dula=1; //开段选
P0=table[n2]; //送分的个位
dula=0; //关段选
P0=0xff; //消隐
wela=1; //开位选
P0=0xfd; //选通分的个位
wela=0; //关位选
P0=0xff; //消隐
delay(1); //延时
dula=1; //开段选
P0=table[n3]; //送秒的十位
dula=0; //关段选
P0=0xff; //消隐
wela=1; //开位选
P0=0xfb; //选通秒的十位
wela=0; //关位选
P0=0xff; //消隐
delay(1); //延时
dula=1; //开段选
P0=table[n4]; //送秒的个位
dula=0; //关段选
P0=0xff; //消隐
wela=1; //开位选
P0=0xf7; //选通秒的个位
wela=0; //关位选
P0=0xff; //消隐
delay(1); //延时
}
void init(void)
{
}
void timer0(void) interrupt 1 using 1
{
TH0=(65536-50000)/256; //求模
TL0=(65536-50000)%256; //求余
aa++;
}
以上就是关于用C语言编写AT89C51单片机程序,设计一个智能数字钟。全部的内容,包括:用C语言编写AT89C51单片机程序,设计一个智能数字钟。、用单片机写一个C语言程序关于电子时钟,用键盘调制时分秒的加减 第一个键控制模式,第二个为加,第三个减、求高手帮忙注释下51的数字电子钟C语言程序~~~等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)