📄 main.s
字号:
.module main.c
.area text(rom, con, rel)
.dbfile D:\AVR实验\DS1302时间芯片\main.c
.dbfunc e jisuan _jisuan fV
; d -> R20
; e -> R22
; b_data -> R16
.even
_jisuan::
rcall push_gset2
.dbline -1
.dbline 12
; #include <iom8515v.h>
;
; #include "ds1302.h"
; #include "d4094.h"
;
;
; uint gewei,shiwei;
; uint sec,min,hour,n1,n2,n3,n4;
;
;
; void jisuan(uchar b_data)
; {
.dbline 14
; uchar e,d;
; e=b_data;
mov R22,R16
.dbline 15
; d=e;
mov R20,R22
.dbline 16
; e=e&0x0f;
andi R22,15
.dbline 17
; d=d>>4;
mov R24,R20
swap R24
andi R24,#0x0F
mov R20,R24
.dbline 18
; gewei=(e&0x01)+((e>>1)&0x01)*2+((e>>2)&0x01)*4+((e>>3)&0x01)*8;
mov R24,R22
lsr R24
andi R24,1
ldi R25,2
mul R25,R24
mov R24,R22
clr R25
andi R24,1
andi R25,0
add R24,R0
adc R25,R1
mov R30,R22
lsr R30
lsr R30
andi R30,1
ldi R31,4
mul R31,R30
add R24,R0
adc R25,R1
mov R30,R22
lsr R30
lsr R30
lsr R30
andi R30,1
ldi R31,8
mul R31,R30
add R24,R0
adc R25,R1
sts _gewei+1,R25
sts _gewei,R24
.dbline 19
; shiwei=(d&0x01)+((d>>1)&0x01)*2+((d>>2)&0x01)*4+((d>>3)&0x01)*8;
mov R24,R20
lsr R24
andi R24,1
ldi R25,2
mul R25,R24
mov R24,R20
clr R25
andi R24,1
andi R25,0
add R24,R0
adc R25,R1
mov R30,R20
lsr R30
lsr R30
andi R30,1
ldi R31,4
mul R31,R30
add R24,R0
adc R25,R1
mov R30,R20
lsr R30
lsr R30
lsr R30
andi R30,1
ldi R31,8
mul R31,R30
add R24,R0
adc R25,R1
sts _shiwei+1,R25
sts _shiwei,R24
.dbline -2
L1:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r d 20 c
.dbsym r e 22 c
.dbsym r b_data 16 c
.dbend
.dbfunc e main _main fV
; num -> R20,R21
.even
_main::
.dbline -1
.dbline 26
;
; }
;
;
;
; void main()
; {
.dbline 29
;
; uint num;
; DDRC=0xFF;
ldi R24,255
out 0x14,R24
.dbline 30
; PORTC=0xFF;
out 0x15,R24
.dbline 31
; WriteSec(0x14);
ldi R16,20
ldi R17,0
rcall _WriteSec
.dbline 32
; WriteMin(0x00);
clr R16
clr R17
rcall _WriteMin
.dbline 33
; WriteHour(0x00);
clr R16
clr R17
rcall _WriteHour
rjmp L4
L3:
.dbline 35
.dbline 37
rcall _ReadSec
sts _sec+1,R17
sts _sec,R16
.dbline 38
rcall _ReadMin
sts _min+1,R17
sts _min,R16
.dbline 39
rcall _ReadHour
sts _hour+1,R17
sts _hour,R16
.dbline 40
lds R16,_sec
rcall _jisuan
.dbline 41
lds R2,_gewei
lds R3,_gewei+1
sts _n1+1,R3
sts _n1,R2
.dbline 42
lds R2,_shiwei
lds R3,_shiwei+1
sts _n2+1,R3
sts _n2,R2
.dbline 43
lds R16,_min
rcall _jisuan
.dbline 44
lds R2,_gewei
lds R3,_gewei+1
sts _n3+1,R3
sts _n3,R2
.dbline 45
lds R2,_shiwei
lds R3,_shiwei+1
sts _n4+1,R3
sts _n4,R2
.dbline 46
lds R18,_n3
lds R19,_n3+1
ldi R16,100
ldi R17,0
rcall empy16s
movw R2,R16
lds R18,_n4
lds R19,_n4+1
ldi R16,1000
ldi R17,3
rcall empy16s
movw R20,R16
add R20,R2
adc R21,R3
lds R18,_n2
lds R19,_n2+1
ldi R16,10
ldi R17,0
rcall empy16s
add R20,R16
adc R21,R17
lds R2,_n1
lds R3,_n1+1
add R20,R2
adc R21,R3
.dbline 49
movw R16,R20
rcall _update_display_dp
.dbline 51
L4:
.dbline 34
rjmp L3
X0:
.dbline -2
L2:
.dbline 0 ; func end
ret
.dbsym r num 20 i
.dbend
.area bss(ram, con, rel)
.dbfile D:\AVR实验\DS1302时间芯片\main.c
_n4::
.blkb 2
.dbsym e n4 _n4 i
_n3::
.blkb 2
.dbsym e n3 _n3 i
_n2::
.blkb 2
.dbsym e n2 _n2 i
_n1::
.blkb 2
.dbsym e n1 _n1 i
_hour::
.blkb 2
.dbsym e hour _hour i
_min::
.blkb 2
.dbsym e min _min i
_sec::
.blkb 2
.dbsym e sec _sec i
_shiwei::
.blkb 2
.dbsym e shiwei _shiwei i
_gewei::
.blkb 2
.dbsym e gewei _gewei i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -