单片机==独立按键+数码管计数+中断法(9)
来源:互联网 发布:建筑软件自学网 编辑:程序博客网 时间:2024/06/05 14:09
#include <reg52.h>#include "delay.h"sbit key1 = P3^2;sbit seg_select = P1^0;sbit bit_select = P1^1;#define SEGPORT P0unsigned char tempdata[2] = {0x3f,0x3f};unsigned char segdata[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsigned char bitdata[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};void timer0_init(void){ EA = 1; TMOD |= 0x01; TH0 = (65536 - 10000) / 256; TL0 = (65536 - 10000) % 256; ET0 = 1; TR0 = 1;}void display(){ static unsigned char i = 0; SEGPORT = 0x0; seg_select = 1; seg_select = 0; SEGPORT = 0xff; bit_select = 1; bit_select = 0; SEGPORT = tempdata[i]; seg_select = 1; seg_select = 0; SEGPORT = bitdata[i]; bit_select = 1; bit_select = 0; i++; if(2 == i) { i = 0; }}void timer0_isr(void) interrupt 1{ TH0 = (65536 - 10000) / 256; TL0 = (65536 - 10000) % 256; display();}void int0_init(){ EA = 1; IT0 = 1; EX0 = 1;}void int0_isr(void) interrupt 0{ static unsigned char disdata = 0; EX0 = 0; delay_ms(10); if(0 == key1) { while(!key1) delay_ms(10); while(!key1); disdata++; if(100 == disdata) { disdata = 0; } } tempdata[0] = segdata[disdata / 10]; tempdata[1] = segdata[disdata % 10]; EX0 = 1;}void main(){ timer0_init(); int0_init(); while(1);}
0 0
- 单片机==独立按键+数码管计数+中断法(9)
- 单片机==独立按键+数码管计数+扫描法(8)
- 单片机==独立按键led灯(7)
- 单片机==独立按键+蜂鸣器(10)
- 单片机==独立按键-秒表(14)
- 单片机:按键(使用中断)控制数码管的数字加减(c语言实现)
- 外中断(按键)控制数码管显示
- 单片机==独立按键之抢答器
- 独立按键数码管显示键值
- 单片机==单数码管(2)
- 单片机独立按键
- 单片机独立按键
- 单片机独立按键
- 单片机4*4按键数码管显示0-9
- 单片机控制独立按键读入
- 单片机——独立按键
- 51单片机—独立按键
- 单片机==共阴数码管(3)
- unity游戏上架GooglePlay问题
- 打印出图标对应的包名和类名
- Java自带的性能监测工具用法简介——jstack、jconsole、jinfo、jmap、jdb、jsta、jvisualvm
- c中字符串常量和字符数组的区别
- 鹰眼跟踪、限流降级,EDAS的微服务解决之道
- 单片机==独立按键+数码管计数+中断法(9)
- Tomcat和servlet的关系
- Twitter、阿里、微博、GitHub都在用Redis数据库,你还在等什么?
- 分享几个好看的Bootstrap后台管理响应式模板
- vim使用技巧
- 不再做“异教徒”——揭开数据库PostgreSQL的神秘面纱
- mysql:Prepared statement needs to be re-prepared解决办法
- 【NOIP模拟赛】小奇挖矿
- 柱状图