sbit P0_6=P0^6; /* 将PO的6次方赋值给PO_6 */
sbit P0_1=P0^1;
sbit P0_2=P0^2;
sbit P0_7=P0^7;
sbit P3_2=P3^2; /* 将P3的2次方赋值给p3_2 */
sbit P3_4=P3^4;
uchar a=30,c=0; /* 定义2个变量 */
uchar disp[]={0,0,0,0}; /* 定义数组,并赋值,初始值均为0 */
uchar dispbit[]={0xfe,0xfd,0xfb,0xf7}; /* 定义数组,并赋值。0xfe表示十六进制fe */
uhar dispcode[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xbf};//四联共阴数码管显示代码
/////////////////////////1-30/////////////////////
void display(void){
uchar i,j;
disp[3]=1; /* 将1赋值给disp[]数组中的编号为3的值,注意,数组编号从0开始 */
disp[2]=10;
disp[1]=a/10; /* 将a/10 (/为整除,取整)即3 赋值给disp[]数组中的编号为1的值*/
disp[0]=a%10; /* 将a%10 (%为求模,取余数)即0 赋值给disp[]数组中的编号为0的值*/ /* 四句执行后,disp[]数组的值为0,0,3,10,1*/
for(i=0;i<4;i++){P1=dispcode[disp[i]];P2=dispbit[i];for(j=0;j<255;j++);} /* 认真一个个求出来就可以了,从里到外的顺序*/
}
/////////////////////////2-30//////////////////////* 同上*/
#include
#define uchar unsigned char //一个宏定义
sbit P0_0=P0^0;//声明数据端口,下面同样
sbit P0_6=P0^6;
sbit P0_1=P0^1;
sbit P0_2=P0^2;
sbit P0_7=P0^7;
sbit P3_2=P3^2;
sbit P3_4=P3^4;
uchar a=30,c=0;//申明两个临时变量
uchar disp[]={0,0,0,0};
uchar dispbit[]={0xfe,0xfd,0xfb,0xf7};//字符型编码表
uhar dispcode[]={0xC0,0xF9,0xA4,0xB0,
0x99,0x92,0x82,0xF8,
0x80,0x90,0xbf};//
/////////////////////////1-30/////////////////////
void display(void){
uchar i,j;//临时变量
disp[3]=1;
disp[2]=10;
disp[1]=a/10;
disp[0]=a%10;
for(i=0;i<4;i++){P1=dispcode[disp[i]];P2=dispbit[i];for(j=0;j<255;j++);}
}
/////////////////////////2-30/////////////////////
void display1(void){
uchar i,j;
disp[3]=2;
disp[2]=10;
disp[1]=a/10;
disp[0]=a%10;
for(i=0;i<4;i++){P1=dispcode[disp[i]];P2=dispbit[i];for(j=0;j<255;j++);}
}
////////////////用定时器0定时50MS//////////////////////////////
void t0(void) interrupt 1 using 1
{c++;
TH0=0x3c;
TL0=0xb0;
}
////////////////////主程序////////////////////////////
void main(void)
{P0_0=0;P0_6=0;
TMOD=0x01;
TH0=0x3c;
TL0=0xb0;
ET0=1;
EA=1;
while(1){
if(P0_7==0){while(P0_7==0);P3_4=~P3_4;}
if(P3_4==1){display();
if(P0_1==0){while(P0_1==0);a++;if(a==100)a=0;}
if(P0_2==0){while(P0_2==0);a--;if(a==255)a=99;}
if(a<50){P3_2=0;P0_0=1;P0_6=1;}
if(a>=50&&a<=90){P3_2=1;P0_0=1;P0_6=1;if(a>=70&&a<=90){P0_0=1;P0_6=0;}}
if(a>90){P3_2=0;P0_0=0;P0_6=0;}
}
if(P3_4==0){display1();
if(P0_0==1&&P0_6==1){TR0=1;if(c==20){c=0;a++;}}
if((P0_0==1&&P0_6==0)||(P0_0==1&&P0_6==0)){TR0=1;if(c==40){c=0;a++;}}
if(P0_0==0&&P0_6==0){TR0=0;c=0;}
if(P0_1==0){while(P0_1==0);P0_0=~P0_0;}
if(P0_2==0){while(P0_2==0);P0_6=~P0_6;}
if(a<50)P3_2=0;
if(a>=50&&a<=90)P3_2=1;
if(a>90)P3_2=0;
}
}
}
本人很懒,下面的你自己琢磨吧!
不懂。。