完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
//////主函数,让led灯依次闪烁/////
/////外部中断1打断主函数,执行数码管动态扫描//// /////又一个外部中断嵌套,让led亮///// #include #include #define uchar unsigned char #define uint unsigned int uchar code du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar code we[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; uchar temp=0xfe; void delay50ms(uint i) { uint j; for(;i>0;i--) for(j=6245;j>0;j--); } void inter1() { EX1=1; EA=1; IT0=0; } void main() { inter1(); while(1) { P2=temp; delay50ms(20); temp=_crol_(temp,1); } } void INT() interrupt 2 { uchar i; for(i=0;i<8;i++) //////////为什么体现不了实时性,得数码管走到尽头才能触发中断?? 应该怎么改??? { P1=we; P0=du; delay50ms(20); } EX0=1; IT0=0; } void INTR() interrupt 0 { P2=0x00; } 我自己理解的中断嵌套是把更高级的外部中断0的开关放在外部中断1的函数体内!!不知,这样理解是否正确?? 大家看看我这个程序,为什么体现不了实时性,进行二级嵌套时,必须要数码管走到7才能触发更高级的中断,为什么不能就停在那里,触发中断 |
|
相关推荐
6个回答
|
|
中断嵌套是,正在执行低优先级的中断服务时,高优先级中断被激活且使能中断才会跳至先执行高优先级的中断服务,执行完后回到低优先级中断服务断点的位置继续往下执行。
|
|
|
|
没怎么理解,,版主,求赐教啊 |
|
|
|
中断优先级是通过设置中断优先级控制寄存器来实现的,而不是像你所说的把中断开关放在函数体内
|
|
|
|
{:1:}{:1:}
|
|
|
|
void INT() interrupt 2
{ uchar i; for(i=0;i<8;i++) //////////为什么体现不了实时性,得数码管走到尽头才能触发中断?? 应该怎么改??? { P1=we; P0=du; delay50ms(20); } EX0=1; IT0=0; } 你在之前没有打开更高优先级中断的使能位,当你触发了中断后,中断标志位置1,也不会进入中断服务,当你上面这个函数的for循环结束后,EX0=1,使能了INT0的中断,之前因为标志位已经置1没有进入中断前是不会自动清除标志的,所以,开启了使能后即进入了高优先级中断。 若你在main开始执行的时候就使能了高优先级中断,则能立即中断嵌套操作。 |
|
|
|
ok 受助了,我也明白了一点
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
820 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第十一章 KEY实验
388 浏览 0 评论
783 浏览 0 评论
801 浏览 2 评论
飞凌嵌入式-ELFBOARD-ELF 2硬件知识分享-最小系统原理
466 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11933 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-13 01:51 , Processed in 0.770416 second(s), Total 81, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号