第6章—单片机的中断系统.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章—单片机的中断系统

*/89 4、ADC中断请求的撤除 ADC中断请求标志位ADC_FLAG不能自动清 除,需要在ADC中断服务程序中用软件将其清0。 5、SPI中断请求的撤除 SPI中断请求标志位SPIF不能自动清除,需要 在SPI中断服务程序中用软件清0。 */89 6、PCA中断请求的撤除 PCA中断请求标志位CF/CCF0/CCF1不能自动 清除,需要在PCA中断服务程序中用软件将相 应的标志位清0。 7、低电压检测中断请求的撤除 低电压检测中断请求标志位LVDF不能自动清 除,需要在低电压检测中断服务程序中用软件清0。 */89 四、中断程序编程举例 【例6-1】利用INT0引入单脉冲,每来一个负脉冲, 将连接到P1口的发光二极管循环点亮。 解:利用的下降沿触发中断。 */89 汇编语言程序如下: ORG 0000H LJMP MAIN ORG 0013H LJMP INT_X1 ORG 0100H MAIN: MOV SP,#60H MOV A,#01H MOV P1,#00H SETB IT1 ;设置下降沿触发中断 SETB EX1 ;开放外部中断1 SETB EA ;开放总中断 SJMP $ ;等待,本条指令相当于“HERE: LJMP HERE” INT_X1: MOV P1,A RL A RETI END */89 对应的C语言版本如下: #include stc15.h //包含寄存器定义头文件 unsigned char i=0x01; void main(void) { P1=0; IT0=1; EX0=1; EA=1; while(1); //循环等待 } void X0_ISR(void) interrupt 0 { i=1; if (i==0) i=1; //移位8次后,i将变为0,因此需要重新赋值 P1=i; } */89 【例6-2】利用上升沿和下降沿均可触发中断的外部中断,可以检测脉冲跳变的次数,也可以检测按键的按下与弹起操作。 下面的例子可以统计从INT1引脚输入脉冲的跳变次数。 */89 汇编语言程序如下: ;主程序: ORG 0000H ;主程序入口 LJMP MAIN ORG 0013H ;外部中断1入口 LJMP INT_X1 ORG 0100H ;主程序 MAIN: MOV SP,#7FH CLR A ;假设脉冲的跳变次数保存在累加器ACC中 CLR IT1 ;设外部中断1为上升沿和下降沿均可触发的方式 SETB EX1 ;外部中断1开中断 SETB EA ;CPU开中断 SJMP $ ;原地踏步,等待中断发生 ;外部中断1处理子程序: INT_X1: INC A ;统计脉冲跳变次数 ;可以在这个地方读入INT1/P3.3引脚的电平, ;从而判断本次中断是上升沿中断还是下降沿中 RETI ;返回 END */89 对应的C语言程序如下: #include “stc15.h” //包含寄存器定义头文件 unsigned char p_cnt=0; //统计脉冲跳变次数变量 void main (void) { IT1=0; //外部中断1为上升沿和下降沿均可触发的方式 EX1=1; //允许外部中断1 EA =1; //允许总的中断 while(1); //等待中断 } void X1_ISR (void) interrupt 2 //外部中断1函数 { p_cnt++; //统计脉冲跳变次数 } */89 【例6-3】外部中断2的使用。 外部中断2~4的使用方法与外部中断0和1的使用方法类似,区别在于外部中断2~4只能是下降沿触发,并且,要注意开放中断的方法。 */89 $INCLUDE (STC15.INC) ;包含STC15F2K60S2寄存器定义文件

文档评论(0)

wyjy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档