📄 nuanfeng.asm
字号:
JMP SD1
BS 6,DATA
JMP SD2
SD1:
BC 6,DATA
SD2:
BC 6,WR
;NOP
;NOP
CALL DELAY2
BS 6,WR
RRC RX
DJZ DCNT1
JMP J4
RET
;---------------------
;入口:BINARY ;BINARY<0X64
;出口:BCD
;BCD_CNT
;-------------------
BINARY_BCD:
CLR BCD
MOV A,@8
MOV BCD_CNT,A
BCD_L:
CLRA
BC 3,0
RLC BINARY
RLC BCD
JBC BCD,4
MOV A,@6
ADD A,BCD
DAA
MOV BCD,A
DJZ BCD_CNT
JMP BCD_L
RET
;=====================================================================
;入口RAM地址R4,字型入口B,用到寄存器,DCNT1,DCNT2,B,B3
;
;=====================================================================
WRITECHAR: MOV A,B
MOV BINARY,A
CALL BINARY_BCD
MOV A,BCD
MOV YU,A ;将待显示的数据放在YU中,没有冲突
AND A,@0XF
MOV B,A
MOV A,@D0+5
MOV R4,A
CALL WRITE
SWAPA YU
AND A,@0XF
MOV B,A
MOV A,@D0+2 ;写个位
MOV R4,A
CALL WRITE
RET
ST0: MOV A,@0B110
MOV R0,A
INC R4
MOV A,@0B101
MOV R0,A
INC R4
MOV A,@0B110
MOV R0,A
RET
ST1: MOV A,@0B000
MOV R0,A
INC R4
MOV A,@0B000
MOV R0,A
INC R4
MOV A,@0B110
MOV R0,A
RET
ST2: MOV A,@0B010
MOV R0,A
INC R4
MOV A,@0B111
MOV R0,A
INC R4
MOV A,@0B100
MOV R0,A
RET
ST3: MOV A,@0B000
MOV R0,A
INC R4
MOV A,@0B111
MOV R0,A
INC R4
MOV A,@0B110
MOV R0,A
RET
ST4: MOV A,@0B100
MOV R0,A
INC R4
MOV A,@0B010
MOV R0,A
INC R4
MOV A,@0B110
MOV R0,A
RET
ST5: MOV A,@0B100
MOV R0,A
INC R4
MOV A,@0B111
MOV R0,A
INC R4
MOV A,@0B010
MOV R0,A
RET
ST6: MOV A,@0B110
MOV R0,A
INC R4
MOV A,@0B111
MOV R0,A
INC R4
MOV A,@0B010
MOV R0,A
RET
ST7: MOV A,@0B000
MOV R0,A
INC R4
MOV A,@0B100
MOV R0,A
INC R4
MOV A,@0B110
MOV R0,A
RET
ST8: MOV A,@0B110
MOV R0,A
INC R4
MOV A,@0B111
MOV R0,A
INC R4
MOV A,@0B110
MOV R0,A
RET
ST9: MOV A,@0B100
MOV R0,A
INC R4
MOV A,@0B111
MOV R0,A
INC R4
MOV A,@0B110
MOV R0,A
RET
;======================================================================================
;产生蜂鸣器,LED等的时间,和0.5小时的定时时间
;======================================================================================
SYSTIME: JBS FLAG,FLED
JMP SYSBELL
BC FLAG,FLED
MOV A,@10
MOV R200MS,A
MOV A,@30
MOV R15S,A
MOV A,@60
MOV R30S,A
BS P5,LED
BS P6,BELL
SYSBELL: JBS FLAG,F33MSS
JMP SYSLED
BC FLAG,F33MSS
DJZ R200MS
JMP SYSLED
BC P6,BELL
SYSLED: JBS FLAG,F05S1
RET
BC FlAG,F05S1
DJZ R15S
JMP SYSOFF
BC P5,LED
SYSOFF: JBC FLAG1,FKO ;加热继电器关30S后,风扇关
RET
DJZ R30S
RET
BC P6,FS
MOV A,@60
MOV R30S,A
RET
;===============================================================================
;显示每0.25s刷新显示
MAINDISPLAY:
JBS FLAG,F250MS
RET
BC FLAG,F250MS
; JBS FLAG1,FKO ;开还是关
; JMP SWITCHISOFF
BS D0+10,0
BS D0+11,2
MOV A,STIME
AND A,@0xf
JBS R3,Z
JMP CLRCLOCK ;清楚时钟符号
BC D0+9,2
JMP SWITCHISON
CLRCLOCK:BS D0+9,2
SWITCHISON: JBS FLAG1,F1
JMP SOFF ;风扇摇头显示
SON: BS D0+9,1 ;K11
BS D0+10,1 ;K9
BC D0+10,2 ;K10
BC D0+9,0 ;K12
BC FLAG1,F1
JMP MD0;1
SOFF: BC D0+9,1 ;K11
BC D0+10,1 ;K9
BS D0+10,2 ;K10
BS D0+9,0 ;K12
BS FLAG1,F1
MD0: JBS FLAG1,FKO ;开还是关
JMP SWITCHISOFF
;------------------------------加热时光条显示
MD1: JBS FLAG,F05S
JMP DISPLCD
BC FLAG,F05S
; MOV A,P6 ;原来样品没有闪烁,所以取消闪烁
; AND A,@3
; JBC R3,Z
; JMP HEATOFF ;没有加热
;
; JBS FLAG1,F2
; JMP HEATOFF ;亮灭闪烁
; HEATON:BC FLAG1,F2
; BS D0+11,1
; BS D0+11,0
; JBS P6,1
; BC D0+11,1
; JBS P6,0
; BC D0+11,0
; JMP MD2
;
; HEATOFF:BS FLAG1,F2
; BC D0+11,1
; BC D0+11,0
;----------------------------------设置时候闪烁
MD2: MOV A,FTIMES
JBC R3,Z ;为0退出
JMP DISPREALTEMP ;显示实际温度
JBS FLAG1,FTEMP
JMP FLASHTIME
FLASHTEMP:JBS FLAG1,F3
JMP FTOFF
FTON: BC FLAG1,F3
MOV A,STEMP
MOV B,A
CALL WRITECHAR
BS D0+2,0;K7,TEMP
DJZ FTIMES
JMP DISPLCD
FTOFF: BS FLAG1,F3
CLR D0+2 ;不显示TEMP,和设定的温度
CLR D0+3
CLR D0+4
CLR D0+5
CLR D0+6
CLR D0+7
BS D0+2,0;K7,TEMP
JMP DISPLCD
FLASHTIME:JBS FLAG1,FTIME
JMP DISPREALTEMP;DISPLCD; ERROR,正常不会出现这种情况
JBS FLAG1,F4
JMP FTIOFF
FTION: BC FLAG1,F4
MOV A,STIME
AND A,@0XF
CALL TIMETABLE
MOV B,A
CALL WRITECHAR
BS D0+5,0;K8,TIME
;BS D0+9,2;显示时钟符号
BS D0+4,0;显示小数点
DJZ FTIMES
JMP DISPLCD
FTIOFF: BS FLAG1,F4
CLR D0+2
CLR D0+3
CLR D0+4
CLR D0+5
CLR D0+6
CLR D0+7
BS D0+5,0;K8,TIME
;BS D0+9,2;显示时钟符号
JMP DISPLCD
SETON: MOV A,STIME
AND A,@0XF
CALL TIMETABLE
CALL WRITECHAR
;===========================================================
;关的时候只显示,实际温度
SWITCHISOFF: MOV A,@D0
MOV R4,A
JBS P6,FS
MOV A,@12
JBC P6,FS
MOV A,@9
MOV DIV1,A
CLR R0
INC R4
DJZ DIV1
JMP $-3
BC D0+9,2
BC D0+10,0
CLR D0+11
DISPREALTEMP: MOV A,TEMP
MOV B,A
CALL WRITECHAR
;============================================================
;刷新LCD所有单元
;============================================================
DISPLCD: MOV A,@5
MOV RX,A
CALL SENDMODE
MOV A,@0
MOV RX,A
CALL SENDADDRESS
MOV A,@12
MOV DCNT2,A
MOV A,@D0
MOV R4,A
DISW: MOV A,R0
INC R4
MOV RX,A
CALL SENDDATA
DJZ DCNT2
JMP DISW
RET
;DELAY1: NOP
;DELAY2: NOP
; RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -