看一单片机程序问题

#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 bAdd = 0;
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;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-10-27
按一下加一??

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网