#include<reg51.h>
sbit P00=P0^0;
sbit P01=P0^1;
sbit P02=P0^2;
sbit P03=P0^3;
unsigned DATA_LED[10]={0x3F,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay(m)
{
unsigned int i,j;
for(i=0;i<4;i++)
{
for(j=0;j<400;j++);
}
}
void led(int n)
{
P1=0xff;
P1=DATA_LED[n%10];
P00=0;
delay(10);
P00=1;
P1=0xff;
P1=DATA_LED[n/10%10];
P01=0;
delay(10);
P01=1;
P1=0xff;
P1=DATA_LED[n/100%10];
P02=0;
delay(10);
P02=1;
P1=0xff;
P1=DATA_LED[n/1000%10];
P03=0;
delay(10);
P03=1;
}
void main()
{
unsigned int l;
bit bAdd = 0;
while(1)
{
if(P2 == 0xfb)
l = 0;
if(P2 == 0xfd)
{
if(!bAdd)
l++;
if(l == 100)
l = 0;
}
led(l);
if(P2 == 0xfe)
bAdd = ~bAdd;
}
}
程序的设计意义就是用三个按键控制计数器开始,暂停,复位。最大记录到99,请问我该如何继续写下去啊。
不是啊。是按开始,它自己自动从00-99循环计数。
按下暂停,当前记录到什么位置就停再哪里。
复位就是归00
bit start_f=0;
bit reset_f=0;
while(1)
{
if(P2 == 0xfb)reset_f=1;
if(P2 == 0xfd)start_f=1;
if(P2 == 0xfe)bAdd = ~bAdd;
if(reset_f){
reset_f=0;
l=0;
start_f=0;
}
if(start_f&&bAdd){
l++;
if( l>99) l=0;
}
led(l);
if(P2 == 0xfe)
bAdd = ~bAdd;
}