完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
外部中断
中断的概念:CPU在执行主程序的时候,中断源发送请求。CPU响应中断源,去执行中断源的程序。中断源往往含有优先级,优先级高的中断源可以向优先级低的中断源发送有效的中断请求。 STC12C5A60S2系列单片机通常有两个外部中断源。 外部中断常用到的寄存器是TCON(定时计数器控制寄存器)的低四位 [tr]寄存器名称地址位B7B6B5B4B3B2B1B0[/tr]
要使一个中断源能够被CPU识别并按照中断的方式执行,就要求传递线上的几个开关都是闭合的。通过下面的图可以很好的理解中断源与CPU之间的请求传输。 所以我们可以得到要外部中断0的服务程序能够执行必须满足三个条件:
主函数执行数码管每隔约1s加1的任务,当按下P32引脚的按键时,蜂鸣器鸣一声,P36引脚对应的是蜂鸣器,当P36=1时,蜂鸣器发生,S2按键按下,电平为低,松开时为高。 #include #include "shumaguan.h" // 要用到里面的数码管显示函数,在此文件中,直接调用不再多写。 ***it beep=P3^6; ***it key=P3^2; #define BEEPON beep=0 #define BEEPOFF beep=1 #define RDKEY key void delay1s(void) { //cpu延时1s,这里的代码可以在STC烧录助手里来看,或者根据系统时钟来计算。代码略。 } void delay100ms(void) { //cpu延时1s,这里的代码可以在STC烧录助手里来看,或者根据系统时钟来计算。代码略。 } void delay10ms(void) { //cpu延时1s,这里的代码可以在STC烧录助手里来看,或者根据系统时钟来计算。代码略。 } void main() { unsigned char i; IT0=1;//设置为下降沿触发 EX0=1;//允许外部中断0的申请 EA=1; while(1) { ShowInt(i); i++; delay1s(); } } //外部中断0的终端服务程序。CPU被动被打断 //中断法--外部中断0请求标志位的IE0由硬件自动清零,无需软件操作。 void EX0_ISR() interrupt 0 { delay10ms();//消抖 if(RDKEY==0) { BEEPON; delay100ms(); BEEPOFF; } } |
||||||||||
|
||||||||||
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1374 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1364 浏览 1 评论
791 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
567 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1409 浏览 2 评论
1762浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
489浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
422浏览 3评论
415浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
391浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-30 10:46 , Processed in 0.888013 second(s), Total 79, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号