标题:
单片机外部中断按键次数统计显示程序+Proteus仿真
[打印本页]
作者:
1001du
时间:
2019-6-10 10:22
标题:
单片机外部中断按键次数统计显示程序+Proteus仿真
单片机外部中断按键次数统计仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png
(21.15 KB, 下载次数: 45)
下载附件
2019-6-10 17:49 上传
单片机源程序如下:
#include <reg51.h>
#include <intrins.h>
// 1 外部中断0初始化 2 中断函数统计按键次数
// 3 显示按键次数
#define SEG1 P1
#define SEG2 P2
#define SEG0 P0
//共阳极数码管 //0 1 2 3 4 5 6 7 8 9 A b C d e F
unsigned char code DIG_CODE_CA[16]={0xC0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//共阳极数码管
//共阴极数码管 //0 1 2 3 4 5 6 7 8 9 A b C d e F
unsigned char code DIG_CODE_CC[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//共阴极数码管
sbit Key3=P3^2;
sbit Key4=P3^3;
unsigned int Num0=0;
unsigned int Num1=0;
//子函数
void Delay1ms();
void DelayNms(unsigned int n);
//主函数
void main()
{
//1 外部中断0 1初始化
IT0=1;IT1=1;//TCON = 0x05;
EA=1;EX0=1;EX1=1;//IE=0x85;
while(1)
{
// 3 显示按键次数
if(Num0==100)Num0=0;
SEG1=DIG_CODE_CC[Num0/10];
SEG2=DIG_CODE_CC[Num0%10];
if(Num1==10)Num1=0;
SEG0=DIG_CODE_CC[Num1];
}
}
//2 外部中断0中断函数 统计按键key3次数
void INT0_ISR() interrupt 0
{
DelayNms(10);
if(Key3==0)
Num0++;
}
//2 外部中断1中断函数 统计按键key4次数
void INT1_ISR() interrupt 2
{
DelayNms(10);
if(Key4==0)
Num1++;
}
//子函数声明
void Delay1ms() //@12.000MHz
{
unsigned char i, j;
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
void DelayNms(unsigned int n)
{
while(n--)
Delay1ms();
}
复制代码
0.png
(10.25 KB, 下载次数: 44)
下载附件
2019-6-10 17:49 上传
所有资料51hei提供下载:
外部中断按键次数统计.rar
(55.72 KB, 下载次数: 18)
2019-6-10 10:20 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1