网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 优创科技 >> 文章中心 >> 知识天地 >> 文章正文
  配料机控制系统源程序讲解(2)-中断服务程序           ★★★ 【字体:
配料机控制系统源程序讲解(2)-中断服务程序
作者:admin    文章来源:本站原创    点击数:    更新时间:2006-11-24    

配料机控制系统源程序讲解(2)-中断服务程序

前面我们讲过,在这个程序里用到了一个定时器的中断程序,它主要是完成搅拌主机轴端的定时注油,是当整个搅拌站处于工作时,无论控制系统处于那那种工作状态,都要在事先设计好的时间上启动注油泵完成规定时间的注油,以保证轴端有足够的油压。启动注油是随机性的,不是程序在运行到某个状态下才开始的,因此使用中断比较合适。对于初学者可能对中断理解不是很深,其实中断就是当某个中断源启动中断后,不管程序指针现在什么地方,它都会立既跳转到中断源所指定的地址去执行,也就是说中断就是地址指针的跳转,但它所跳到的地址是芯片在设计时就定下的。这就有一个麻烦,如果一旦执行中断程序,那原来的程序运行不就被乱了吗,确实是这样,为了不至这样在程序上必须采取办法,以保证程序在执行完中断程序后能够继续按原来程序执行。这就是所说的保护现场和恢复现场。

保护现场是在中断服务程序的开始地方,要将要使用到的比如累加器,标志位,寄存器,某些内存数据压入堆栈来保存,具体保存哪些,要根据中断服务程序要用到哪些来决定,凡是中断和别的程序共用的最好都保存起来为好。下面就是这段中断服务程序。

T0INT:  PUSH ACC ;保护现场开始,累加器ACC压入堆栈
 PUSH B
;寄存器B压入堆栈
 PUSH PSW
;标志位压入堆栈
 PUSH DPH
;地址高位指针压入堆栈
 PUSH DPL
;地址低位指针压入堆栈
 MOV IE,#00H
;中断服务开始
 CLR TR0
;清中断寄存器
 CLR TF0
;清中断标志位
 INC 40H
;以下为完成指定工作的程序,主要是启动注油和时间到停止注油
 MOV A,40H
 CJNE A,#0F9H,RETIT0
 INC 41H
 MOV 40H,#00H
 MOV A,41H
 CJNE A,3CH,RETIT0
 MOV 40H,#00H
 MOV 41H,#00H
 CPL 09H
        MOV C,09H
 MOV A,#0FFH
 MOV ACC.5,C
 MOV DPTR,#0BFF2H
 MOVX @DPTR,A
 JB 09H,RETIT1
 MOV 3CH,3AH
 AJMP RETIT0
RETIT1: MOV 3CH,3BH
RETIT0:
 MOV TH0,#00H
 MOV TL0,#00H
 MOV IE,#82H
 SETB TR0
;以下两行是开中断,为新的中断启动
 SETB  IE0
 POP DPL
;地址低位指针弹出堆栈,出栈和入站顺序正好相反
 POP DPH
;地址高位指针弹出堆栈
 POP PSW
;标志位弹出堆栈
 POP B
;寄存器B弹出堆栈
 POP ACC
;保护现场开始,累加器ACC弹出堆栈
 RETI
;中断结束返回

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    没有相关文章
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    1
    408412242(点击交谈)340154483(点击交谈)  
    电话热线:0759-2882725、3615028  手机专线:13019609249、13729119943
    Copyright ® 2006-2008 YourCon.com All Rights Reserved
    中华人民共和国信息产业部备案编号:鲁ICP备06031325号