程序10-4:温控系模型控制程序.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
??程序10-4:温控系统模型控制程序(对应图10-30)??? TEMP EQU 30H ; 变量TEMP指向地址30H,用于保存温度值 SW BIT P3.2 ; SW为按钮开关标志位 DRIVE BIT P3.5 ; DRIVE为控制位,控制外设(压缩机) ORG 00H ; 起始地址00H JMP START ; 跳到START ORG 0BH ; Timer?0中断向量地址 JMP TIM0 ; 跳到TIM0 START: MOV TMOD, #01H ; Timer 0工作在模式1下 MOV IE, #82H ; Timer 0中断使能 MOV TH0, #3CH ; 计数初始值载入,Timer 0每50ms中断一次 MOV TL0, #0B0H SETB TR0 ; 启动Timer 0 MOV TEMP, #0FFH ; 设定温度的初始值 ANL P1, #00H ; 七段数码管的显示”00” MOV R0, #10 ; 显示数据计数器R0=10 AD_CONVERT: MOVX @R0, A ;使P0高阻,ADC0804开始模数转换 CHECK_CON: JNB SW, SET_TEMP ; 判断按钮开关有没有按下 JB P2.0, CHECK_CON ; 检查ADC的位,出现低电平表明转换完成 MOVX A, @R0 ; 将转换好的数据载入累加器A MOV A, P1 ; 转换完成的数据载入累加器A中 CALL HEX_TO_DEC ; 调用十六进制向十进制转换子程序 MOV P1, A ; 输出至P0显示 JMP AD_CONVERT ; 循环 HEX_TO_DEC: MOV R3, A ; 累加器A的值载入计数器R3中 CLR A ; 累加器A清0 COUNTUP: ADD A, #1 ; 累加器A增加1 DA A ; 十进制调整 DJNZ R3, COUNTUP ; 如果R3≠0,则累加器A继续增加 ; 直到R3=0,累加器A中的数值已成为十进制形式 RET SET_TEMP: CALL DELAY ; 消除抖动 JNB SW, $ ; 判断按钮开关有没有释放 CALL DELAY ; 消除抖动 CHECK_SET: CJNE R0, #0FFH, LOAD ; 是否取完数据表中的显示数据?取完时R0=0FFH MOV R0, #10 ; 重新装载R0=10 LOAD: MOV A, R0 ; 累加器A=R0 MOV DPTR, #TABLE ; DPTR指向数据表TABLE MOVC A, @A+DPTR ; 显示数据载入累加器A中 MOV P1, A ; 从P1输出显示 MOV TEMP, A ; 将数据保存在TEMP中 CALL DELAY_D ; 调用延时子程序(带按钮判断功能) JMP AD_CONVERT ; 循环 SET_DIS: CALL DELAY ; 消除抖动 JNB SW, $ ; 判断按钮开关有没有释放 CALL DELAY ; 消除抖动 DEC R0 ; R0减1 JMP CHECK_SET ; 跳到CHECK_SET继续 TIM0: ; Timer 0中断服务子程序 PUSH ACC ; 累加器A压栈 PUSH PSW ; PSW压栈 MOV TMOD, #01H ; Timer 0计数初始值重新装载 MOV TH0, #3CH CLR C ; 清进位C MOV A, TEMP ; 将TEMP中保存的数据载入累加器A SUBB A, #29 ; 累加器A–29 JNC SHUT ; 如果借位C=0,表示TEMP大,即门限温度较大 SETB DRIVE ; 否则说明实测温度高于设定温度,启动压缩机制冷 BACK: POP PSW ; PSW弹栈 POP ACC ; 累加器A弹栈 RETI ; 中断服务子程序结束 SHUT: CLR DRIVE ; 门限温度比较大,停止外设(压缩机)工作 JMP BACK ; 跳回BACK DELAY_D

文档评论(0)

wnqwwy20 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:7014141164000003

1亿VIP精品文档

相关文档