按下P33所对应的的按键后,出正确现象;再按P32所对应的按键,也出正确现象;可是再按P33所对应的的按键数码管显示的数字就不走了,然后怎么按数码管数据都不变。

fpga加油站 2018-01-27 09:26:23
#include<reg52.h>
sbit P30=P3^0;
sbit P31=P3^1;
sbit P32=P3^2;
sbit P33=P3^3;

void delayms(int b);

unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,};
unsigned char n,tt,k=0;

void keyscan();
void delayms(int b)
{int i;
long a;
for(i=b;i>0;i--)
{
for(a=110;a>0;a--);
}
}
void main()
{

P2=0xa0;P0=0x00;P2=0x80;P0=0xff;P2=0xc0;P0=0xff;P2=0xff;P0=0xc0;

TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TF0=0;

EA=1;
ET0=1;

while(1)
{
keyscan();

}
}

void keyscan()
{
if(P33==0)
{
delayms(5);
if(P33==0)
{
n=1;
TR0=1;

}
while(!P33);
}

else if(P32==0)
{

delayms(5);
if(P32==0)
{
n=2;
TR0=1;

}
while(!P32);
}

}


void Timer0() interrupt 1
{

tt++;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(n==1)
{
if(tt==5)
{
tt=0;
P0=tab[k];
k++;
if(k==16)k=0;
}

}

if(n==2)
{
if(tt==20)
{
tt=0;
P0=tab[k];
k++;
if(k==16)k=0;
}

}
}
...全文
585 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
LJDTJ 2018-01-29
  • 打赏
  • 举报
回复
不太清楚你想要具体实现的功能。如果你想根据不同的按键来实现不同时间间隔的循环显示,可以这样修改: 在if ( P33 ==0 ) { n = 1; 后面增加 tt = 0; 在 if ( P32 ==0 ) { n = 2; 后面增加 tt = 0;

27,370

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧