找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4228|回复: 6
打印 上一主题 下一主题
收起左侧

上下限温度控制器 汇编源码

[复制链接]
跳转到指定楼层
楼主
ID:80951 发表于 2015-5-24 10:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
完整代码下载:
程序.rar (15.65 KB, 下载次数: 80)

单片机汇编源程序:
  1. ;温度上下限自由设定,P3.5设置温度上限,P3.6设置温度下限,P3.7为温度增加键,每按一次温度加一度。
  2. ;当按P3.5时,数码管显示H00;当按P3.6时,数码管显示L00,设置温度范围为整数,不含小数。
  3. ORG 0000H
  4. TEMPER_L EQU 29H
  5. TEMPER_H EQU 28H
  6. FLAG1 EQU 38H;是否检测到DS18B20标志位
  7. bwei  equ 22h
  8. A_BIT EQU 20H ;数码管个位数存放内存位置
  9. B_BIT EQU 21H ;数码管十位数存放内存位置
  10. XS    EQU 30H
  11. MOV A,#00H
  12. MOV P2,A
  13. MOV R5,#01H
  14. MAIN:LCALL GET_TEMPER;调用读温度子程序
  15. MOV A,29H
  16. MOV B,A
  17. CLR C
  18. RLC A
  19. CLR C
  20. RLC A
  21. CLR C
  22. RLC A
  23. CLR C
  24. RLC A
  25. SWAP A
  26. MOV 31H,A
  27. MOV A,B
  28. MOV C,40H;将28H中的最低位移入C
  29. RRC A
  30. MOV C,41H
  31. RRC A
  32. MOV C,42H
  33. RRC A
  34. MOV C,43H
  35. RRC A
  36. MOV 29H,A
  37. LCALL DISPLAY;调用数码管显示子程序
  38. AJMP MAIN; 这是DS18B20复位初始化子程序
  39. INIT_1820:SETB P1.0
  40. NOP
  41. CLR P1.0;主机发出延时537微秒的复位低脉冲
  42. MOV R1,#3
  43. TSR1:MOV R0,#107
  44. DJNZ R0,$
  45. DJNZ R1,TSR1
  46. SETB P1.0;然后拉高数据线
  47. NOP
  48. NOP
  49. NOP
  50. MOV R0,#25H
  51. TSR2:JNB P1.0,TSR3;等待DS18B20回应
  52. DJNZ R0,TSR2
  53. LJMP TSR4 ; 延时
  54. TSR3:SETB FLAG1 ; 置标志位,表示DS1820存在
  55. LJMP TSR5
  56. TSR4:CLR FLAG1 ; 清标志位,表示DS1820不存在
  57. LJMP TSR7
  58. TSR5:MOV R0,#117
  59. TSR6:DJNZ R0,TSR6 ; 时序要求延时一段时间
  60. TSR7:SETB P1.0
  61. RET; 读出转换后的温度值
  62. GET_TEMPER:SETB P1.0
  63. LCALL INIT_1820;先复位DS18B20
  64. JB FLAG1,TSS2
  65. RET ; 判断DS1820是否存在?若DS18B20不存在则返回
  66. TSS2:MOV A,#0CCH ; 跳过ROM匹配
  67. LCALL WRITE_1820
  68. MOV A,#44H ; 发出温度转换命令
  69. LCALL WRITE_1820;这里通过调用显示子程序实现延时一段时间,等待AD转换结束,12位的话750微秒
  70. LCALL DISPLAY
  71. LCALL INIT_1820;准备读温度前先复位
  72. MOV A,#0CCH ; 跳过ROM匹配
  73. LCALL WRITE_1820
  74. MOV A,#0BEH ; 发出读温度命令
  75. LCALL WRITE_1820
  76. LCALL READ_18200; 将读出的温度数据保存到35H/36H
  77. RET;写DS18B20的子程序(有具体的时序要求)
  78. WRITE_1820:MOV R2,#8;一共8位数据
  79. CLR C
  80. WR1:CLR P1.0
  81. MOV R3,#6
  82. DJNZ R3,$
  83. RRC A
  84. MOV P1.0,C
  85. MOV R3,#23
  86. DJNZ R3,$
  87. SETB P1.0
  88. NOP
  89. DJNZ R2,WR1
  90. RET; 读DS18B20的程序,从DS18B20中读出两个字节的温度数据
  91. READ_18200:MOV R4,#2 ; 将温度高位和低位从DS18B20中读出
  92. MOV R1,#29H ; 低位存入29H(TEMPER_L),高位存入28H(TEMPER_H)
  93. RE00:MOV R2,#8;数据一共有8位
  94. RE01:CLR C
  95. SETB P1.0
  96. NOP
  97. NOP
  98. CLR P1.0
  99. NOP
  100. NOP
  101. NOP
  102. SETB P1.0
  103. MOV R3,#9
  104. RE10: DJNZ R3,RE10
  105. MOV C,P1.0
  106. MOV R3,#23
  107. RE20: DJNZ R3,RE20
  108. RRC A
  109. DJNZ R2,RE01
  110. MOV @R1,A
  111. DEC R1
  112. DJNZ R4,RE00
  113. RET
  114. DISPLAY:
  115. MOV A,29H;将29H中的十六进制数转换成10进制
  116. MOV R3,A
  117. CLR  C
  118. SUBB  A,50H;温度上限
  119. JNB   CY, T3
  120. SETB P1.2;风扇继电器关
  121. SETB P2.5;报警关
  122. MOV   A,R3
  123. CLR   C
  124. SUBB  A,60H;温度下限
  125. JB   CY, T2
  126. SETB P1.1;加热继电器关
  127. SETB P2.5;报警关
  128. SJMP XIANSHI
  129. T2:
  130. CLR   P1.1;加热继电器开
  131. CLR P2.5;报警开
  132. LJMP  XIANSHI
  133. T3:
  134. CLR P1.2;风扇继电器开
  135. CLR P2.5;报警开
  136. XIANSHI:
  137. LCALL SETT
  138. DISP:
  139. MOV A,R3
  140. MOV B,#100 ;10进制/10=10进制
  141. DIV AB
  142. mov bwei,a
  143. mov a,b
  144. mov b,#10
  145. div ab
  146. MOV B_BIT,A ;十位在A
  147. MOV A_BIT,B ;个位在B
  148. MOV R0,#4
  149. CLR C;多加的
  150. DPL1: MOV R1,#250 ;显示1000次
  151. DPLOP:
  152.         MOV DPTR,#NUMTAB
  153.         MOV A,bwei
  154.         MOVC A,@A+DPTR ;查通道的7段代码
  155.         MOV P0,A ;送出十位的7段代码
  156.         CLR P2.3 ;开通道显示        
  157.         ACALL D1MS ;显示1MS
  158.         SETB P2.3




  159. MOV DPTR,#NUMTAB1
  160. MOV A,A_BIT ;取个位数
  161. MOVC A,@A+DPTR ;查个位数的7段代码
  162. MOV P0,A ;送出个位的7段代码
  163. CLR P2.1 ;开个位显示
  164. ACALL D1MS ;显示1MS
  165. SETB P2.1
  166. MOV DPTR,#NUMTAB
  167. MOV A,B_BIT ;取十位数
  168. MOVC A,@A+DPTR ;查十位数的7段代码
  169. MOV P0,A ;送出十位的7段代码
  170. CLR P2.2 ;开十位显示        
  171. ACALL D1MS ;显示1MS
  172. SETB P2.2
  173. JC XSW;多加的
  174. MOV A,31H
  175. MOV B,#160
  176. DIV AB
  177. MOV XS,B
  178. XSW:MOV A,XS
  179. MOVC A,@A+DPTR
  180. MOV P0,A
  181. CLR P2.0
  182. ACALL D1MS
  183. SETB P2.0
  184. SETB C;多加的
  185. DJNZ R1,DPLOP ;250次没完循环
  186. DJNZ R0,DPL1 ;4个250次没完循环
  187. RET;1MS延时(按12MHZ算)
  188. D1MS: MOV R7,#80
  189. DJNZ R7,$
  190. RET
  191. D10MS:        MOV R6,#20
  192. LOOP:        MOV R7,#250
  193.         DJNZ R7,$
  194.         DJNZ R6,LOOP
  195.         RET
  196. D5MS:        MOV R6,#10
  197. LOOP1:        MOV R7,#250
  198.         DJNZ R7,$
  199.         DJNZ R6,LOOP1
  200.         RET
  201. NUMTAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,7FH,7FH,7FH,7FH,7FH,7FH
  202. NUMTAB1: DB 0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH

  203. SETT:        
  204. TH:        JNB P3.6,GS
  205.         JNB P3.5,GSU
  206.         LJMP DISP
  207. GS:        LCALL D10MS
  208.         JB P3.6,TH
  209.         SJMP BIAN3
  210. GSU:        LCALL D10MS
  211.         JB P3.5,TH
  212.         SJMP BIAN

  213. BIAN3:        MOV R1,#00
  214. BIAN1:        MOV P0,#38H
  215.         CLR P2.2
  216.         SETB P2.0
  217.         SETB P2.1
  218.         LCALL D5MS
  219.         MOV A,R1
  220.         MOV B,#10
  221.         DIV AB
  222.         MOV DPTR,#NUMTAB
  223.         MOVC A,@A+DPTR
  224.         MOV P0,A
  225.         CLR P2.1
  226.         SETB P2.0
  227.         SETB P2.2
  228.         LCALL D5MS
  229.         MOV A,B
  230.         MOV DPTR,#NUMTAB
  231.         MOVC A,@A+DPTR
  232.         MOV P0,A
  233.         CLR P2.0
  234.         SETB P2.1
  235.         SETB P2.2
  236.         LCALL D5MS
  237.         MOV 60H,R1
  238.         
  239.         JB P3.7,BIAN1
  240.         JNB P3.7,$
  241.         INC R1
  242.         SJMP BIAN1

  243. BIAN:        MOV R0,#00
  244. BIAN2:        MOV P0,#76H
  245.         CLR P2.2
  246.         SETB P2.0
  247.         SETB P2.1
  248.         LCALL D5MS
  249.         MOV A,R0
  250.         MOV B,#10
  251.         DIV AB
  252.         MOV DPTR,#NUMTAB
  253.         MOVC A,@A+DPTR
  254.         MOV P0,A
  255.         CLR P2.1
  256.         SETB P2.0
  257.         SETB P2.2
  258.         LCALL D5MS
  259.         MOV A,B
  260.         MOV DPTR,#NUMTAB
  261.         MOVC A,@A+DPTR
  262.         MOV P0,A
  263.         CLR P2.0
  264.         SETB P2.1
  265.         SETB P2.2
  266.         LCALL D5MS
  267.         MOV 50H,R0
  268.         
  269.         JB P3.7,BIAN2
  270.         JNB P3.7,$
  271.         INC R0
  272.         SJMP BIAN2
  273.         RET
  274. END

复制代码


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的积分奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:54731 发表于 2015-5-24 19:11 | 只看该作者
咋有是汇编,也不错学习一下
回复

使用道具 举报

板凳
ID:160550 发表于 2017-1-11 11:02 | 只看该作者
谢谢啦,好资料,51黑有你更精彩!!!
回复

使用道具 举报

地板
ID:161036 发表于 2017-1-12 09:29 | 只看该作者
请问版主,昨天在这个帖子里无意中点了“程序下载”窗口,没有下载程序。我的黒币怎么被扣了?既然被扣了之后想补下也下不了,或者还是被扣黒币。我觉得这样不合理。

评分

参与人数 1黑币 +30 收起 理由
admin + 30 补偿

查看全部评分

回复

使用道具 举报

5#
ID:161036 发表于 2017-1-15 16:47 | 只看该作者
nongqsong 发表于 2017-1-12 09:29
请问版主,昨天在这个帖子里无意中点了“程序下载”窗口,没有下载程序。我的黒币怎么被扣了?既然被扣了之 ...

谢谢版主!
回复

使用道具 举报

6#
ID:134697 发表于 2017-1-17 14:35 来自手机 | 只看该作者
汇编有的玩了,谢谢分享!
回复

使用道具 举报

7#
ID:264959 发表于 2018-6-4 10:27 | 只看该作者
为什么我在里面找不到程序呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表