📄 set_time.asm
字号:
cp lcdtab,tempc
brlo disp3_1
clr lcdtab
disp3_0:
sbi portc,lcd_e
ret
disp3_1: mov lcdtab,tempc
sbi portc,lcd_e
ret
;**************************************************
lcdinit:
ldi tempc,$03
rcall lcdwr_com
ldi zh,$88
ldi zl,$88
wait5ms_0:
wdr
sbiw zl,$01
brne wait5ms_0
ldi tempc,$03
rcall lcdwr_com
ldi zh,$20
ldi zl,$88
wait100us:
wdr
sbiw zl,$01
brne wait100us
ldi tempc,$03
rcall lcdwr_com
ldi tempc,$02
rcall lcdwr_com
ldi tempc,$02
rcall lcdwr_com
ldi tempc,$08
rcall lcdwr_com
ldi tempc,$00 ;clr disp
rcall lcdwr_com
ldi tempc,$01
rcall lcdwr_com
ldi zh,$88
ldi zl,$88
wait5ms_1:
wdr
sbiw zl,$01
brne wait5ms_1
ldi tempc,$00
rcall lcdwr_com
ldi tempc,$06
rcall lcdwr_com
ldi tempc,$00
rcall lcdwr_com
ldi tempc,$0c
rcall lcdwr_com
ret
;***************************************************
lcdwr_com:
out portc,tempc
ldi zh,$10
ldi zl,$00
sbi portc,lcd_e
lcd_wait:
sbiw zl,$01 ;20M 40us
brne lcd_wait
cbi portc,lcd_e
ret
;***************************************************
rxint:
in regtemp,sreg
push zl
push zh
lds rxtemp,ucsr0b
sbrs rxtemp,rxb80
rjmp rx00
ldi zh,high(rx_tab)
ldi zl,low(rx_tab)
add zl,rxtab
adc zh,clrtemp
ijmp
rx_tab:
rjmp data00
rjmp data01
rjmp data02
rjmp data03
rx00:
clr rxtab
lds rxtemp,udr0
cpi rxtemp,$aa
brne rxend
ldi r24,low(srctemp)
ldi r25,high(srctemp)
clr addsum
inc rxtab
rxend:
data00:
lds rxtemp,udr0
rxend0:
pop zh
pop zl
out sreg,regtemp
reti
;***************************************************
data01:
clr rxtab
lds rxtemp,udr0
cpi rxtemp,$00
brne rxend0
ldi rxtemp,$02
mov rxtab,rxtemp
ldi rxtemp,21
sts rxincsram,rxtemp
rjmp rxend0
;***************************************************
data02:
lds rxtemp,udr0
movw zh:zl,r25:r24
st z+,rxtemp
add addsum,rxtemp
movw r25:r24,zh:zl
lds rxtemp,rxincsram
dec rxtemp
sts rxincsram,rxtemp
brne rxend0
inc rxtab
rjmp rxend0
;***************************************************
data03:
clr rxtab
lds rxtemp,udr0
cp rxtemp,addsum
brne rxend0
sbr buffbit,bit_4
rjmp rxend0
;**********************************************
key:
in tempc,pind
andi tempc,$f0
cpi tempc,$f0
brne keydn
clr zl
ldi zh,$10
sts keydel0,zl
sts keydel1,zh
cbr keybit,bit_7
sbrs keybit,bit6
ret
cbr keybit,bit_6
sbr buffbit,bit_5
keyret:
ret
keydn:
lds zh,keydel1
lds zl,keydel0
sbiw zl,$01
sts keydel0,zl
sts keydel1,zh
brne keyret
ldi zh,$40
sts keydel0,zl
sts keydel1,zh
cbr keybit,0b00000111
key1:
cpi tempc,0b11100000
brne key2
sbrc keybit,bit7
ret
sbr keybit,bit_7
tst keytab0
breq keyno
dec keytab0
sbr keybit,keydn_bit
cbr keybit,bit_5
cbr keybit,bit_4
ret
key2:
cpi tempc,0b11010000
brne key3
sbrc keybit,bit7
ret
sbr keybit,bit_7
sbr keybit,kmode_bit
sbr keybit,keydn_bit
ret
key3:
cpi tempc,0b10110000
brne key4
sbrc keybit,bit7
ret
sbr keybit,bit_7
sbr keybit,kset_bit
sbr keybit,keydn_bit
ret
key4:
cpi tempc,0b01110000
brne keyno
cbr keybit,bit_7
sbr keybit,kadd_bit
sbr keybit,keydn_bit
keyno:
ret
;**************************************************
keypr:
sbrs keybit,keydnbit
ret
cbr keybit,keydn_bit
keypr_p:
ldi zh,high(key_tab00)
ldi zl,low(key_tab00)
add zl,keytab0
adc zh,clrtemp
ijmp
key_tab00:
rjmp keyp00
rjmp keyp10
rjmp keyp20
rjmp keyp30
;***************************************************
keyp00:
cbr buffbit,bit_0
sbrs keybit,kmodebit
rjmp keyp00_0
cbr keybit,kmode_bit
cbr keybit,bit_5
inc keytab1
ldi tempc,$02
cp keytab1,tempc
brlo keyp00_0
clr keytab1
keyp00_0:
sbrs keybit,bit4
rcall kdisp000
sbrs keybit,bit5
rcall kdisp001
sbrs keybit,ksetbit
ret
cbr keybit,0b00111111
clr keytab2
clr keytab3
clr keytab4
ldi tempc,$01
mov keytab0,tempc
;***************************************************
keyp10:
mov tempc,keytab1
sbrc tempc,bit0
rjmp keyp11
keyp100:
cbr keybit,0b00011111
clr keytab2
clr keytab3
clr keytab4
clr maintab ;显示时间
sbr buffbit,bit_0
sbrs keybit,bit5
rcall kdisp1000
ret
;***************************************************
keyp11:
cbr buffbit,bit_0
sbrs keybit,kmodebit
rjmp keyp11_0
cbr keybit,kmode_bit
cbr keybit,bit_5
inc keytab2
ldi tempc,$04
cp keytab2,tempc
brlo keyp11_0
clr keytab2
keyp11_0:
sbrs keybit,bit4
rcall kdisp100
sbrs keybit,bit5
rcall kdisp101
sbrs keybit,ksetbit
ret
cbr keybit,0b00111111
clr keytab3
clr keytab4
ldi tempc,$02
mov keytab0,tempc
;***************************************************
keyp20:
cbr buffbit,bit_0
ldi zh,high(key_tab20)
ldi zl,low(key_tab20)
add zl,keytab2
adc zh,clrtemp
ijmp
key_tab20:
rjmp keyp200 ;set time&date
rjmp keyp210 ;set on time
rjmp keyp220 ;set write
rjmp keyp230 ;set read
keyp200:
cbr buffbit,bit_0
sbrs keybit,kmodebit
rjmp keyp100_0
cbr keybit,kmode_bit
cbr keybit,bit_5
inc keytab3
ldi tempc,$03
cp keytab3,tempc
brlo keyp100_0
clr keytab3
keyp100_0:
sbrs keybit,bit4
rcall kdisp200
sbrs keybit,bit5
rcall kdisp201
sbrc keybit,ksetbit
rjmp keyp30_0
ret
;***************************************************
keyp210:
sbrs keybit,kmodebit
rjmp keyp110_0
cbr keybit,kmode_bit
cbr keybit,bit_5
inc keytab3
ldi tempc,$03
cp keytab3,tempc
brlo keyp110_0
clr keytab3
keyp110_0:
sbrs keybit,bit4
rcall kdisp210
sbrs keybit,bit5
rcall kdisp211
lds tempd,timesram
mov tempc,keytab3
sbrs keybit,kaddbit
rjmp keyp110_1
cbr keybit,kadd_bit
sbr keybit,bit_6
mov tempe,tempd
cpi tempc,$00
brne keyp110_00
sbr tempd,bit_0
sbrc tempe,bit0
cbr tempd,bit_0
rjmp keyp110_1
keyp110_00:
cpi tempc,$01
brne keyp110_01
sbr tempd,bit_1
sbrc tempe,bit1
cbr tempd,bit_1
rjmp keyp110_1
keyp110_01:
sbr tempd,bit_2
sbrc tempe,bit2
cbr tempd,bit_2
keyp110_1:
ldi tempe,$2a
cpi tempc,$00
brne keyp110_02
sbrs tempd,bit0
ldi tempe,$20
rjmp keyp110_04
keyp110_02:
cpi tempc,$01
brne keyp110_03
sbrs tempd,bit1
ldi tempe,$20
rjmp keyp110_04
keyp110_03:
sbrs tempd,bit2
ldi tempe,$20
keyp110_04:
sts timesram,tempd
sts lcdsram2+8,tempe
sbrs keybit,ksetbit
ret
cbr keybit,ksetbit
mov tempc,keytab3
cpi tempc,$00
brne keyp110_10
sbrc tempd,bit0
rjmp keyp30_0
ret
keyp110_10:
cpi tempc,$01
brne keyp110_11
sbrc tempd,bit1
rjmp keyp30_0
ret
keyp110_11:
sbrc tempd,bit2
rjmp keyp30_0
ret
;***************************************************
keyp220:
clr keytab3
clr keytab4
cbr buffbit,bit_0
sbrc keybit,ksetbit
rjmp keyp30_0
cbr keybit,0b00011111
sbrs keybit,bit5
rcall kdisp1002
ret
;***************************************************
keyp230:
clr keytab3
clr keytab4
ldi tempc,$03 ;读时间
mov maintab,tempc
cbr keybit,0b00011111
sbrc keybit,bit5
ret
sbr buffbit,0b00001101
rcall kdisp1001
ret
;***************************************************
keyp30_0:
ldi tempc,$03
mov keytab0,tempc
clr keytab4
cbr keybit,0b00111111
rcall lcdincmov
;***************************************************
keyp30:
sbr buffbit,bit_0
mov tempc,keytab2
cpi tempc,$00
brne keyp30_0p
rjmp keyp300
keyp30_0p:
cpi tempc,$01
brne keyp30_1p
rjmp keyp310
keyp30_1p:
ldi tempc,$04 ;写时间
mov maintab,tempc
cbr keybit,0b00011111
sbrc keybit,bit5
ret
sbr buffbit,0b00001100
rcall kdisp1003
ret
;***************************************************
keyp300:
sbrs keybit,ksetbit
rjmp keyp300_on
cbr keybit,0b00001111
ret
keyp300_on:
ldi tempc,$01 ;设置时间
mov maintab,tempc
sbrs keybit,bit4
rcall reds1302
sbr keybit,bit_4
ldi tempb,$10
ldi zh,high(key_tab300)
ldi zl,low(key_tab300)
add zl,keytab3
adc zh,clrtemp
ijmp
key_tab300:
rjmp keyp3000 ;set sre
rjmp keyp3010 ;set hr
rjmp keyp3020 ;set day
keyp3000:
sbrs keybit,bit5
rcall kdisp300
sbrs keybit,kmodebit
rjmp keyp300_0
cbr keybit,kmode_bit
rcall lcdincmov
inc keytab4
mov tempc,keytab4
cpi tempc,$06
brlo keyp300_0
clr keytab4
keyp300_0:
sbrs keybit,kaddbit
rjmp keyp300_1
cbr keybit,kadd_bit
sbr keybit,bit_6
rcall lcdincmov0
ldi zh,high(time_tab0)
ldi zl,low(time_tab0)
add zl,keytab4
adc zh,clrtemp
ijmp
time_tab0:
rjmp timeh0
rjmp timeh1
rjmp timem0
rjmp timem1
rjmp times0
rjmp times1
timeh0:
lds tempc,hrsram
rcall sethrh
sts hrsram,tempc
rjmp keyp300_1
timeh1:
lds tempc,hrsram
rcall sethrl
sts hrsram,tempc
rjmp keyp300_1
timem0:
lds tempc,minsram
rcall setminh
sts minsram,tempc
rjmp keyp300_1
timem1:
lds tempc,minsram
rcall setminl
sts minsram,tempc
rjmp keyp300_1
times0:
lds tempc,srcsram
rcall setsrch
sts srcsram,tempc
rjmp keyp300_1
times1:
lds tempc,srcsram
rcall setsrcl
sts srcsram,tempc
keyp300_1:
rcall srammovlcd_t
rcall lcdmovtemp
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -