基于18B20的单片机课程设计报告(含汇编程序)(2)

2021-09-24 17:12

子程序清单:

1. 2. 3. 获得原码子程序 温度数据转化子程序

中断子程序(温度上限子程序) 4. 获得显示段码子程序 5. 显示子程序

6. 18b20初始化子程序 7. 18b20读取子程序 8. 18b20写入子程序 9.

温度下限子程序

DQ BIT P2.3 FLAG1 BIT 00H SIGN BIT 01H F_SIGN BIT 02H MSB EQU 30H LSB EQU 31H INTEG EQU 32H DECIM EQU 33H SEG_S EQU 34H SEG_I3 EQU 35H SEG_I2 EQU 36H SEG_I1 EQU 37H SEG_D1 EQU 38H SEG_D2 EQU 39H SEG_O EQU 3AH SEG_C EQU 3BH LOCAT EQU 3CH T_ALARM EQU 3DH L_ALARM EQU 3EH ALARM3 EQU 41H ALARM2 EQU 42H ALARM1 EQU 43H CURERNT3 EQU 45H CURERNT2 EQU 46H CURERNT1 EQU 47H

ORG 0000H AJMP MAIN

基于18b20的电子温度计课程设计,可用两位小数显示开式,华氏,摄氏温标,三个按键。可设置上限,下限报警。程序均经过上电调试。(不含硬件图,仅供参考。)

ORG 000BH LJMP IT0P

ORG 0060H

MAIN: MOV SP,#77H

SETB IT0 SETB EX0

MOV DPTR,#TABLE MOV R0,#38H MOV R1,#30H CLEAR: MOV @R1,#00H INC R1

DJNZ R0,CLEAR

MOV 60H,#50H MOV 61H,#63H MOV LOCAT,#34H MOV T_ALARM,#30 MOV L_ALARM,#18 MOV INTEG,#25

LOOP: CLR EA LCALL INIT_1820 LCALL GET_TEMPER LCALL DATA_PROC

JNB P3.1,F_EN AJMP F_NOT F_EN: LCALL DISPLAY JNB P3.1,F_EN MOV A,LOCAT XCH A,60H XCH A,61H MOV LOCAT,A

F_NOT: CLR C CLR EA

MOV A,L_ALARM CJNE A,INTEG,NEXTP LJMP NEXT2 NEXTP: JNC LALARM SETB P2.4

基于18b20的电子温度计课程设计,可用两位小数显示开式,华氏,摄氏温标,三个按键。可设置上限,下限报警。程序均经过上电调试。(不含硬件图,仅供参考。)

LJMP NEXT2 LALARM: CLR P2.4 AJMP SAFE NEXT2: CLR C

MOV A,T_ALARM CJNE A,INTEG,NEXT AJMP ALARM NEXT: JC ALARM SETB P2.4 AJMP SAFE ALARM: CLR P2.4

SAFE: JB P3.0 ,KILL LCALL L_TEMP KILL: SETB EA

LCALL SEG_GEN LCALL DISPLAY AJMP LOOP

;*********************************** ; 上限温度报警程序(外部中断0) ; 显示40H-47H 内容

;***********************************

IT0P: PUSH LOCAT PUSH ACC PUSH PSW PUSH 00H

MOV CURERNT3,SEG_I3 MOV CURERNT2,SEG_I2 MOV CURERNT1,SEG_I1 MOV R0,#210 START: MOV B,#100 MOV A,T_ALARM DIV AB

MOVC A,@A+DPTR MOV ALARM3,A MOV A,B MOV B,#10 DIV AB

MOVC A,@A+DPTR MOV ALARM2,A

基于18b20的电子温度计课程设计,可用两位小数显示开式,华氏,摄氏温标,三个按键。可设置上限,下限报警。程序均经过上电调试。(不含硬件图,仅供参考。)

MOV A,B

MOVC A,@A+DPTR MOV ALARM1,A MOV LOCAT,#40H LCALL DISPLAY JNB P3.0,FUN1 JNB P3.1,FUN2 DJNZ R0,START POP 00H POP PSW POP ACC POP LOCAT RETI

FUN1: MOV R0,#210 ;等待3秒无键按下则返回主程序 INC T_ALARM STAY1: LCALL DISPLAY ;判断按键放开 JNB P3.0,STAY1 LJMP START FUN2: MOV R0,#210 DEC T_ALARM STAY2: LCALL DISPLAY JNB P3.1,STAY2 LJMP START RETI

;*************************** ; 下限温度报警程序

;*************************** L_TEMP:

WAITL: LCALL DISPLAY JNB P3.0,WAITL PUSH LOCAT

MOV CURERNT3,SEG_I3 MOV CURERNT2,SEG_I2 MOV CURERNT1,SEG_I1 MOV R0,#210 MOV LOCAT,#40H STARTL:MOV B,#100 MOV A,L_ALARM DIV AB

MOVC A,@A+DPTR MOV ALARM3,A MOV A,B MOV B,#10 DIV AB

基于18b20的电子温度计课程设计,可用两位小数显示开式,华氏,摄氏温标,三个按键。可设置上限,下限报警。程序均经过上电调试。(不含硬件图,仅供参考。)

MOVC A,@A+DPTR MOV ALARM2,A MOV A,B

MOVC A,@A+DPTR

MOV ALARM1,A LCALL DISPLAY JNB P3.1,FUNL1 JNB P3.2,FUNL2 DJNZ R0,STARTL LJMP ENDL

FUNL1: MOV R0,#210

INC L_ALARM STAYL1:LCALL DISPLAY JNB P3.1,STAYL1 LJMP STARTL FUNL2: MOV R0,#210 DEC L_ALARM STAYL2:LCALL DISPLAY JNB P3.2,STAYL2 LJMP STARTL ENDL: POP LOCAT CLR IE0 RET

;****************************** ;DS18b20复位初始化子程序

;**************************** INIT_1820:

SETB DQ NOP

CLR DQ

MOV R1,#3 ;546us低电平 TSR1: MOV R0,#88 DJNZ R0,$ DJNZ R1,TSR1

SETB DQ ;释放总线 NOP NOP NOP

MOV R0,#25H TSR2:

JNB DQ, TSR3;等待回应

基于18b20的电子温度计课程设计,可用两位小数显示开式,华氏,摄氏温标,三个按键。可设置上限,下限报警。程序均经过上电调试。(不含硬件图,仅供参考。)

DJNZ R0,TSR2 LJMP TSR4 TSR3:

SETB FLAG1 ;监测到18b20则把标志位置1 LJMP TSR5 TSR4:

基于18B20的单片机课程设计报告(含汇编程序)(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:08数据步循环与转移控制

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: