找回密码
 立即注册

QQ登录

只需一步,快速开始

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

谁能用汇编语言编写一个单片机温控系统?

[复制链接]
跳转到指定楼层
楼主
ID:191893 发表于 2017-4-22 15:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
300黑币
毕业设计老师要求不能用C语言编写

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

使用道具 举报

沙发
ID:96682 发表于 2017-4-22 21:07 | 只看该作者
老大难问题师傅们真的不知该从哪下手
回复

使用道具 举报

板凳
ID:192412 发表于 2017-4-22 21:30 | 只看该作者
明天才开始学
回复

使用道具 举报

地板
ID:155507 发表于 2017-4-22 21:50 | 只看该作者
  1. ;基于18B20的51单片机温度控制器汇编程序

  2. DQ        EQU        P3.0        ;1820数据端
  3. ST        EQU        P1.1        ;设置键
  4. UP        EQU        P1.2        ;加一键
  5. DN        EQU        P1.0        ;减一键
  6. RISE        EQU        P2.0        ;加温位
  7. DEL_V        EQU        30H        ;延时值
  8. WAIT_V        EQU        31H        ;
  9. LOOP_V        EQU        32H        ;循环次数
  10. TEM_L        EQU        33H        ;低位读数
  11. TEM_H        EQU        34H        ;高位读数
  12. TEM_L1        EQU        35H        ;显示值1
  13. TEM_L2        EQU        36H        ;显示值2
  14. TEM_H1        EQU        37H        ;显示值3
  15. TEM_H2        EQU        38H        ;显示值4
  16. DAT        EQU        39H        ;将学入1820的数据
  17. R_DAT        EQU        40H        ;从1820读出的值
  18. SET_T1        EQU        41H        ;温度设定值高位
  19. SET_T2        EQU        42H        ;温度设定值中位
  20. SET_T3        EQU        43H        ;温度设定值低位
  21. HIGH1        EQU        44H        ;高温上限
  22. HIGH2        EQU        45H
  23. HIGH3        EQU        46H
  24. LOW1        EQU        47H        ;低温下限
  25. LOW2        EQU        48H
  26. LOW3        EQU        49H
  27. SET_N        EQU        50H        ;设置状态的闪烁次数
  28. DIS_V        EQU        51H        ;需要显示的值
  29. WARN        EQU        52H        ;低温报警极限
  30. CTER1        EQU        54H        ;
  31. CTER2        EQU        R3
  32. FLAG EQU R2        ;显示标志
  33. CONTER        EQU        53H        ;闪烁频率调节值
  34. SCLK        EQU        P1.3        ;74164时钟输入
  35. IO        EQU        P3.3        ;74164数据输入
  36. SET_F        BIT        00H        ;设置标志
  37. FLASH        BIT        01H        ;闪烁标志
  38. FIRST        BIT        02H        ;首次标志
  39. WARN_F        BIT        P0.2        ;报警位
  40. WARN_N        EQU        R1        ;报警位被置低的次数
  41. ADD_L        BIT        P0.0        ;加温位(加温LED)
  42. DOWN_L        BIT        P0.1        ;降温位(降温LED)

  43. ORG        0000H
  44. AJMP        MAIN
  45. ORG        000BH
  46. LJMP        INT
  47. ORG        0100H
  48. MAIN:        MOV        FLAG,#0
  49. SETB        FIRST
  50. CLR        SET_F
  51. SETB        P3.7
  52. SETB        WARN_F
  53. MOV        WARN_N,#0
  54. MOV        CONTER,#140
  55. MOV        TMOD,#01H
  56. MOV        TH0,#0FCH
  57. MOV        TL0,#18H
  58. MOV        CTER1,#1
  59. MOV        CTER2,#123
  60. SETB        EA
  61. SETB        ET0
  62. CLR        TR0
  63. MOV        SET_T1,#3
  64. MOV        SET_T2,#6
  65. MOV        SET_T3,#0
  66. MOV        HIGH1,#3
  67. MOV        HIGH2,#6
  68. MOV        HIGH3,#5
  69. MOV        LOW1,#3
  70. MOV        LOW2,#5
  71. MOV        LOW3,#5
  72. MOV        WARN,#33H
  73. ;LCALL        ADOPT
  74. LCALL        RESET        ;先转换一次
  75. MOV        DAT,#0CCH
  76. LCALL        WRITE
  77. MOV        DAT,#44H
  78. LCALL        WRITE
  79. LCALL        DELAY1S
  80. AGAIN:        CLR        TR0
  81. LCALL        READ_T        ;读温度
  82. SETB        TR0
  83. LCALL        WORK        ;进行数值处理
  84. LCALL        JUDGE        ;判断温度是否超界
  85. INC        CTER1        ;防止误判寄存器1
  86. JB        FIRST,CON13
  87. LCALL        CONFIG        ;判断温度是否低于报警值
  88. CON13:        JB        ST,CON
  89. LCALL        K_DEL
  90. JB        ST,CON
  91. JNB        ST,$
  92. MOV        SET_N,#20
  93. SETB        SET_F
  94. LCALL        SET_T        ;进行温度值设置
  95. CLR        SET_F
  96. CON:        LCALL        DELAY1S
  97. AJMP        AGAIN
  98. ;*******************************
  99. CONFIG:        MOV        A,TEM_H2
  100. SWAP        A
  101. ORL        A,TEM_L1
  102. SUBB        A,WARN
  103. JNC        NORMAL
  104. INC        WARN_N        ;防止误报警
  105. CJNE        WARN_N,#5,NORMAL
  106. MOV        WARN_N,#0
  107. CLR        WARN_F
  108. NORMAL:        RET

  109. ;********************************
  110. JUDGE:        MOV        A,HIGH1        ;判断温度是否出界
  111. CJNE        A,TEM_H2,JUDGE1
  112. AJMP        JUDGE2
  113. JUDGE1:        CLR        C
  114. SUBB        A,TEM_H2
  115. JNC        JUDGE3
  116. AJMP        DOWN_T
  117. JUDGE2:        MOV        A,HIGH2
  118. CJNE        A,TEM_L1,JUDGE4
  119. AJMP        JUDGE5
  120. JUDGE4:        CLR        C
  121. SUBB        A,TEM_L1
  122. JNC        JUDGE3
  123. AJMP        DOWN_T
  124. JUDGE5:        MOV        A,HIGH3
  125. CJNE        A,TEM_L2,JUDGE6
  126. AJMP        JUDGE3
  127. JUDGE6:        CLR        C
  128. SUBB        A,TEM_L2
  129. JNC        JUDGE3
  130. DOWN_T:        CLR        RISE
  131. CLR        DOWN_L
  132. SETB        ADD_L
  133. SETB        WARN_F
  134. MOV        A,CTER2
  135. CJNE        A,CTER1,FALSE
  136. CLR        FIRST
  137. FALSE:        MOV        CTER2,CTER1
  138. INC        CTER2
  139. RET
  140. JUDGE3:        MOV        A,TEM_H2
  141. CJNE        A,LOW1,JUDGE7
  142. AJMP        JUDGE8
  143. JUDGE7:        CLR        C
  144. SUBB        A,
  145. LOW1
  146. JNC        JUDGE9
  147. AJMP        ADD_T
  148. JUDGE8:        MOV        A,TEM_L1
  149. CJNE        A,LOW2,JUDGE10
  150. AJMP        JUDGE11
  151. JUDGE10:CLR        C
  152. SUBB        A,LOW2
  153. JNC        JUDGE9
  154. AJMP        ADD_T
  155. JUDGE11:MOV        A,TEM_L2
  156. CJNE        A,LOW3,JUDGE12
  157. AJMP        JUDGE9
  158. JUDGE12:CLR        C
  159. SUBB        A,LOW3
  160. JNC        JUDGE9
  161. ADD_T:        SETB        RISE
  162. SETB        DOWN_L
  163. CLR        ADD_L
  164. JUDGE9:        RET

  165. ;********************************
  166. SET_T:        ;MOV        TEM_H1,#0        ;温度设置子程序
  167. MOV        TEM_H2,SET_T1
  168. MOV        TEM_L2,SET_T3
  169. MOV        TEM_L1,SET_T2
  170. JNB        SET_F,SET_OK
  171. JB        ST,CON1
  172. LCALL        K_DEL
  173. JB        ST,CON1
  174. JNB        ST,$
  175. SET_OK:        LCALL        ADOPT
  176. SETB        WARN_F
  177. SETB        FIRST
  178. RET
  179. CON1:        JB        UP,CON2
  180. LCALL        K_DEL
  181. JB        UP,CON2
  182. MOV        SET_N,#20
  183. JNB        UP,$
  184. MOV        A,SET_T3
  185. ADD        A,#5
  186. CJNE        A,#0AH,CON3
  187. MOV        SET_T3,#0
  188. AJMP        CON4
  189. CON3:        MOV        SET_T3,#5
  190. AJMP        SET_T
  191. CON4:        MOV        A,SET_T2
  192. INC        A
  193. CJNE        A,#0AH,CON5
  194. MOV        SET_T2,#0
  195. AJMP        CON6
  196. CON5:        MOV        SET_T2,A
  197. AJMP        SET_T
  198. CON6:        MOV        A,SET_T1
  199. INC        A
  200. CJNE        A,#0AH,CON7
  201. MOV        SET_T1,#0
  202. MOV        SET_T2,#0
  203. MOV        SET_T3,#0
  204. AJMP        SET_T
  205. CON7:        MOV        SET_T1,A
  206. CON2:        JB        DN,SET_T
  207. LCALL        K_DEL
  208. JB        DN,SET_T
  209. MOV        SET_N,#20
  210. JNB        DN,$
  211. MOV        A,SET_T3
  212. ADD        A,#5
  213. CJNE        A,#0AH,CON8
  214. MOV        SET_T3,#0
  215. AJMP        SET_T
  216. CON8:        MOV        SET_T3,#5
  217. CON9:        MOV        A,SET_T2
  218. DEC        A
  219. CJNE        A,#0FFH,CON10
  220. MOV        SET_T2,#9
  221. AJMP        CON11
  222. CON10:        MOV        SET_T2,A
  223. AJMP        SET_T
  224. CON11:        MOV        A,SET_T1
  225. DEC        A
  226. CJNE        A,#0FFH,CON12
  227. MOV        SET_T1,#9
  228. MOV        SET_T2,#9
  229. MOV        SET_T3,#5
  230. AJMP        SET_T
  231. CON12:        MOV        SET_T1,A
  232. AJMP        SET_T

  233. ;*******************************
  234. ADOPT:        MOV        A,SET_T3        ;计算高温和低温下限子程序
  235. ADD        A,#5
  236. CJNE        A,#0AH,CO3
  237. MOV        HIGH3,#0
  238. AJMP        CO4
  239. CO3:        MOV        HIGH3,#5
  240. MOV        HIGH2,SET_T2
  241. MOV        HIGH1,SET_T1
  242. AJMP        CO9
  243. CO4:        MOV        A,SET_T2
  244. INC        A
  245. CJNE        A,#0AH,CO5
  246. MOV        HIGH2,#0
  247. AJMP        CO6
  248. CO5:        MOV        HIGH2,A
  249. MOV        HIGH1,SET_T1
  250. AJMP        CO9
  251. CO6:        MOV        A,SET_T1
  252. INC        A
  253. CJNE        A,#0AH,CO7
  254. MOV        HIGH1,#9
  255. MOV        HIGH2,#9
  256. MOV        HIGH3,#9
  257. AJMP        CO9
  258. CO7:        MOV        HIGH1,A
  259. CO9:        MOV        A,SET_T3
  260. ADD        A,#5
  261. CJNE        A,#0AH,CO8
  262. MOV        LOW3,#0
  263. MOV        LOW1,SET_T1
  264. MOV        LOW2,SET_T2
  265. AJMP        CO13
  266. CO8:        MOV        LOW3,#5
  267. MOV        A,SET_T2
  268. DEC        A
  269. CJNE        A,#0FFH,CO10
  270. MOV        LOW2,#9
  271. AJMP        CO11
  272. CO10:        MOV        LOW2,A
  273. MOV        LOW1,SET_T1
  274. AJMP        CO13
  275. CO11:        MOV        A,SET_T1
  276. DEC        A
  277. CJNE        A,#0FFH,CO12
  278. MOV        LOW1,#0
  279. MOV        LOW2,#0
  280. MOV        LOW3,#0
  281. AJMP        CO13
  282. CO12:        MOV        LOW1,A
  283. CO13:        MOV        A,LOW1        ;计算报警温度
  284. SWAP        A
  285. ORL        A,LOW2
  286. DEC        A
  287. MOV        WARN,A
  288. ANL        A,#0FH
  289. CJNE        A,#0FH,CO14
  290. MOV        A,WARN
  291. SUBB        A,#6
  292. MOV        WARN,A
  293. CO14:        MOV        A,WARN
  294. DEC        A
  295. MOV        WARN,A
  296. ANL        A,#0FH
  297. CJNE        A,#0FH,CO15
  298. MOV        A,WARN
  299. SUBB        A,#6
  300. MOV        WARN,A
  301. CO15:        RET

  302. ;*******************************
  303. WORK:        MOV        A,TEM_L        ;将读出的值进行处理得到显示值
  304. ANL        A,#0FH
  305. MOV        DPTR,#TAB1
  306. MOVC        A,@A+DPTR
  307. MOV        TEM_L2,A
  308. LOOP4:        MOV        A,TEM_L
  309. ANL        A,#0F0H
  310. ORL        A,TEM_H
  311. SWAP        A
  312. MOV        B,#100
  313. DIV        AB
  314. MOV        TEM_H1,A
  315. MOV        A,B
  316. MOV        B,#10
  317. DIV        AB
  318. MOV        TEM_H2,A
  319. MOV        TEM_L1,B
  320. RET

  321. ;*****************************
  322. RESET:        SETB        DQ
  323. NOP
  324. NOP
  325. CLR        DQ
  326. MOV        DEL_V,#55
  327. LCALL        DELAY
  328. SETB        DQ
  329. MOV        WAIT_V,#18
  330. LOOP1:        MOV        DEL_V,#6
  331. LCALL        DELAY
  332. JNB        DQ,R_
  333. OK
  334. DJNZ        WAIT_V,RESET
  335. R_OK:        ;SETB        TR0
  336. MOV        DEL_V,#50        ;4444
  337. LCALL        DELAY
  338. ;CLR        TR0
  339. RET

  340. ;********************************
  341. WRITE:        MOV        A,DAT
  342. MOV        LOOP_V,#8
  343. LOOP2:        SETB        DQ
  344. NOP
  345. NOP
  346. CLR        DQ
  347. NOP
  348. NOP
  349. RRC        A
  350. MOV        DQ,C
  351. MOV        DEL_V,#7
  352. LCALL        DELAY
  353. DJNZ        LOOP_V,LOOP2
  354. SETB        DQ
  355. NOP
  356. NOP
  357. NOP
  358. RET

  359. ;**********************************
  360. READ:        MOV        LOOP_V,#8
  361. LOOP3:        SETB        DQ
  362. NOP
  363. NOP
  364. CLR        DQ
  365. NOP
  366. NOP
  367. SETB        DQ
  368. NOP
  369. NOP
  370. MOV        C,DQ
  371. RRC        A
  372. MOV        DEL_V,#7
  373. LCALL        DELAY
  374. DJNZ        LOOP_V,LOOP3
  375. MOV        R_DAT,A
  376. RET

  377. ;***********************************
  378. READ_T:        LCALL        RESET
  379. MOV        DAT,#0CCH
  380. LCALL        WRITE
  381. MOV        DAT,#0BEH
  382. LCALL        WRITE
  383. LCALL        READ
  384. MOV        TEM_L,R_DAT
  385. LCALL        READ
  386. MOV        TEM_H,R_DAT
  387. LCALL        RESET
  388. MOV        DAT,#0CCH
  389. LCALL        WRITE
  390. MOV        DAT,#044H
  391. LCALL        WRITE
  392. RET

  393. ;***********************************
  394. DELAY:        MOV        R6,DEL_V
  395. DEL1:        MOV        R7,#5
  396. DJNZ        R7,$
  397. DJNZ        R6,DEL1
  398. RET

  399. ;**********************************
  400. DELAY1S:MOV        R5,#10
  401. DEL3:        MOV        R6,#200
  402. DEL2:        MOV        R7,#200
  403. DJNZ        R7,$
  404. DJNZ        R6,DEL2
  405. DJNZ        R5,DEL3
  406. RET

  407. ;**********************************
  408. K_DEL:        MOV R6,#100
  409. DEL4:        MOV R7,#50
  410. DJNZ R7,$
  411. DJNZ R6,DEL4
  412. RET

  413. ;***********************************
  414. INT:        PUSH        ACC
  415. MOV        TH0,#0F8H
  416. MOV        TL0,#1FH
  417. CJNE        FLAG,#0,NEXT
  418. MOV        FLAG,#1
  419. MOV        A,TEM_L1
  420. MOV        DPTR,#TAB
  421. MOVC        A,@A+DPTR
  422. ANL        A,#7FH
  423. MOV        DIS_V,A
  424. SETB        P3.4
  425. LCALL        ENABLE
  426. CLR        P3.5
  427. AJMP        DISPLAY
  428. NEXT:        CJNE        FLAG,#1,NEXT2
  429. MOV        FLAG,#2
  430. MOV        A,TEM_L2
  431. MOV        DPTR,#TAB
  432. MOVC        A,@A+DPTR
  433. MOV        DIS_V,A
  434. SETB        P3.5
  435. LCALL        ENABLE
  436. CLR        P3.6
  437. AJMP        DISPLAY
  438. NEXT2:        MOV        FLAG,#0
  439. MOV        A,TEM_H2
  440. CJNE        A,#0,DIS
  441. MOV        A,#10
  442. DIS:        MOV        DPTR,#TAB
  443. MOVC        A,@A+DPTR
  444. MOV        DIS_V,A
  445. SETB        P3.6
  446. LCALL        ENABLE
  447. CLR        P3.4
  448. DISPLAY:JNB        SET_F,NOTOVER
  449. JB        FLASH,N_FLA
  450. ORL        P3,#70H
  451. N_FLA:        DJNZ        CONTER,NOTOVER
  452. MOV        CONTER,#140
  453. CPL        FLASH
  454. DJNZ        SET_N,NOTOVER
  455. CLR        SET_F
  456. NOTOVER:POP        ACC
  457. RETI

  458. ;*****************************
  459. ENABLE:        CLR        SCLK
  460. MOV        A,DIS_V
  461. MOV        R4,#8
  462. ENAB1:        RRC        A
  463. CLR        SCLK
  464. NOP
  465. NOP
  466. MOV        IO,C
  467. NOP
  468. NOP
  469. SETB        SCLK
  470. DJNZ        R4,ENAB1
  471. RET

  472. ;*****************************
  473. ORG 0900H
  474. TAB:        DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH
  475. TAB1:        DB 0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9
  476. END



复制代码
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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