单片机C语言程序设计:用计数器中断实现100以内的按键计数
时间:09-04 14:15 阅读:3870次
*温馨提示:点击图片可以放大观看高清大图
简介:名称:用计数器中断实现 100 以内的按键计数
说明:本例用 T0 计数器中断实现按键技术,由于计数寄存器初值为 1,因此 P3.4 引脚的每次负跳变都会触发 T0 中断,实现计数值累加。计数器的清零用外部中断 0 控制。
/*名称:用计数器中断实现100以内的按键计数
说明:本例用T0计数器中断实现按键技术,由于计数寄存器初值为1,因此 P3.4引脚的每次负跳变都会触发T0中断,实现计数值累加。计数器的清零用外部中断0控制。
*/
#defineucharunsignedchar
#defineuintunsignedint
//段码
ucharcode
DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
ucharCount=0;
//主程序
voidmain()
{
P0=0x00;
P2=0x00;
TMOD=0x06;//计数器T0方式2
TH0=TL0=256-1;//计数值为1
ET0=1;//允许T0中断
EX0=1;//允许INT0中断
EA=1;//允许CPU中断
IP=0x02;//设置优先级,T0高于INT0
IT0=1;//INT0中断触发方式为下降沿触发
TR0=1;//启动T0
while(1)
{
P0=DSY_CODE[Count/10];
P2=DSY_CODE[Count%10];
}
}
//T0计数器中断函数
voidKey_Counter()interrupt1
{
Count=(Count+1)%100;//因为只有两位数码管,计数控制在100以内(00~99)
}
//INT0中断函数
voidClear_Counter()interrupt0
{
Count=0;
}