《io操作-中断》由会员分享,可在线阅读,更多相关《io操作-中断(13页珍藏版)》请在金锄头文库上搜索。
1、IO操作中断中断中断生物医学工程生物医学工程l 中断的基础知识l 430的外部IO中断l 实验一:按键中断控制LED亮灭l 实验二:按键中断控制LED翻转中断中断生物医学工程生物医学工程1 中断的基础知识某天上午你有两个任务,一是在办公室工作,二是到门口收快递。应该怎么做?主程序:工作中断服务程序:收快递工作中工作中收快递工作中工作中举例举例中断中断生物医学工程生物医学工程1 中断的基础知识在程序运行过程中,系统出现了一个必须由CPU立即处理的情况,此时,CPU暂时中止当前程序的执行,转而处理这个新的情况的过程叫做中断。什么是中断?什么是中断?中断中断生物医学工程生物医学工程1 中断的基础知识
2、中断的必备条件中断的必备条件要有支持中断的环境要有支持中断的环境要有中断源要有中断源要使能中断要使能中断要有中断服务程序要有中断服务程序中断中断生物医学工程生物医学工程1 中断的基础知识Data Sheet 的第 13 页。咱们用的是Port1和TimerA中断。MSP430F135MSP430F135的中断向量的中断向量中断中断生物医学工程生物医学工程2 430的外部IO中断l P1口的8个管脚、P2口的8个管脚,都可以产生外部中断;l P1口的8个管脚共享一个中断向量,P2口的8个管脚共享另一个中断向量。中断中断生物医学工程生物医学工程2 430的外部IO中断寄存器功能P1IESP1IFG
3、P1IE共8位,每一位对应一个IO管脚 P1IE.x=1则开启对应管脚的中断。共8位,每一位对应一个IO管脚 P1IES.x=0则对应管脚的上升沿(0-1)使P1IFG.x置位 P1IES.x=1则对应管脚的下降沿(1-0)使P1IFG.x置位共8位,每一位对应一个IO管脚 P1IFG.x=1则说明有中断请求,如果P1IE.x为1则引起中断 P1IFG必须由软件清除中断中断生物医学工程生物医学工程3 实验一:按键中断控制LED亮灭P1SEL= 0; P1DIR= 0; P1IES= 0; P1IFG= 0; P1IE= 0xC0; _EINT();初始化初始化IOIO口中断口中断中断中断生物医
4、学工程生物医学工程3 实验一:按键中断控制LED亮灭while(1) 主程序主程序#pragma vector=PORT1_VECTOR _interrupt void MN_Port1_ISR(void) if (P1IFG if (P1IFG P1IFG = 0; 中断服务程序中断服务程序中断中断生物医学工程生物医学工程4 实验二:按键中断控制LED翻转while(1) 主程序主程序#pragma vector=PORT1_VECTOR _interrupt void MN_Port1_ISR(void) if (P1IFG P1IFG = 0; 中断服务程序中断服务程序中断中断生物医学工程生物医学工程5 正确理解中断l 中断服务程序并不是被 main 函数直接或间接 调用的;l 中断服务程序是被硬件直接调用,中断发生后, 硬件从中断向量表中找到中断服务程序的首地址 ,然后调用中断服务程序;l 中断服务程序中不应执行太多东西,不应占用太 多时间,它应该尽快执行结束。中断中断生物医学工程生物医学工程作业:按键控制LED闪烁时间主程序中断服务程序初始化ivOnCnt?i=0;熄灭LEDi=0;ivOffCnt?点亮LED根据按键修改vOnCntvOffCnt的值