- 1、本文档共76页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章 常用控制程序设计 ;4.1 巡回检测程序设计 ;4.1.1 概述 ;6.2.2 巡回检测举例 ;1. 利用8位A/D转换芯片(ADC0806);系统的硬件电路介绍: ;本程序由系统初始化程序和中断程序组成。初始化程序完成中断向量和定时器初值的设定;中断程序完成数据采样工作,实现对8个通道的巡回检测。
初始化程序功能:设置定时器0、外部中断0和外部中断1的中断程序入口;设置定时器0的工作方式为方式1,定时时间为100ms;设置计数单元(30H)初值。
初始化程序流程框图如图6-6所示。;初始化程序清单: ; MOV TL0,#0B0H ;定时器初值设定
MOV 30H,#00H ;置计数初值
SETB IT0 ;中断请求信号为脉冲方式
SETB IT1 ;中断请求信号为脉冲方式
SETB EX0 ;外部中断0中断允许
SETB ET0 ;定时器0中断允许
SETB EA ;开中断
SETB TR0 ;启动定时器
HERE:AJMP HERE ;等待中断;定时器中断程序流程框图如图6-10所示。;定时器中断程序程序清单: ;数据采样程序流程框图如图6-11所示。;数据采样程序程序清单: ;SETB 00H ;置标志位
INC DPTR ;通道号加1
INC R0
INC R0
INC R0
INC R0
INC R0 ;45H为下一通道采样数据存放首址
DJNZ R6,#TRAN_S ;8个通道采样未完,继续采样
MOV DPTR,#0F00H ;8个通道采样结束,重置通道初值
INC R0 ;修改采样数据存放地址
DJNZ R7,TRAN_S ;未完成5次采样,继续
… ;数据处理程序
….
RETI
;2. 采用12位A/D转换芯片(AD574A) ;图6-15 AD574A A/D转换程序流程框图;D574A A/D转换程序清单: ;中断服务程序清单:;6.2 上下限报警处理程序设计 ;; …
….
CLR C ;清进位标志位
MOV A,Amax ;读上限报警值
SUBB A,SAMP ;判断是否超过上限报警值
JC UPPER ;超过上限,转报警处理程序
MOV A,Amin ;读下限报警值
SUBB A,SAMP ;判断是否超过下限报警值
JNC LOWER ;超过下限,转报警处理程序
…
…
UPPER: 超上限处理程序。
LOWER: 超下限处理程序。 ;例6-4 设计一报警处理程序。只有采样值连续3次异常时,系统才进行报警处理。
报警程序流程框图如图6-23所示。;;报警程序清单:;CLR FLAG ;采样正常,清采样异常标志位
AJMP RETU
ABNORMAL: JB FLAG,ABNOR_L ;上次采样异常,转ABNOR_L
MOV NUM,#03H ;上次采样正常,重置允许连续异常次数
SETB FLAG ;置位采样异常标志位
AJMP RETU
ABNOR_L: MOV A,NUM ;读允许连续采样异常次数
JZ ALARM ;允许采样异常次数=0,执行报警处理程序
DEC NUM ;允许采样异常次数≠0,允许采样异常次数减1
SETB FLAG ;置位采样异常标志位
AJMP RETU
ALARM1: ... ;报警处理程序
...
RETU: RET
;4.3 定时程序设计 ;6.7.1 软件定时程序 ;如取N=166(0A6H),上述简单软件定时程序的定时时间就是1ms,如果需要250ms的定时时间,则所需的外循环的次数为250(0FAH)。程序如下:
DELAY250: MOV R6,#0FAH ;置外循环次数
DELAY1: MOV R7, #0A6H ;置内循环次数
NOP ;空操作指令
D1: NOP
DJNZ R7,D1 ;内循环未结束,继续
DJNZ R6,DELAY1 ;外循环未结束,继续
RET
;6.7.2 硬件定时程序;;;程序设计;;;;中断服务程序分以下几部分。 ;计数器T1计数中断程序清单: ;外部中断0中断程序流程如图6-34所示。;外部中断0中断程序清单: ;INC HUR ;60分到,小时存储单元加1
MOV MIN,#00H ;小时存储单元清0
M_SHOW: ACALL HTOBCD ;调用16进制数转化为BCD码子程序
ACALL DISP ;调用显示子程序,显示分
MOV A,HUR
CJNE A,#18H,H_SHOW ;判断是否到24小时
MOV HUR,#00H ;24小时到,小时存储单元清0
H_
文档评论(0)