版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、51单片机外部中断的C51编程相关知识:1、51单片机的5大中断源:串行口中断、定时中断1、外部中断1、定时中断0、 外部中断0;2、中断源的编号:串行口中断为4、定时中断1为3、外部中断1为2、定时 中断0为1、外部中断0为0;3、中断源的优先级:按以上顺序排列,串行口中断最低、外部中断0最高;4、使用外部中断0和1,必须TCON寄存器设置其触发方式是低电平触发(0)还是下降沿触发(1);5、使用前必须通过IE寄存器打开总中断和自己的中断;外部中断基本例程-1(未使用中断,键盘扫描为一般端口扫描)/这是特意安排的一个例程,以便和使用外部中断的例程2进行对比用一个按键控制一个灯的亮灭,开始不亮
2、,按一下则点亮,再按一下灭掉,再 按又亮#include sbit k1=P3”2;sbit led=P2”7;void delay_ms(unsigned int xms); /ms 级延时子程序void key_scan(); /声明键盘扫描子函数/=void main()(led=1; /上电初始化,led灯不亮while(1)(key_scan();delay_ms(3000);/=void delay_ms(unsigned int xms) /ms 级延时子程序( unsigned int x,y;for(x=xms;x0;x-)for(y=130;y0;y-);/void key
3、_scan() /键盘扫描子函数( if(k1=0) /有键按下吗?(k1=0 ?)( delay_ms(10); /延时消抖if(k1=0) /确实是有键按下,则:led=!led; /翻转灯的状态while(!k1); /等待按键放开/外部中断基本例程-2 (单个键盘的外部中断0扫描处理)用一个按键控制一个灯的亮灭开始不亮,按一下则点亮,再按一下灭掉,再按又亮#include sbit k1=P3”2;sbit led=P2”7;void delay_ms(unsigned int xms); /ms 级延时子程序void key_scan() interrupt 0 /使用了外部中断0的
4、键盘扫描子函数。也可放在主函数而不需要预先声明 if(k1=0) /有键按下吗?(k1=0 ?) delay_ms(10); /延时消抖if(k1=0) /确实是有键按下,则:led=!led; /翻转灯的状态while(!k1); /等待按键放开/=void main()led=1; /上电初始化,led灯不亮TCON=0 x01; /打开外部中断0,并设置为下降沿触发IE=0 x81; 开总中断while(1)(delay_ms(3000); /注意主函数这里没有键盘扫描程序了/=void delay_ms(unsigned int xms) /ms 级延时子程序( unsigned in
5、t x,y;for(x=xms;x0;x-)for(y=130;y0;y-);/外部中断基本例程-3 (单个键盘的外部中断1扫描处理)功能跟上例一样,都是用一个按键控制一个灯的亮灭,但是使用的是外部中断 1/注意与前例写法上的不同之处#include sbit k2=P33; /sbit led=P2”7;void delay_ms(unsigned int xms); /ms 级延时子程序/=void main()(led=1; /上电初始化,led灯不亮TCON=0 x04; /打开外部中断1,并设置为下降沿触发IE=0 x84; /开总中断和外部中断1while(1)(delay_ms(
6、3000);/=void delay_ms(unsigned int xms) /ms 级延时子程序( unsigned int x,y;for(x=xms;x0;x-)for(y=130;y0;y-);/void key_scan() interrupt 2 /使用了外部中断1的键盘扫描子函数( if(k2=0) /有键按下吗?(k1=0 ?)( delay_ms(10); /延时消抖if(k2=0) /确实是有键按下,则:led=!led; /翻转灯的状态while(!k2); /等待按键放开外部中断基本例程-4 (同时使用外部中断0和外部中断1)用一个键控制接在P0 口的八个灯的亮灭,另
7、外一个按键控制一个灯的亮灭#include sbit k1=P3”2;sbit k2=P33; /sbit led=P2”7;void delay_ms(unsigned int xms); /ms 级延时子程序/=void main()P0=0 xff; /上电初始化,P0全灭led=1; /上电初始化,led灯不亮TCON=0 x05; /打开外部中断1,并设置为下降沿触发IE=0 x85; /开总中断和外部中断1while(1)delay_ms(3000);/=void delay_ms(unsigned int xms) /ms 级延时子程序 unsigned int x,y;for(
8、x=xms;x0;x-)for(y=130;y0;y-);/void key_scan_1() interrupt 0 /使用了外部中断0的键盘扫描子函数( if(k1=0) /有键按下吗?(k1=0 ?)( delay_ms(10); /延时消抖if(k1=0) /确实是有键按下,则:P0=P0; 翻转8个灯的状态while(!k1); /等待按键放开void key_scan_2() interrupt 2 /使用了外部中断1的键盘扫描子函数( if(k2=0) /有键按下吗?(k1=0 ?)( delay_ms(10); /延时消抖if(k2=0) /确实是有键按下,则:led=!led
9、; 翻转单个灯的状态while(!k2); /等待按键放开外部中断扩展应用例程-5(8个按钮分别去控制8个灯的亮灭)/八个按钮通过8个二极管接到外部中断0脚进行中断扩展,/从而解决外部中断口不够用的问题#include sbit k0=P20; /八个按键分别接到P2 口各个脚上,sbit k1=P21; /同时还通过二极管连接到外部中断0脚(P3.2)sbit k2=P2”2;sbit k3=P2”3;sbit k4=P2”4;sbit k5=P2”5;sbit k6=P2”6;sbit k7=P2”7;sbit led0=P00; /接在P0脚上的8个LED灯,分别受控于上述8个按键sbi
10、t led1=P0”1;sbit led2=P0”2;sbit led3=P0”3;sbit led4=P0”4;sbit led5=P0”5;sbit led6=P0”6;sbit led7=P0”7;void delay_ms(unsigned int xms); /ms 级延时子程序/=void main()/上电初始化,led灯不亮TCON=0 x01; /打开外部中断0,并设置为下降沿触发IE=0 x81; 开总中断while(1)(delay_ms(3000);/=void delay_ms(unsigned int xms) /ms 级延时子程序( unsigned int x,
11、y;for(x=xms;x0;x-)for(y=130;y0;y-);/void key_scan() interrupt 0 /使用了外部中断0的键盘扫描子函数( if(k0=0) /有键按下吗?(k0=0 ?)( delay_ms(10); /延时消抖if(k0=0) /确实是有键按下,则:(led0=!led0; /翻转灯的状态while(!k0); /等待按键放开if(k1=0) /有键按下吗?(k1=0 ?)( delay_ms(10); /延时消抖if(k1=0) /确实是有键按下,则:(led1=!led1; /翻转灯的状态while(!k1); /等待按键放开if(k2=0)
12、/有键按下吗?(k2=0 ?)( delay_ms(10); /延时消抖if(k2=0) /确实是有键按下,则:(led2=!led2; /翻转灯的状态while(!k2); /等待按键放开if(k3=0) /有键按下吗?(k3=0 ?)( delay_ms(10); /延时消抖if(k3=0) /确实是有键按下,则:(led3=!led3; /翻转灯的状态while(!k3); /等待按键放开if(k4=0) /有键按下吗?(k4=0 ?)( delay_ms(10); /延时消抖if(k4=0) /确实是有键按下,则:(led4=!led4; /翻转灯的状态while(!k4); /等待按键放开if(k5=0) /有键按下吗?(k5=0 ?) ( delay_ms(10); /延时消抖 if(k5=0) /确实是有键按下,则: (led5=!led5; /翻转灯的状态 while(!k5); /等待按键放开 if(k6=0) /有键按下吗?(k6=0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 驻马店2025年河南驻马店市平舆县人民医院引进人才30人笔试历年参考题库附带答案详解
- 金华2025年浙江金华义乌市勘测设计研究院招聘笔试历年参考题库附带答案详解
- 职业健康与员工心理健康整合
- 舟山浙江舟山市普陀区桃花镇及下属单位工作人员招聘笔试历年参考题库附带答案详解
- 甘肃2025年甘肃财贸职业学院招聘博士研究生15人笔试历年参考题库附带答案详解
- 清远广东清远市第二中学临聘教师招聘笔试历年参考题库附带答案详解
- 毕节2025年贵州毕节市七星关区面向区内乡镇学校考调教师300人笔试历年参考题库附带答案详解
- 无锡2025年江苏无锡市中心血站招聘编外人员2人笔试历年参考题库附带答案详解
- 德宏2025年云南德宏州检察机关聘用制书记员考试招聘13人笔试历年参考题库附带答案详解
- 巴彦淖尔2025年内蒙古巴彦淖尔市五原县医疗卫生专业技术人员招聘22人笔试历年参考题库附带答案详解
- 昼夜明暗图课件
- 压力性尿失禁教学课件
- 凝血六项课件
- 公路施工监理工作重点及难点分析
- 2025云南昆明公交集团招聘9人笔试历年备考题库附带答案详解2套试卷
- 雨课堂在线学堂《大数据技术与应用》作业单元考核答案
- 光伏电缆专业知识培训课件
- 养牛场消防知识培训
- 小儿体液不足的护理措施
- 管控人力成本课件
- 闸安全鉴定管理办法
评论
0/150
提交评论