📄 ds18b20-lcd.asm
字号:
CJNE A,#0,LC1 ;判断是否为结束码
RET
LC1: CALL WDATA ;写入数据
INC DPTR ;指针加1
JMP FILL ;继续填入字符
RET
;=========================================
CLR_LINE: ;清除该行 LCD 的字符
MOV R0,#24
CL1: MOV A,#' '
CALL WDATA
DJNZ R0,CL1
RET
DE: MOV R7,#250
DJNZ R7,$
RET
;============================================
WCOM: ;以8位控制方式将命令写至LCD
MOV P0,A ;写入命令
CLR LCD_RS ;RS=L,RW=L,D0-D7=指令码,E=高脉冲
CLR LCD_RW
SETB LCD_EN
ACALL DELAY1
CLR LCD_EN
RET
;=============================================
WDATA: ;以8位控制方式将数据写至LCD
MOV P0,A ;写入数据
SETB LCD_RS
CLR LCD_RW
SETB LCD_EN
CALL DE
CLR LCD_EN
CALL DE
RET
LCDP1: ;在LCD的第一行显示字符
PUSH ACC ;
MOV A,B ;设置显示地址
ADD A,#80H ;设置LCD的第一行地址
CALL WCOM ;写入命令
POP ACC ;由堆栈取出A
CALL WDATA ;写入数据
RET
;==============================================
BEEP_BL:
MOV R6,#100
BL2: CALL DEX1
CPL BEEP
DJNZ R6,BL2
MOV R5,#10
CALL DELAY
RET
DEX1: MOV R7,#180
DE2: NOP
DJNZ R7,DE2
RET
DELAY: ;(R5)*延时10MS
MOV R6,#50
DL1: MOV R7,#100
DJNZ R7,$
DJNZ R6,DL1
DJNZ R5,DELAY
RET
DELAY1: ;延时5MS
MOV R6,#25
DL2: MOV R7,#100
DJNZ R7,$
DJNZ R6,DL2
RET
main1: CLR A
MOV count1,A
MOV count2,A
MOV flag,A
CLR op
CLR P3.4
SETB EA
MOV TMOD,#0x11
SETB ET0
MOV TH0,#0xFF
MOV TL0,#0xE8
MOV iraddr1,#0xa3
MOV iraddr2,#0x3C
SETB TR0
MOV R7,TEMP_ZH
CALL sendirdata
mov r7,temppoint
call sendirdata
mov r7,TEMPHC
call sendirdata
using 0
timeint:
PUSH ACC
PUSH PSW
MOV TH0,#0xFF
MOV TL0,#0xE6
INC count2
MOV A,count2
JNZ INTER11
INC count1
INTER11: MOV A,flag
CJNE A,#0x01,INTER22
CPL op
SJMP INTER33
INTER22:CLR op
INTER33:MOV C,op
MOV P3.4,C
POP PSW
POP ACC
RETI
sendirdata:
MOV R6,0x07
MOV endcount1,#0x00
MOV endcount2,#0xE1
MOV flag,#0x01
CLR A
MOV count1,A
MOV count2,A
ir2: CLR C
MOV A,count2
SUBB A,endcount2
MOV A,count1
SUBB A,endcount1
JC ir2
MOV endcount1,#0x00
MOV endcount2,#0x75
CLR A
MOV flag,A
MOV count1,A
MOV count2,A
ir1: CLR C
MOV A,count2
SUBB A,endcount2
MOV A,count1
SUBB A,endcount1
JC ir1
MOV R6,iraddr1
CLR A
MOV R5,A
MOV R4,A
ir8: MOV endcount1,#0x00
MOV endcount2,#iraddr2
MOV flag,#0x01
CLR A
MOV count1,A
MOV count2,A
ir3: CLR C
MOV A,count2
SUBB A,endcount2
MOV A,count1
SUBB A,endcount1
JC ir3
MOV A,R6
MOV C,0xE0.7
RRC A
ADD A,ACC
MOV R3,A
CLR C
MOV A,R6
SUBB A,R3
JZ ir4
MOV endcount1,#0x00
MOV endcount2,#0x29
SJMP ir5
ir4: MOV endcount1,#0x00
MOV endcount2,#0x0F
ir5: CLR A
MOV flag,A
MOV count1,A
MOV count2,A
ir6: CLR C
MOV A,count2
SUBB A,endcount2
MOV A,count1
SUBB A,endcount1
JC ir6
MOV A,R6
MOV C,0xE0.7
RRC A
MOV R6,A
INC R5
CJNE R5,#0x00,ir7
INC R4
ir7: MOV A,R5
XRL A,#flag
ORL A,R4
JNZ ir8
MOV R6,iraddr2
CLR A
MOV R4,A
MOV R5,A
ir13: MOV endcount1,#0x00
MOV endcount2,#iraddr2
MOV flag,#0x01
CLR A
MOV count1,A
MOV count2,A
ir9: CLR C
MOV A,count2
SUBB A,endcount2
MOV A,count1
SUBB A,endcount1
JC ir9
MOV A,R6
MOV C,0xE0.7
RRC A
ADD A,ACC
MOV R3,A
CLR C
MOV A,R6
SUBB A,R3
JZ ir10
MOV endcount1,#0x00
MOV endcount2,#0x29
SJMP ir11
ir10: MOV endcount1,#0x00
MOV endcount2,#0x0F
ir11: CLR A
MOV flag,A
MOV count1,A
MOV count2,A
ir12: CLR C
MOV A,count2
SUBB A,endcount2
MOV A,count1
SUBB A,endcount1
JC ir12
MOV A,R6
MOV C,0xE0.7
RRC A
MOV R6,A
INC R5
CJNE R5,#0x00,ir14
INC R4
ir14: MOV A,R5
XRL A,#flag
ORL A,R4
JNZ ir13
MOV R6,0x07
CLR A
MOV R4,A
MOV R5,A
ir20: MOV endcount1,#0x00
MOV endcount2,#iraddr2
MOV flag,#0x01
CLR A
MOV count1,A
MOV count2,A
ir15: CLR C
MOV A,count2
SUBB A,endcount2
MOV A,count1
SUBB A,endcount1
JC ir15
MOV A,R6
MOV C,0xE0.7
RRC A
ADD A,ACC
MOV R3,A
CLR C
MOV A,R6
SUBB A,R3
JZ ir16
MOV endcount1,#0x00
MOV endcount2,#0x29
SJMP ir17
ir16: MOV endcount1,#0x00
MOV endcount2,#0x0F
ir17: CLR A
MOV flag,A
MOV count1,A
MOV count2,A
ir18: CLR C
MOV A,count2
SUBB A,endcount2
MOV A,count1
SUBB A,endcount1
JC ir18
MOV A,R6
MOV C,0xE0.7
RRC A
MOV R6,A
INC R5
CJNE R5,#0x00,ir19
INC R4
ir19: MOV A,R5
XRL A,#flag
ORL A,R4
JNZ ir20
MOV A,R7
CPL A
MOV R6,A
CLR A
MOV R4,A
MOV R5,A
ir26: MOV endcount1,#0x00
MOV endcount2,#iraddr2
MOV flag,#0x01
CLR A
MOV count1,A
MOV count2,A
ir21: CLR C
MOV A,count2
SUBB A,endcount2
MOV A,count1
SUBB A,endcount1
JC ir21
MOV A,R6
MOV C,0xE0.7
RRC A
ADD A,ACC
MOV R7,A
CLR C
MOV A,R6
SUBB A,R7
JZ ir22
MOV endcount1,#0x00
MOV endcount2,#0x29
SJMP ir23
ir22: MOV endcount1,#0x00
MOV endcount2,#0x0F
ir23: CLR A
MOV flag,A
MOV count1,A
MOV count2,A
ir24: CLR C
MOV A,count2
SUBB A,endcount2
MOV A,count1
SUBB A,endcount1
JC ir24
MOV A,R6
MOV C,0xE0.7
RRC A
MOV R6,A
INC R5
CJNE R5,#0x00,ir25
INC R4
ir25: MOV A,R5
XRL A,#flag
ORL A,R4
JNZ ir26
MOV endcount1,#0x00
MOV endcount2,#iraddr2
MOV flag,#0x01
CLR A
MOV count1,A
MOV count2,A
ir27: CLR C
MOV A,count2
SUBB A,endcount2
MOV A,count1
SUBB A,endcount1
JC ir27
CLR A
MOV flag,A
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -