用C编程,使外部中断每发生一次在共阴极数码管上显示一个数字,且每中断次显示的数值增加1或减少1(根据按下的使“加一建”还是“减一键”而定)。要求中断触发方式为下降沿触发方式,按键有消除抖动功能。

问题

用C编程,使外部中断每发生一次在共阴极数码管上显示一个数字,且每中断次显示的数值增加1或减少1(根据按下的使“加一建”还是“减一键”而定)。
要求:中断触发方式为下降沿触发方式,按键有消除抖动功能。

代码

#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

uchar m = 0;

void delay(uchar c) {
		uchar a, b;
		for (; c > 0; c--) 
		for (b = 142; b > 0; b--) 
		for (a = 2; a > 0; a--);
}

void INT_0() interrupt 0 { //ÍⲿÖжÏ0
		EX0=0; //¹Ø±ÕÍⲿÖжÏ0
		delay(20); //ÑÓʱ£¬È¥¶¶¶¯
		EX0=1;
		m++;
		if (m==10) m = 0;
		else P1 = table[m];
}

void INT_1() interrupt 2 { //ÍⲿÖжÏ1
		EX1=0;
		delay(20);
		EX1=1;
		m--;
		P1 = table[m];
		if (m==0) m = 10;
}

void main() {
		P1 = 0x00; //设置P1初始为0,灯不亮
		EA = 1;  //打开总中断
		EX0 = 1; //打开外部中断0
		IT0 = 1;  //设置触发方式为下降沿触发方式
		EX1 = 1; //打开外部中断1
		IT1 = 1;  
		while(1); //死循环
}

仿真

按下最上面的键P3 INT0脚低电平,发生一次外部中断0事件
按下最下面的键P3 INT1脚低电平,发生一次外部中断1事件
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值