微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 外中断(按键)控制数码管显示

外中断(按键)控制数码管显示

时间:11-24 来源:互联网 点击:
#include "config.h"

#defineuintunsigned int
#defineucharunsignedchar
#defineulongunsignedlong

#defineSIGNALP3_5//键盘初始信号

#defineKEY6P3_2//KEY6口就是INT0口
#defineKEY2P3_3

int num;

// 延时约(0.001 * n)秒
void delay(unsigned char n)
{
ulong i;
do {
i = CPUCLK / 1000;
while(i--);
} while (--n != 0);
}

void int0() interrupt 0 // 也可不判断是否为KEY6按下,因为引发此中断的就是KEY6键
{
if(KEY6 == 0)
{
delay(10);//延时消除按键抖动
if (KEY6 == 0)//确定有键按下
{
num++;
if (num > 9)
num = 0;
P0 = num;
}
while (!KEY6);//等待KEY1松开
delay(10);//延时消除松键抖动
}
}

void int1() interrupt 2
{
if(KEY2 == 0)
{
delay(10);//延时消除按键抖动
if (KEY2 == 0)//确定有键按下
{
num--;
if (num < 0)
num = 9;
P0 = num;
}
while (!KEY2);//等待KEY1松开
delay(10);//延时消除松键抖动
}
}

//外中断初始化函数
void int_init()
{
EA = 1;//开总中断
EX0 = 1;//开外中断0
IT0 = 0;//外中断0低电平触发方式
EX1 = 1;
IT1 = 0;
}

//主程序入口
void main(void)
{
int_init();
SIGNAL = 0;//重要!!虽然SIGNAL和IT1是同一地址,但必须初始化SIGNAL

num = 0;
P0 = num;

for (;;){
}
}

外中断程序设计步骤:

1. 开总中断

2. 开外中断

3. 设置外中断触发方式

4. 中断处理程序

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top