51单片机按键计数器实例--调用外部中断
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
-------------------------------------------------
- #include<reg52.h>
- #define uint unsigned int
- sbit a1=P2^6; //段选1
- sbit a2=P2^7; //段选2
- uint k=0;
- uint code dat[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
- //共阴数码管,位选低电平启动
- void delay() {
- uint i;
- for(i=2000;i>0;i--);
- }
- void main() {
- EA=1; //中断允许总控制位
- EX0=1; //外部中断0的中断允许位
- EX1=1; //外部中断1的中断允许位
- IT0=1; //外部中断0的触发方式选择位,当IT0=1,为下降沿触发方式
- IT1=1; //外部中断1的触发方式选择位,当IT1=1,为下降沿触发方式
- while(1) {
- P0=0;
- P0=dat[k/10];//十位数据
- a2=1;//第二位位选高电平,高阻
- a1=0;//第一位位选低电平,导通
- delay();
-
- P0=0;
- P0=dat[k%10];//个位数据
- a1=1;//第一位位选高电平,高阻
- a2=0;//第二位位选低电平,导通
- delay();
- }
- }
- void jiashu() interrupt 0 {
- if(k<99)
- k=k+1;
- else
- k=0;
- }
- void jianshu() interrupt 2 {
- if(k>0)
- k=k-1;
- else
- k=99;
- }
复制代码
---------------------------------------------------
Proteus7.5版本的仿真工程下载:
按键计数器1.rar
(41.06 KB, 下载次数: 187)
|