当前位置:文档之家› 按键计数c51

按键计数c51

/**********************************************
;说明:这是一个学习C51的例程
;功能:使计数按键次数并显示在LED数码管上
;设计者:乔美娜 郭雅丽 郜慧
;设计日期:2013年8月22日
;版本序号:V1.0.0
;*********************************************/
#include //寄存器定义
#define uchar unsigned char
#define INITVALUE_RCAP2H ((65536-2000)/256)
#define INITVALUE_RCAP2L ((65536-2000)%256)
long countnum=0;
uchar dis_buf[6]={0};
uchar loop=0,ledbit=0;
bit zflag=1;
//数码管0~9及熄灭的断码
uchar code ledcode[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
/*************************主函数**********************************/
void main()
{
IT0=0;
EA=1;
EXO=1;

TMOD=0x00;
TCON=0x00;
TH0=INITVALUE_RCAP2H;
TL0=INITVALUE_RCAP2L;
TR0=1;
ET0=1;
EA=1;
while(1);
}
void in0()interrupt 0
{
long numtemp;
int loopi;
countnum++;
numtemp=countnum;
for(loopi=5;looopi>=0;loopi--)
{if(numtemp==0)break;
dis_buf[loopi]=numtemp%10;
numtemp/=10;
}
}
void T0interrupt()interrupt 5
{
TR0=0;
dsiplay();
TR0=1;
}
void display()
{
uchar ledcodetemp,ledbittemp;
if(loop==6)
{
loop=0;
ledbit=0;
zflag=1;
}
ledcodetemp=dis_buf[loop];
if(zflag)
{
if(ledcodetemp==0)
{
ledcodetemp=16;
}
else
}
zflag=0;
}
}
ledcodetemp=ledcodep[ledcodetemp];
ledbittemp=P1;
ledbittemp=ledbittemp&0x1f;
ledbittemp+=ledbit;
P0=ledcodetemp;
P1=ledbittemp;
ledbit+=0x20;
loop++;
}

相关主题
文本预览
相关文档 最新文档