89C52单片机之数码管中断
2017-06-15 11:29
295 查看
数码管倒计时显示,当显示000时,蜂鸣器响3次。
按键1按下时暂停
按键3按下时加10
按键4按下时减10
按键1按下时暂停
按键3按下时加10
按键4按下时减10
#include <reg52.h> #include <intrins.h> typedef unsigned char uchar; typedef unsigned int uint; void Delay_ms(int); void DigitronShow(); void Int_Init(); void KEY3_add(); void KEY4_min(); sbit LED1 = P0^7; sbit KEY1 = P3^3; //按键1 sbit KEY2 = P3^4; //按键2 sbit KEY3 = P3^6; //按键3 sbit KEY4 = P3^7; //按键4 uchar table[] = {0xbF, 0x86, 0xdb, 0xcf, 0xe6, 0xed, 0xfd, 0x87, 0xff, 0xef}; // 0 1 2 3 4 5 6 7 8 9 uint count = 999; //计数 int flag = 1; /*************主函数*******************/ void main() { Int_Init(); while(1) { DigitronShow(); if(flag) count--; KEY3_add(); KEY4_min(); } } /***********延迟函数***********/ void Delay_ms(int time) { int i; while(time--) for(i=0; i < 120; i++); } /*********数码管显示函数************/ void DigitronShow() { int i,k; for(i=0; i<5; i++) { P0 = table[count%10]; //个位 P1 = 0x01; Delay_ms(5); P0 = table[(count/10)%10]; //十位 P1 = 0x02; Delay_ms(5); P0 = table[count/100]; //百位 P1 = 0x04; Delay_ms(5); } if(count==0) { P1=0x07; P0=0xbf; for(k=0;k<6;k++) { P0 = P0^0x80;; Delay_ms(500); } count=999; } } /*********中断初始化********/ void Int_Init() { IT1 = 1; EX1 = 1; EA = 1; } /**************中断函数*******************/ void KEY1_interrupt() interrupt 2 using 0 { flag = !flag; } /**********按键3加函数********/ void KEY3_add() { if(KEY3 == 0) { Delay_ms(30); //20~30ms if(KEY3 == 0) { if(count<990) count = count + 10; } while(!KEY3); } } /**************按键4减函数*********************/ void KEY4_min() { if(KEY4 == 0) { Delay_ms(30); //20~30ms if(KEY4 == 0) { if(count>10) count = count - 10; } while(!KEY4); } }
相关文章推荐
- 单片机:按键(使用中断)控制数码管的数字加减(c语言实现)
- 20141108 【 单片机——万年历DS1302——中断 】 用DS1302模块 & 数码管显示万年历
- 单片机数码管消隐及中断
- 十天学会单片机Day1点亮数码管(数码管、外部中断、定时器中断)
- 使用单片机的定时器0和中断实现9到0的倒计时功能,并用数码管显示
- 20141109 【 单片机——串口通讯——中断 】 八段数码管显示通信内容
- 89C52单片机之流水灯中断
- STM32单片机外部中断配置讲解
- 单片机中断
- 6、SONIX单片机外部输入中断
- 51单片机的中断系统(二)
- STM32单片机实现中断后不继续向下执行而是返回到main函数
- c语言编写51单片机中断程序,执行过程是怎样的?
- 单片机UART中断应用中TXE和TC的顺序
- 51单片机:利用定时器中断写一个简易加法计算器,按键消抖算法很好。
- STM32单片机学习(2) 外部中断
- 51单片机之外设——玩转数码管
- 单片机的中断系统
- 用单片机定时器和数码管实现的电子时钟
- 单片机:中断及定时器工作