(一)要求
通过两个按钮K1,K2控制两个数码管,K1为低级中断,K2为高级中断控制
(二)代码
1.硬件电路图
2.延时函数
void delay()
{
int i=0;int j=0;
for(i=0;i<80;i++)
for(j=0;j<1000;j++);
}
3.中断函数 INT0(低级中断)
void K1() interrupt 0 // 低级中断(K1控制)
{
int i=0;
for(i=0;i<4;i++)
{
P0=led1[i];//数码管循环显示要求数字
delay();
}
P0=led0;//数码管输出“-”,(也可输出其他,修改所用串行口输出值即可)
delay();
}
4.中断函数 INT1 (高级中断)
void K2() interrupt 2 //高级中断函数定义(K2控制)
{
int i=0;
for(i=0;i<4;i++)
{
P2=led2[i];//数码管循环显示要求数字
delay();
}
P2=led0;//数码管输出“-”(也可输出其他,修改所用串行口输出值即可)
delay();
}
5.主函数
#include<reg51.h>
int led0=0x3f;//段码设置(共阳极)
int led1[4]={0xf9,0x30,0x12,0x78};//段码设置
int led2[4]={0x24,0x19,0x02,0x00};//段码设置
void main()
{
TCON=0X05;IE=0X85; //中断INT0 INT1选用电平跳变触发中断;允许总中断和外部中断
PX0=0;PX1=1;//设置INT1 为高级中断,INT0 为低级中断
while(1)//循环输出要求段码(可更改或删除)
{
P0=P2=0x00;delay();
P0=P2=0Xff;delay();
}