完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
43个回答
|
|
知道概念就可以了,接下来就是寄存器的操作。中断打开,优先级等。
|
|
|
|
看看郭天祥的书,proteus仿真,自己焊块实验板,要动手才能学到真东西。
|
|
|
|
|
|
|
|
|
|
|
|
实验板自己有 书也有 就是听他讲的听不懂 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
本帖最后由 robin_chen559 于 2013-7-14 20:52 编辑
可怜的娃,网上搜搜吧 51单片机 proteus 100例,百度文库就有,上面那些备注写得多~~~ 俺的学习板自己焊的,没用过郭天祥的学习板,视频看着倒是还不错~~~ 就说我这图吧,由中断0引发的按钮是否按下来控制电池放电,对照规单片机归格书看看不难的呀~~ //中断初始化 void Init_Inte(void) //中断初始化 { EA = 1; //开总中断 IT0 = 1; //下降沿触发中断 EX0 = 1; //开外部0中断 } //中断0响应 void Inter0(void) interrupt 0 //外部中断0程序 { SW_ON_Bit = 1 ; //开关按下标志置“1” } //按键按下判断 void SW_ON_CHAR(void) { if( SW_ON_Bit == 1) //按钮确定按下 { VINT0 = 1; //端口置“1”好判断 _nop_(); _nop_(); _nop_(); //三个空周期,待电平稳定 if(VINT0 == 0) //按钮按下 { Delay_MS(10); if(VINT0 == 0) //确定按钮按下 { Bat_CH_DCH = 1; //放电标志置“1” } } } } //按钮松开判断 void SW_OFF_CHAR(void) { if( SW_ON_Bit == 1) //确定之前有开关按下 { VINT0 = 1; //端口置“1”好判断 _nop_(); _nop_(); _nop_(); //三个空周期,待电平稳定 if(VINT0 == 1) //INT0电平为高 { Delay_MS(10); if(VINT0 == 1) //确定按钮松开,放电标志置"0" { SW_ON_Bit = 0; //按钮按下标志清除 Bat_CH_DCH = 0; } } } } |
|
|
|
自己动手骗一下程序 慢慢就理解了
|
|
|
|
|
|
|
|
这个程序我只能看懂一点点 |
|
|
|
中断就是“你在睡觉,突然电话响了,你醒了接了个电话,然后又睡了”。简单明了的概念解释。“睡觉”---MCU跑程序,“电话响”事件---中断触发,“接电话”---响应中断服务,“又睡了”恢复断点继续执行。
看不懂代码,只要你懂C语言语法,看不懂代码是不应该的,不懂的只是程序逻辑。我的方法,硬着头皮看,一便有一遍的收获,然后试着理解后自己敲一遍。 |
|
|
|
看不懂的就是为什么要那样写 只有死啃了我 |
|
|
|
本帖最后由 爱我别走 于 2013-7-15 22:19 编辑
你好,我来用自己的话给你理一理,希望可以帮到你! 1.中断的理解 中断(interrupt),从字面上理解就是被中断,被打断的意思。比如,你正在写作业,突然有人敲门,你就要停止做作业,把作业的位置做个标记,然后去给开门,之后你根据做好的标记,继续写作业。程序也是这样,正常情况下,cpu顺序执行main函数里面的代码,从第一条代码到执行到最后一条代码,然后又返回到第一条代码往下执行,这样一直循环。突然cup接到中断请求(有人敲门),cpu就暂停当前执行的代码(停止做作业),做现场保护(把作业做标记),然后去执行中断代码(开门),执行完中断代码后,返回继续从被中断处往下执行正常代码(开完门继续做作业)。 2.单片机的中断源 中断源就是可以打断cup正常做事的东西。单片机有5个中断源,外部中断0(INT0),定时器0(Timer0),外部中断1(INT1),定时器1(Timer1),串口中断。 外部中断(INT0和INT1):简单理解就是通过外部输入来触发中断。 定时器中断(TImer0和Timer0):简单理解就是通过定时器,定时触发中断。 串口中断 :简单理解就是当接收到外部数据时触发中断。 3.怎样使用中断(以外部中断0为例)。 单片机有两个外部中断引脚,P3.2(对应INT0)和P3.3(对应INT1)。当这两个引脚出现低电平,或者下降沿时,就可以就触发单片机外部中断。 第一步,中断配置 /************************************************************ 函数名 : INT0_Config 功能 :配置单片机与中断相关的硬件,让单片机能够正常检测中断和执行中断代码。 输入参数: 输出参数 : ************************************************************/ void INT0_Config(void) { IT0=1;//中断触发方式,IT0=0,低电平触发,INT0=1下降沿触发(下降沿就是由高电平向低电平的跳变); EX0=1;//外部中断0的中断开关,每个中断源都有自己的中断开关。 EA=1;//打开总中断,如果总中断不打开,就是其他中断开关被打开,单片机也不能执行中断。 } 第二步,中断服务,也就是cpu被中断后所要做的事。 /************************************************************ 函数名 : Isr_INT0 功能 :中断服务 输入参数: 输出参数 : ************************************************************/ void Isr_INT0() interrupt 0 //这里的interrupt表明这个函数是中断函数,后面的标号表示是哪一个中断源产生的中断。(INT0)为0, //Timer0为1,INT1为2,Timer3,串口中断为4。 { // Add your code here } 第三部 主函数 /************************************************************ 函数名 : main 功能 :主函数 输入参数: 输出参数 : ************************************************************/ void main() { INT0_Config();//调用这个函数来配置外部中断 while(1) { //Add your code here //CPU一直在这里循环的执行代码,一旦发生中断,就停下来去执行中断函数Isr_INT0() interrupt 0,执行完成后,返回从断点处继续往下执行原 来的 代码。 } } |
|
|
|
|
|
|
|
中断和查询是两种操作方式,中断是按优先级响应执行的。。。
|
|
|
|
|
|
|
|
额............................................. |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
182 浏览 0 评论
如何用OpenCV的相机捕捉视频进行人脸检测--基于米尔NXP i.MX93开发板
1207 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十章 YOLO2人手检测实验
493 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-网络编程示例之开发板测试
420 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-网络编程示例之网络socket程序编程
957 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11732 浏览 31 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-18 11:22 , Processed in 0.870592 second(s), Total 78, Slave 71 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号