he313sv1.asm
字号:
display17_7:
cp r19,r21
cpc r18,r20
brcc display17_8
cp r19,r23
cpc r18,r22
brcc display17_10
bld SystemByte, disptaoff
rjmp display17_11 ; 显示TA关闭的时间
display17_8:
cp r21,r23
cpc r20,r22
brcc display17_10
bld UserTrigger,disptbon
rjmp display17_11 ;显示TB开启的时间
display17_10:
bld setbyte, disptboff
display17_11:
lds r18,temp_r18
lds r19,temp_r19
lds r20,temp_r20
lds r21,temp_r21
lds r22,temp_r22
lds r23,temp_r23
sbrc UserTrigger,disptaon
rjmp display17_3
sbrc UserTrigger,disptbon
rjmp display17_9
sbrc SystemByte, disptaoff
rjmp display17_0
sbrc setbyte, disptboff
rjmp display17_4
display17_5:
sbrc setbyte,settimerA
rjmp Display17_2
sbrs setbyte,settimerB
rjmp display18
display17_6:
sbrc runbyte,TBRun
rjmp display17_4
display17_9:
cbr r19 , (1<<LEDTimer)
cbr r23 , (1<<LEDTimerOn)
cbr r20 , (1<<LEDDot1)
cbr r21 , (1<<LEDDot2)
lds r16 ,TBOnHourCnt
rcall NumberDisp
and r21 , r16
and r22 , r17
lds r16 , TBOnMinCnt
rcall NumberDisp
and r19 , r16
and r20 , r17
rjmp display90
display17_4:
cbr r20 , (1<<LEDDot1)
cbr r21 , (1<<LEDDot2)
cbr r19 , (1<<LEDTimer)
cbr r18 , (1<<LEDTimerOff)
lds r16 ,TBOffHourCnt
rcall NumberDisp
and r21 , r16
and r22 , r17
lds r16 , TBOffMinCnt
rcall NumberDisp
and r19 , r16
and r20 , r17
rjmp display90
display17_2:
sbrc runbyte,TARun
rjmp Display17_0
display17_3:
cbr r18 , (1<<LEDMountain)
cbr r23 , (1<<LEDTimerOn)
cbr r20 , (1<<LEDDot1)
cbr r21 , (1<<LEDDot2)
lds r16 ,TAOnHourCnt
rcall NumberDisp
and r21 , r16
and r22 , r17
lds r16 , TAOnMinCnt
rcall NumberDisp
and r19 , r16
and r20 , r17
rjmp display90
Display17_0:
cbr r20 , (1<<LEDDot1)
cbr r21 , (1<<LEDDot2)
cbr r18 , (1<<LEDMountain)
cbr r18 , (1<<LEDTimerOff)
lds r16 ,TAOffHourCnt
rcall NumberDisp
and r21 , r16
and r22 , r17
lds r16 , TAOffMinCnt
rcall NumberDisp
and r19 , r16
and r20 , r17
rjmp display90
Display18:
lds r16,dispshift
inc r16
sts dispshift,r16
Display18_0:
lds r16,dispshift
cpi r16,1
breq display19
cpi r16,2
brne display18_00
rjmp display17_1
display18_00:
cpi r16,3
breq display18_1
clr r16
sts dispshift,r16
rjmp display18
display18_1:
;------in temp display----
cbr r23 , (1<<LEDRealTemp)
cbr r18 , (1<<LEDSetTemp)
; cbr r22 , (1<<LEDHeater)
lds r16 , WaterTemp
rcall NumberDisp
and r21 , r16
and r22 , r17
lds r16,settempdefault
sbrs SetByte,SetSTS
lds r16 , SetTemp
rcall NumberDisp
and r19 , r16
and r20 , r17
rjmp Display20
Display19:
;----------in time display-------
lds r16 , TimeSecCnt
cbr r23 , (1<<LEDClock)
sbrc r16 , 0
cbr r20 , (1<<LEDDot1)
sbrc r16 , 0
cbr r21 , (1<<LEDDot2)
lds r16 , TimeHourCnt
rcall NumberDisp
and r21 , r16
and r22 , r17
lds r16 , TimeMinCnt
rcall NumberDisp
and r19 , r16
and r20 , r17
Display20:
sbrc SetByte , SetTimerB
cbr r19 , (1<<LEDTimer)
sbrc SetByte , SetTimerA
cbr r18 , (1<<LEDMountain)
; sbrc SetByte , SetTimerB
; cbr r23 , (1<<LEDTimerOn)
; sbrc SetByte , SetTimerA
; cbr r23 , (1<<LEDTimerOn)
; sbrc SetByte , SetTimerA
; cbr r18 , (1<<LEDTimerOff)
;------display timer/mountain/timeron/timeroff---
; sbrs SetByte , SetTimerA
; sbrc SetByte , SetTimerB
; rjmp Display21
; rjmp Display25
Display21:
; sbrs RunByte , TARun
; sbrc RunByte , TBRun
; rjmp Display22
; cbr r23 , (1<<LEDTimerOn)
; rjmp Display25
Display22:
; cbr r18 , (1<<LEDTimerOff)
Display25:
rjmp Display90
;-------------------------------------------------
Display30:
cpi r16 , 1
brne Display35
;--------Display set temp--------
cbr r23 , (1<<LEDRealTemp)
lds r16 , WaterTemp
rcall NumberDisp
and r21 , r16
and r22 , r17
sbrc BLinkbyte1,blink500ms
cbr r18 , (1<<LEDSetTemp)
sbrc KeyByte , KeySameOn
rjmp Display34
sbrs BlinkByte1 , Blink500ms
rjmp Display20
Display34:
lds r16 , SetTemp
rcall NumberDisp
and r19 , r16
and r20 , r17
rjmp Display20
Display35:
cpi r16 , 2
brne Display40
;------real time hour set-------
lds r16 , TimeMinCnt
rcall NumberDisp
and r19 , r16
and r20 , r17
sbrc BLinkbyte1,blink500ms
cbr r23 , (1<<LEDClock)
sbrc KeyByte , KeySameOn
rjmp display36
sbrs BlinkByte1 , Blink500ms
rjmp Display37
Display36:
lds r16 , TimeHourCnt
rcall NumberDisp
and r21 , r16
and r22 , r17
Display37:
cbr r20 , (1<<LEDDot1)
cbr r21 , (1<<LEDDot2)
rjmp Display90
Display40:
cpi r16 , 3
brne Display45
;-----in real time minute set---
lds r16 , TimeHourCnt
rcall NumberDisp
and r21 , r16
and r22 , r17
sbrc BLinkbyte1,blink500ms
cbr r23 , (1<<LEDClock)
sbrc KeyByte , KeySameOn
rjmp display41
sbrs BlinkByte1 , Blink500ms
rjmp Display37
display41:
lds r16 , TimeMinCnt
rcall NumberDisp
and r19 , r16
and r20 , r17
rjmp Display37
Display45:
cpi r16 , 4
brne Display50
;----------timer A on hour set-----
lds r16 , TAOnMinCnt
rcall NumberDisp
and r19 , r16
and r20 , r17
sbrs BLinkbyte1,blink500ms
rjmp display45_0
cbr r18 , (1<<LEDMountain)
cbr r23 , (1<<LEDTimerOn)
display45_0:
sbrc KeyByte , KeySameOn
rjmp display46
sbrs BlinkByte1 , Blink500ms
rjmp Display47
display46:
lds r16 , TAOnHourCnt
rcall NumberDisp
and r21 , r16
and r22 , r17
Display47:
cbr r20 , (1<<LEDDot1)
cbr r21 , (1<<LEDDot2)
rjmp Display90
Display50:
cpi r16 , 5
brne Display55
;----------timer A on minute set-----
lds r16 , TAOnHourCnt
rcall NumberDisp
and r21 , r16
and r22 , r17
sbrs BLinkbyte1,blink500ms
rjmp display51
cbr r18 , (1<<LEDMountain)
cbr r23 , (1<<LEDTimerOn)
display51:
sbrc KeyByte , KeySameOn
rjmp display52
sbrs BlinkByte1 , Blink500ms
rjmp Display47
display52:
lds r16 , TAOnMinCnt
rcall NumberDisp
and r19 , r16
and r20 , r17
rjmp Display47
Display55:
cpi r16 , 6
brne Display60
;----------timer A off hour set-----
lds r16 , TAOffMinCnt
rcall NumberDisp
and r19 , r16
and r20 , r17
sbrs BLinkbyte1,blink500ms
rjmp display56
cbr r18 , (1<<LEDMountain)
cbr r18 , (1<<LEDTimerOff)
display56:
sbrc KeyByte , KeySameOn
rjmp display56_0
sbrs BlinkByte1 , Blink500ms
rjmp Display57
display56_0:
lds r16 , TAOffHourCnt
rcall NumberDisp
and r21 , r16
and r22 , r17
Display57:
cbr r20 , (1<<LEDDot1)
cbr r21 , (1<<LEDDot2)
rjmp Display90
Display60:
cpi r16 , 7
brne Display65
;----------timer A Off minute set-----
lds r16 , TAOffHourCnt
rcall NumberDisp
and r21 , r16
and r22 , r17
sbrs BLinkbyte1,blink500ms
rjmp display61
cbr r18 , (1<<LEDMountain)
cbr r18 , (1<<LEDTimerOff)
display61:
sbrc KeyByte , KeySameOn
rjmp display62
sbrs BlinkByte1 , Blink500ms
rjmp Display57
display62:
lds r16 , TAOffMinCnt
rcall NumberDisp
and r19 , r16
and r20 , r17
rjmp Display57
Display65:
cpi r16 , 8
brne Display70
;----------timer B on hour set-----
lds r16 , TBOnMinCnt
rcall NumberDisp
and r19 , r16
and r20 , r17
sbrs BlinkByte1 , Blink500ms
rjmp Display67
cbr r19 , (1<<LEDTimer)
cbr r23 , (1<<LEDTimerOn)
lds r16 , TBOnHourCnt
rcall NumberDisp
and r21 , r16
and r22 , r17
Display67:
cbr r20 , (1<<LEDDot1)
cbr r21 , (1<<LEDDot2)
rjmp Display90
Display70:
cpi r16 , 9
brne Display75
;----------timer B on minute set-----
lds r16 , TBOnHourCnt
rcall NumberDisp
and r21 , r16
and r22 , r17
sbrs BlinkByte1 , Blink500ms
rjmp Display67
cbr r19 , (1<<LEDTimer)
cbr r23 , (1<<LEDTimerOn)
lds r16 , TBOnMinCnt
rcall NumberDisp
and r19 , r16
and r20 , r17
rjmp Display67
Display75:
cpi r16 , 10
brne Display80
;----------timer B off hour set-----
lds r16 , TBOffMinCnt
rcall NumberDisp
and r19 , r16
and r20 , r17
sbrs BlinkByte1 , Blink500ms
rjmp Display77
cbr r19 , (1<<LEDTimer)
cbr r18 , (1<<LEDTimerOff)
lds r16 , TBOffHourCnt
rcall NumberDisp
and r21 , r16
and r22 , r17
Display77:
cbr r20 , (1<<LEDDot1)
cbr r21 , (1<<LEDDot2)
rjmp Display90
Display80:
cpi r16 , 11
brne Display85
;----------timer B Off minute set-----
lds r16 , TBOffHourCnt
rcall NumberDisp
and r21 , r16
and r22 , r17
sbrs BlinkByte1 , Blink500ms
rjmp Display77
cbr r19 , (1<<LEDTimer)
cbr r18 , (1<<LEDTimerOff)
lds r16 , TBOffMinCnt
rcall NumberDisp
and r19 , r16
and r20 , r17
rjmp Display77
Display85:
Display90:
sts DispData1 , r18
sts DispData2 , r19
sts DispData3 , r20
sts DispData4 , r21
sts DispData5 , r22
sts DispData6 , r23
ret
;--------------------------------------------
caculator:
cp r17,reg5
brne caculator00
cp r16,reg4
brne caculator00
clr r17
ldi r16,24
rjmp caculator11
caculator00:
sub r17 , reg5
brcc caculator10
ldi Reg5 , 60
add r17 , reg5
caculator10:
sbc r16 , reg4
brcc caculator11
ldi Reg4 ,24
add r16, reg4
Caculator11:
ret
;==================================================
LEDKeyScan:
ser r16
out LEDComPort , r16
mov r16 , BlinkByte0
andi r16 , 7
cpi r16 , 0
breq KeyScan
cpi r16 , 1
breq LED1Scan
cpi r16 , 2
breq LED2Scan
cpi r16 , 3
breq LED3Scan
cpi r16 , 4
breq LED4Scan
cpi r16 , 5
breq LED5Scan
cpi r16 , 6
breq LED6Scan
ldi r16, PortCIOKey
out DDRC , r16
ldi r16, PortDIOKey
out DDRD , r16
ret
;-------------------------------------------
LEDSegScan:
out LEDSegPort1 , r16
sbrc r16 , 6
sbi LEDSegPort2 , LEDSeg7
sbrs r16 , 6
cbi LEDSegPort2 , LEDSeg7
sbrc r16 , 7
sbi LEDSegPort2 , LEDSeg8
sbrs r16 , 7
cbi LEDSegPort2 , LEDSeg8
ret
LED1Scan:
lds r16 , DispData1
rcall LEDSegScan
cbi LEDComPort , LEDComLine1
ret
LED2Scan:
lds r16 , DispData2
rcall LEDSegScan
cbi LEDComPort , LEDComLine2
ret
LED3Scan:
lds r16 , DispData3
rcall LEDSegScan
cbi LEDComPort , LEDComLine3
ret
LED4Scan:
lds r16 , DispData4
rcall LEDSegScan
cbi LEDComPort , LEDComLine4
ret
LED5Scan:
lds r16 , DispData5
rcall LEDSegScan
cbi LEDComPort , LEDComLine5
ret
LED6Scan:
lds r16 , DispData6
rcall LEDSegScan
cbi LEDComPort , LEDComLine6
ret
KeyScan:
ldi r16, PortCIOKey
out DDRC , r16
ldi r16, PortDIOKey
out DDRD , r16
rcall Delay10us
in r16 , KeyScanPort1
andi r16 , KeyScanMask1
in r17 , KeyScanPort2
andi r17 , KeyScanMask2
swap r17
lsl r17
or r16 , r17
ori r16 , 0b10000000
com r16
sts KeyPushByte , r16
ldi r17, PortCIOInit
out DDRC , r17
ldi r17, PortDIOInit
out DDRD , r17
rcall Delay10us
tst r16
breq Push_Key
;-------- have key press ----------------------------
KeyScan00:
sbrs keybyte,flag_keypush
rjmp keyscan01
lds r16, keypushByte
cpi r16, Keydown
breq keyscan01
cpi r16, keyup
breq keyscan01
rjmp keyscan90
KeyScan01:
lds r16, KeypushByte
lds r17, KeyReadByte
eor r16, r17
breq KeyScan20
;=====================================================
push_key:
sbrs keybyte,keypush
rjmp push_keyinit
lds r16,KeyDelayByte
dec r16
sts KeyDelayByte,r16
breq push_Key10
rjmp keyscan90
push_key10:
clt
bld keybyte,keypush
bld keybyte,keydis
; bld keybyte,flag_keypush
rjmp Keyscan10
push_keyinit:
lds r16,KeyReadByte ;在判断键按下去的前一次键值是否是零,如果是零说明键释放过了
breq Keyscan10
ldi r16,KeyPushinit
sts KeyDelayByte,r16
set
bld keybyte,keypush
rjmp keyscan90 ;
;-----if no key press------
KeyScan10:
clt
bld KeyByte , KeyOn
bld KeyByte , KeySame
bld KeyByte , keySameOn
bld keybyte,flag_keypush
lds r16 , KeyPushByte
sts KeyReadByte , r16
ldi r16 , KeyDelayInit
sts KeyDelayByte , r16
clr r16
sts keycount,r16
ret
KeyScan20: ;press key
lds r16 , KeyDelayByte
dec r16
sts KeyDelayByte , r16
brne KeyScan90
;--------------if key be readed----------------------
key_press10:
sbrc keybyte,keydis
rjmp Keyscan_Comp
ldi r16 , KeyDelayLong ;first antkey
sts KeyDelayByte , r16
sts keycnt,r16
lds r16,keypushbyte
sts keyfront,r16
set
bld keybyte,keydis
bld keybyte,keyon
sbrc keybyte,keysame ;if same key still press
rjmp keyscan_press20
set
bld keybyte,keysame
rjmp keyscan90
keyscan_press20:
set
bld keybyte,keysameon
bld keybyte,flag_keypush
rjmp keyscan90
keyscan_comp:
lds r16,keypushbyte
lds r17,keyfront
eor r16,r17
brne keyscan90
clt
bld keybyte,keydis
rjmp key_press10
KeyScan90:
ret
;-------------------------------------------------
DecodeKey:
sbrs KeyByte , KeyOn
DecodeKey05:
rjmp DecodeKey98
clt
bld KeyByte , keyOn
lds r16 , KeyReadByte
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -