51单片机用计数器中断实现100以内的按键计数,汇编语言程序

发布时间:2019-08-07 23:02:12

1、加一按键,按1次,发光二极管闪动1次,数码管加一

2、减一按键,按1次,发光二极管闪动1次,数码管减一

3、清零按键,计数器清零,同时蜂鸣器响铃提示

4、长按按键,连续加数或减数。(参考计算机键盘感觉)


推荐回答

 单片机用计数器中断实现 100 以内的按键计数 

一、实验目的

1.掌握keilC51软件与PROTEUS软件联合仿真调试的方法;

2.掌握单片机的去抖原理及处理办法

3.掌握使用单片机计数器中断的使用方法

二、实验仪器与设备

1.微机1台  2. keilC51集成开发环境   3.Proteus仿真软件

三、实验内容

实验程序:

#include<reg51.h> 

#define uchar unsigned char 

#define uint unsigned int //头文件

uchar 

code 

DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00}; 

uchar Count=0; //段码 

void main() //主程序 

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]; 

void Key_Counter() interrupt 1 //T0 计数器中断函数 

Count=(Count+1)%100; //因为只有两位数码管,计数控制在 100 以内(00~99) 

void Clear_Counter() interrupt 0 //INT0 中断函数 

Count=0; 

实验电路模拟图:

以上问题属网友观点,不代表本站立场,仅供参考!