📄 main.s
字号:
.module main.c
.area lit(rom, con, rel)
L4:
.byte 0,0
.byte 0,1
.byte 2,1
.byte 8
.area text(rom, con, rel)
.dbfile D:\avrvi\AVRVi_m128_Starter_Kit\PCF8563_USART\source\main.c
.dbfunc e main _main fV
; tmp -> R20
; sec_flag -> R22
; time -> R10,R11
; Set_time -> y+2
.even
_main::
sbiw R28,9
.dbline -1
.dbline 12
; /************************************************
; 文件:main.c
; 用途:
; 注意:内部8M晶振
; 创建:2008.4.1
; 修改:2008.4.1
; Copy Right (c) www.avrvi.com AVR与虚拟仪器
; ************************************************/
;
; #include "config.h"
; void main(void)
; {
.dbline 13
; unsigned char *time="2008-01-01 00:00:00";
ldi R24,<L3
ldi R25,>L3
movw R10,R24
.dbline 14
; unsigned char sec_flag=0,tmp=0;
clr R22
.dbline 14
clr R20
.dbline 15
; unsigned char Set_time[7]={
ldi R24,<L4
ldi R25,>L4
movw R30,R28
adiw R30,2
ldi R16,7
ldi R17,0
st -y,R31
st -y,R30
st -y,R25
st -y,R24
xcall asgncblk
.dbline 25
; 0x00/*秒*/,
; 0x00/*分*/,
; 0x00/*时*/,
; 0x01/*天*/,
; 0x02/*星期*/,
; 0x01/*月/世纪*/,
; 0x08/*年*/
; };
;
; CLI();
cli
.dbline 26
; Com_init();
xcall _Com_init
.dbline 27
; twi_init();
xcall _twi_init
.dbline 28
; PCF8563_init();
xcall _PCF8563_init
.dbline 29
; SEI();
sei
.dbline 31
;
; Com_putstring ("PCF8563 Set Time: ",18,&RTbuf_UART0);
ldi R24,<_RTbuf_UART0
ldi R25,>_RTbuf_UART0
std y+1,R25
std y+0,R24
ldi R18,18
ldi R16,<L5
ldi R17,>L5
xcall _Com_putstring
.dbline 32
; Com_putstring (time,19,&RTbuf_UART0);
ldi R24,<_RTbuf_UART0
ldi R25,>_RTbuf_UART0
std y+1,R25
std y+0,R24
ldi R18,19
movw R16,R10
xcall _Com_putstring
.dbline 33
; Com_putstring ("\n\n",2,&RTbuf_UART0);
ldi R24,<_RTbuf_UART0
ldi R25,>_RTbuf_UART0
std y+1,R25
std y+0,R24
ldi R18,2
ldi R16,<L6
ldi R17,>L6
xcall _Com_putstring
.dbline 34
; PCF8536_wt_p(0x02,Set_time,7);
ldi R24,7
std y+0,R24
movw R18,R28
subi R18,254 ; offset = 2
sbci R19,255
ldi R16,2
ldi R17,0
xcall _PCF8536_wt_p
xjmp L8
L7:
.dbline 36
; while(1)
; {
.dbline 37
; PCF8536_rd(0x02,Set_time,7);
ldi R24,7
std y+0,R24
movw R18,R28
subi R18,254 ; offset = 2
sbci R19,255
ldi R16,2
ldi R17,0
xcall _PCF8536_rd
.dbline 38
; Set_time[0] &= 0x7F;
ldd R24,y+2
andi R24,127
std y+2,R24
.dbline 39
; Set_time[1] &= 0x7F;
ldd R24,y+3
andi R24,127
std y+3,R24
.dbline 40
; Set_time[2] &= 0x3F;
ldd R24,y+4
andi R24,63
std y+4,R24
.dbline 41
; Set_time[3] &= 0x3F;
ldd R24,y+5
andi R24,63
std y+5,R24
.dbline 42
; Set_time[4] &= 0x07;
ldd R24,y+6
andi R24,7
std y+6,R24
.dbline 43
; Set_time[5] &= 0x1F;
ldd R24,y+7
andi R24,31
std y+7,R24
.dbline 44
; time[5] = (Set_time[5]>>4)+0x30;
swap R24
andi R24,#0x0F
subi R24,208 ; addi 48
movw R30,R10
std z+5,R24
.dbline 45
; time[6] = (Set_time[5]&0x0F)+0x30;
ldd R24,y+7
andi R24,15
subi R24,208 ; addi 48
movw R30,R10
std z+6,R24
.dbline 46
; time[8] = (Set_time[3]>>4)+0x30;
ldd R24,y+5
swap R24
andi R24,#0x0F
subi R24,208 ; addi 48
movw R30,R10
std z+8,R24
.dbline 47
; time[9] = (Set_time[3]&0x0F)+0x30;
ldd R24,y+5
andi R24,15
subi R24,208 ; addi 48
movw R30,R10
std z+9,R24
.dbline 48
; time[11] = (Set_time[2]>>4)+0x30;
ldd R24,y+4
swap R24
andi R24,#0x0F
subi R24,208 ; addi 48
movw R30,R10
std z+11,R24
.dbline 49
; time[12] = (Set_time[2]&0x0F)+0x30;
ldd R24,y+4
andi R24,15
subi R24,208 ; addi 48
movw R30,R10
std z+12,R24
.dbline 50
; time[14] = (Set_time[1]>>4)+0x30;
ldd R24,y+3
swap R24
andi R24,#0x0F
subi R24,208 ; addi 48
movw R30,R10
std z+14,R24
.dbline 51
; time[15] = (Set_time[1]&0x0F)+0x30;
ldd R24,y+3
andi R24,15
subi R24,208 ; addi 48
movw R30,R10
std z+15,R24
.dbline 52
; time[17] = (Set_time[0]>>4)+0x30;
ldd R24,y+2
swap R24
andi R24,#0x0F
subi R24,208 ; addi 48
movw R30,R10
std z+17,R24
.dbline 53
; time[18] = (Set_time[0]&0x0F)+0x30;
ldd R24,y+2
andi R24,15
subi R24,208 ; addi 48
movw R30,R10
std z+18,R24
.dbline 55
;
; tmp=sec_flag;
mov R20,R22
.dbline 57
;
; if(Set_time[0]%2)
ldi R17,2
ldd R16,y+2
xcall mod8u
tst R16
breq L23
.dbline 58
; {
.dbline 59
; sec_flag=0;
clr R22
.dbline 60
; }
xjmp L24
L23:
.dbline 61
; else sec_flag=1;
ldi R22,1
L24:
.dbline 63
;
; if(sec_flag!=tmp)
cp R22,R20
breq L25
.dbline 64
; {
.dbline 65
; Com_putstring ("PCF8563 Read Time: ",19,&RTbuf_UART0);
ldi R24,<_RTbuf_UART0
ldi R25,>_RTbuf_UART0
std y+1,R25
std y+0,R24
ldi R18,19
ldi R16,<L27
ldi R17,>L27
xcall _Com_putstring
.dbline 66
; Com_putstring (time,19,&RTbuf_UART0);
ldi R24,<_RTbuf_UART0
ldi R25,>_RTbuf_UART0
std y+1,R25
std y+0,R24
ldi R18,19
movw R16,R10
xcall _Com_putstring
.dbline 67
; Com_putstring ("\n\n",2,&RTbuf_UART0);
ldi R24,<_RTbuf_UART0
ldi R25,>_RTbuf_UART0
std y+1,R25
std y+0,R24
ldi R18,2
ldi R16,<L6
ldi R17,>L6
xcall _Com_putstring
.dbline 68
; }
L25:
.dbline 71
L8:
.dbline 35
xjmp L7
X0:
.dbline -2
L2:
adiw R28,9
.dbline 0 ; func end
ret
.dbsym r tmp 20 c
.dbsym r sec_flag 22 c
.dbsym r time 10 pc
.dbsym l Set_time 2 A[7:7]c
.dbend
.area data(ram, con, rel)
.dbfile D:\avrvi\AVRVi_m128_Starter_Kit\PCF8563_USART\source\main.c
L27:
.blkb 20
.area idata
.byte 'P,'C,'F,56,53,54,51,32,'R,'e,'a,'d,32,'T,'i,'m
.byte 'e,58,32,0
.area data(ram, con, rel)
.dbfile D:\avrvi\AVRVi_m128_Starter_Kit\PCF8563_USART\source\main.c
L6:
.blkb 3
.area idata
.byte 10,10,0
.area data(ram, con, rel)
.dbfile D:\avrvi\AVRVi_m128_Starter_Kit\PCF8563_USART\source\main.c
L5:
.blkb 19
.area idata
.byte 'P,'C,'F,56,53,54,51,32,'S,'e,'t,32,'T,'i,'m,'e
.byte 58,32,0
.area data(ram, con, rel)
.dbfile D:\avrvi\AVRVi_m128_Starter_Kit\PCF8563_USART\source\main.c
L3:
.blkb 20
.area idata
.byte 50,48,48,56,45,48,49,45,48,49,32,48,48,58,48,48
.byte 58,48,48,0
.area data(ram, con, rel)
.dbfile D:\avrvi\AVRVi_m128_Starter_Kit\PCF8563_USART\source\main.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -