📄 main.s
字号:
.module main.c
.area data(ram, con, rel)
_time_buf::
.blkb 2
.area idata
.byte 32,7
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 5,8
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 22,21
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 0,2
.area data(ram, con, rel)
.dbfile D:\AVR\我的程序\DS1302的时钟实验/cfg.h
.dbsym e time_buf _time_buf A[8:8]c
.area text(rom, con, rel)
.dbfile D:\AVR\我的程序\DS1302的时钟实验/cfg.h
.dbfunc e delay_ms _delay_ms fV
; i -> R20,R21
; time -> R16,R17
.even
_delay_ms::
xcall push_gset1
.dbline -1
.dbline 42
; /***********************************
; *实验目的:熟悉DS1302编程
; *设 计:萧联珠
; *日 期:2007-11-22
; ************************************/
; #include <iom16v.h>
; #include "cfg.h"
;
; void main()
; {
; unsigned char i;
; ds1302_init();
; uart_init();
; delay_ms(1000);
; ds1302_write_time(); //写入时间初始值
;
; while(1)
; {
; ds1302_read_time(); //读时间值
; delay_ms(100);
; for(i=1;i<7;i++)
; {
; while(!(UCSRA&(1<<UDRE))); //等待发送寄存器为空
; delay_ms(10);
; UDR=time_buf[i]; //发送时间数据:年月日周时分秒
; }
; delay_ms(100);
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
.dbline 44
; }
; }
xjmp L5
L2:
.dbline 45
clr R20
clr R21
L6:
.dbline 45
L7:
.dbline 45
subi R20,255 ; offset = 1
sbci R21,255
.dbline 45
cpi R20,232
ldi R30,3
cpc R21,R30
brlt L6
L3:
.dbline 44
subi R16,1
sbci R17,0
L5:
.dbline 44
clr R2
clr R3
cp R2,R16
cpc R3,R17
brlt L2
.dbline -2
L1:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 I
.dbsym r time 16 I
.dbend
.dbfunc e uart_init _uart_init fV
.even
_uart_init::
.dbline -1
.dbline 50
; }
; }
; }
; }
; }
; }
.dbline 51
; }
ldi R24,2
out 0xb,R24
.dbline 52
; }
ldi R24,24
out 0xa,R24
.dbline 53
; }
ldi R24,6
out 0x20,R24
.dbline 54
; }
clr R2
out 0x20,R2
.dbline 55
; }
ldi R24,12
out 0x9,R24
.dbline -2
L10:
.dbline 0 ; func end
ret
.dbend
.dbfunc e ds1302_write_byte _ds1302_write_byte fV
; i -> R20
; d -> R18
; addr -> R16
.even
_ds1302_write_byte::
xcall push_gset1
.dbline -1
.dbline 60
; }
; }
; }
; }
; }
.dbline 63
; }
; }
; }
sbi 0x15,4
.dbline 66
; }
; }
; }
sbi 0x14,3
.dbline 67
; }
andi R16,254
.dbline 68
clr R20
xjmp L15
L12:
.dbline 68
; }
.dbline 69
; }
sbrs R16,0
rjmp L16
.dbline 69
.dbline 70
; }
sbi 0x15,3
.dbline 71
; }
xjmp L17
L16:
.dbline 72
; }
.dbline 73
; }
cbi 0x15,3
.dbline 74
; }
L17:
.dbline 75
sbi 0x15,2
.dbline 76
cbi 0x15,2
.dbline 77
lsr R16
.dbline 78
L13:
.dbline 68
inc R20
L15:
.dbline 68
cpi R20,8
brlo L12
.dbline 81
; }
; }
; }
; }
; }
; }
; }
sbi 0x14,3
.dbline 82
clr R20
xjmp L21
L18:
.dbline 82
; }
.dbline 83
; }
sbrs R18,0
rjmp L22
.dbline 83
.dbline 84
; }
sbi 0x15,3
.dbline 85
; }
xjmp L23
L22:
.dbline 86
; }
.dbline 87
; }
cbi 0x15,3
.dbline 88
; }
L23:
.dbline 89
sbi 0x15,2
.dbline 90
cbi 0x15,2
.dbline 91
lsr R18
.dbline 92
L19:
.dbline 82
inc R20
L21:
.dbline 82
cpi R20,8
brlo L18
.dbline 93
; }
; }
; }
; }
; }
cbi 0x15,4
.dbline -2
L11:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r d 18 c
.dbsym r addr 16 c
.dbend
.dbfunc e ds1302_read_byte _ds1302_read_byte fc
; temp -> R20
; i -> R22
; addr -> R16
.even
_ds1302_read_byte::
xcall push_gset2
.dbline -1
.dbline 97
; }
; }
; }
; }
.dbline 101
; }
; }
; }
; }
sbi 0x15,4
.dbline 104
; }
; }
; }
sbi 0x14,3
.dbline 105
; }
ori R16,1
.dbline 106
clr R22
xjmp L28
L25:
.dbline 106
; }
.dbline 107
; }
sbrs R16,0
rjmp L29
.dbline 107
.dbline 108
; }
sbi 0x15,3
.dbline 109
; }
xjmp L30
L29:
.dbline 110
; }
.dbline 111
; }
cbi 0x15,3
.dbline 112
; }
L30:
.dbline 113
sbi 0x15,2
.dbline 114
cbi 0x15,2
.dbline 115
lsr R16
.dbline 116
L26:
.dbline 106
inc R22
L28:
.dbline 106
cpi R22,8
brlo L25
.dbline 119
; }
; }
; }
; }
; }
; }
; }
cbi 0x14,3
.dbline 120
clr R22
xjmp L34
L31:
.dbline 120
; }
.dbline 121
; }
lsr R20
.dbline 122
; }
sbis 0x13,3
rjmp L35
.dbline 122
.dbline 123
; }
ori R20,128
.dbline 124
; }
xjmp L36
L35:
.dbline 125
; }
.dbline 126
; }
andi R20,127
.dbline 127
; }
L36:
.dbline 128
sbi 0x15,2
.dbline 129
cbi 0x15,2
.dbline 130
L32:
.dbline 120
inc R22
L34:
.dbline 120
cpi R22,8
brlo L31
.dbline 132
; }
; }
; }
; }
; }
cbi 0x15,4
.dbline 133
; }
mov R16,R20
.dbline -2
L24:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r temp 20 c
.dbsym r i 22 c
.dbsym r addr 16 c
.dbend
.dbfunc e ds1302_write_time _ds1302_write_time fV
.even
_ds1302_write_time::
.dbline -1
.dbline 137
; }
; }
; }
; }
.dbline 139
; }
; }
clr R18
ldi R16,142
xcall _ds1302_write_byte
.dbline 140
; }
ldi R18,128
ldi R16,128
xcall _ds1302_write_byte
.dbline 142
; }
; }
lds R18,_time_buf+1
ldi R16,140
xcall _ds1302_write_byte
.dbline 143
; }
lds R18,_time_buf+2
ldi R16,136
xcall _ds1302_write_byte
.dbline 144
; }
lds R18,_time_buf+3
ldi R16,134
xcall _ds1302_write_byte
.dbline 145
; }
lds R18,_time_buf+7
ldi R16,138
xcall _ds1302_write_byte
.dbline 146
; }
lds R18,_time_buf+4
ldi R16,132
xcall _ds1302_write_byte
.dbline 147
; }
lds R18,_time_buf+5
ldi R16,130
xcall _ds1302_write_byte
.dbline 148
; }
lds R18,_time_buf+6
ldi R16,128
xcall _ds1302_write_byte
.dbline 149
; }
lds R18,_time_buf+7
ldi R16,138
xcall _ds1302_write_byte
.dbline 150
; }
ldi R18,128
ldi R16,142
xcall _ds1302_write_byte
.dbline -2
L37:
.dbline 0 ; func end
ret
.dbend
.dbfunc e ds1302_read_time _ds1302_read_time fV
.even
_ds1302_read_time::
.dbline -1
.dbline 154
; }
; }
; }
; }
.dbline 156
; }
; }
ldi R16,140
xcall _ds1302_read_byte
sts _time_buf+1,R16
.dbline 157
; }
ldi R16,136
xcall _ds1302_read_byte
sts _time_buf+2,R16
.dbline 158
; }
ldi R16,134
xcall _ds1302_read_byte
sts _time_buf+3,R16
.dbline 159
; }
ldi R16,132
xcall _ds1302_read_byte
sts _time_buf+4,R16
.dbline 160
; }
ldi R16,130
xcall _ds1302_read_byte
sts _time_buf+5,R16
.dbline 161
; }
ldi R16,128
xcall _ds1302_read_byte
mov R24,R16
andi R24,127
sts _time_buf+6,R24
.dbline 162
; }
ldi R16,138
xcall _ds1302_read_byte
sts _time_buf+7,R16
.dbline -2
L46:
.dbline 0 ; func end
ret
.dbend
.dbfunc e ds1302_init _ds1302_init fV
.even
_ds1302_init::
.dbline -1
.dbline 166
; }
; }
; }
; }
.dbline 168
; }
; }
cbi 0x15,4
.dbline 169
; }
cbi 0x15,2
.dbline 170
; }
sbi 0x14,4
.dbline 171
; }
sbi 0x14,2
.dbline -2
L54:
.dbline 0 ; func end
ret
.dbend
.dbfile D:\AVR\我的程序\DS1302的时钟实验\main.c
.dbfunc e main _main fV
; i -> R20
.even
_main::
.dbline -1
.dbline 10
.dbline 12
xcall _ds1302_init
.dbline 13
xcall _uart_init
.dbline 14
ldi R16,1000
ldi R17,3
xcall _delay_ms
.dbline 15
xcall _ds1302_write_time
xjmp L57
L56:
.dbline 18
.dbline 19
xcall _ds1302_read_time
.dbline 20
ldi R16,100
ldi R17,0
xcall _delay_ms
.dbline 21
ldi R20,1
xjmp L62
X0:
.dbline 22
L63:
.dbline 23
L64:
.dbline 23
sbis 0xb,5
rjmp L63
.dbline 24
ldi R16,10
ldi R17,0
xcall _delay_ms
.dbline 25
ldi R24,<_time_buf
ldi R25,>_time_buf
mov R30,R20
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
out 0xc,R2
.dbline 26
L60:
.dbline 21
inc R20
L62:
.dbline 21
cpi R20,7
brlo L64
.dbline 27
ldi R16,100
ldi R17,0
xcall _delay_ms
.dbline 28
L57:
.dbline 17
xjmp L56
X1:
.dbline -2
L55:
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -