单片机中断的应用
2015-11-19 14:00
405 查看
51单片机:
P3.2 引脚为INT0 中断
P3.3引脚为INT1 中断
按钮 P3.2 P3.3
按钮低电平触发:
while(PB0==0);
delay();
P3.2 引脚为INT0 中断
P3.3引脚为INT1 中断
按钮 P3.2 P3.3
按钮低电平触发:
while(PB0==0);
delay();
#include <reg51.h> #define SEG P0 // 定义七节显示器接至Port 0 sbit LED = P2^0; // 定义LED灯接至P2.0 sbit com = P1^0 ; // 数码管 com 口 sbit OC = P1^1; // 定义573锁存器使能口,我是用的573驱动7段数码管 void delay10ms(int x); // 声明延迟函数 10ms * x; sbit PB0=P3^2; //按钮0 sbit PB1=P3^3; //按钮1 unsigned char code TAB[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x67 }; // 共阴极 main() { OC = 0; //锁存置0 ,点亮数码管 com = 0; //点亮SEG EA =1; //总中断 EX0 = 1; //外部中断 INT0 EX1 = 1; //外部中断 INT1 TR0 = 1; // 运行INT 0中断 TR1 = 1; // 运行INT1 中断 //TCON = 0x05; // 设置信号触发方式为负边沿触发 while(1) { int i; for(i=0;i<10;i++) // 显示0-9(上数) { SEG=TAB[i]; delay10ms(40); // 延迟 0.4s } } } void my_int0(void) interrupt 0 // INT 0 { int i; while(PB0==0); delay10ms(25); for (i=9;i>=0;i--) // for循环显示9-0(下数) { SEG=TAB[i]; // 显示数字至七节显示器 delay10ms(40); // 延迟 0.4s } } void my_int1(void) interrupt 2 //INT 1 { int i; while(PB1==0); delay10ms(25); for(i=0;i<10;i++) { LED = 0; delay10ms(25); LED = 1; delay10ms(25); } } /* 延迟函数,延迟约x*1ms */ void delay10ms(int x) // 延迟函数开始 { int i,j; for (i=0;i<x;i++) // 计数x次,延迟x*10ms for (j=0;j<1200;j++); // 计数1200次,延迟10ms 1200*8us }
相关文章推荐
- MYSQL 删除重复项
- Lesson 16 Mary had a little lamb
- VC错误——stack overflow
- web页面实现框选效果
- 启动第二个ACTIVITY
- Java学习强烈推荐书籍—Java核心技术Ⅰ、Ⅱ
- SSL + Socket NIO 原理 与 SSLEngine + Naga SSLSocket 的使用
- url截断技术巧用指针
- windows系统共享文件夹访问无需验证(输入用户名和密码)即可进入
- Jquery制作--焦点图左右轮播
- excel中自动变为插入语句的写法
- Android之实现具有优先级的线程池
- Java基础---String类和基本数据类型包装类
- LINUX下用apache或者nginx,本机可以访问,但局域网中的电脑无法访问
- iOS开发书单
- c#读xls
- android本地广播
- Wine完全使用指南――从基本到高级
- MJExtension 2.0 字典转模型再叙 常用的字典转模型使用实例说明
- 【转】setAnimation和startAnimation区别