📄 pcf8563.lis
字号:
.module PCF8563.c
.area data(ram, con, rel)
0000 _week_list::
0000 .blkw 1
.area idata
0000 6500 .word L2
.area data(ram, con, rel)
0002 .blkw 1
.area idata
0002 5B00 .word L3
.area data(ram, con, rel)
0004 .blkw 1
.area idata
0004 5100 .word L4
.area data(ram, con, rel)
0006 .blkw 1
.area idata
0006 4700 .word L5
.area data(ram, con, rel)
0008 .blkw 1
.area idata
0008 3D00 .word L6
.area data(ram, con, rel)
000A .blkw 1
.area idata
000A 3300 .word L7
.area data(ram, con, rel)
000C .blkw 1
.area idata
000C 2900 .word L8
.area data(ram, con, rel)
000E .dbfile D:\avrvi\AVRVi_m128_Starter_Kit\PCF8563_USART\source\lib\PCF8563.c
000E .dbsym e week_list _week_list A[14:7]pc
000E _time_tmp::
000E .blkb 9
.area idata
000E 30303A30303A303000 .byte 48,48,58,48,48,58,48,48,0
.area data(ram, con, rel)
0017 .dbfile D:\avrvi\AVRVi_m128_Starter_Kit\PCF8563_USART\source\lib\PCF8563.c
0017 .dbsym e time_tmp _time_tmp A[9:9]c
0017 _data_tmp::
0017 .blkb 11
.area idata
0017 323030382E30312E303100 .byte 50,48,48,56,46,48,49,46,48,49,0
.area data(ram, con, rel)
0022 .dbfile D:\avrvi\AVRVi_m128_Starter_Kit\PCF8563_USART\source\lib\PCF8563.c
0022 .dbsym e data_tmp _data_tmp A[11:11]c
0022 _time::
0022 .blkb 2
.area idata
0022 4059 .byte 64,'Y
.area data(ram, con, rel)
0024 .dbfile D:\avrvi\AVRVi_m128_Starter_Kit\PCF8563_USART\source\lib\PCF8563.c
0024 .blkb 2
.area idata
0024 2329 .byte 35,41
.area data(ram, con, rel)
0026 .dbfile D:\avrvi\AVRVi_m128_Starter_Kit\PCF8563_USART\source\lib\PCF8563.c
0026 .blkb 2
.area idata
0026 0502 .byte 5,2
.area data(ram, con, rel)
0028 .dbfile D:\avrvi\AVRVi_m128_Starter_Kit\PCF8563_USART\source\lib\PCF8563.c
0028 .blkb 1
.area idata
0028 08 .byte 8
.area data(ram, con, rel)
0029 .dbfile D:\avrvi\AVRVi_m128_Starter_Kit\PCF8563_USART\source\lib\PCF8563.c
0029 .dbsym e time _time A[7:7]c
.area text(rom, con, rel)
0000 .dbfile D:\avrvi\AVRVi_m128_Starter_Kit\PCF8563_USART\source\lib\PCF8563.c
0000 .dbfunc e clear _clear fV
0000 ; num -> R18
0000 ; p -> R16,R17
.even
0000 _clear::
0000 .dbline -1
0000 .dbline 41
0000 ; /************************************************
0000 ; 文件:PCF8563.h
0000 ; 用途:PCF8563函数头文件
0000 ; 注意:系统时钟8M
0000 ; 创建:2008.1.25
0000 ; 修改:2008.1.25
0000 ; Copy Right (c) www.avrvi.com AVR与虚拟仪器
0000 ; ************************************************/
0000 ; #include "..\config.h"
0000 ; unsigned char syserr;
0000 ; unsigned char *week_list[7]={
0000 ; " Sunday ",
0000 ; " Monday ",
0000 ; " Tuesday ",
0000 ; "Wednesday",
0000 ; "Thursday ",
0000 ; " Friday ",
0000 ; "Saturday "
0000 ; };
0000 ; unsigned char write_buff[8],read_buff[8],time_tmp[]="00:00:00",data_tmp[]="2008.01.01",*week_tmp;
0000 ; unsigned char time[7]={
0000 ; 0x40/*秒*/,
0000 ; 0x59/*分*/,
0000 ; 0x23/*时*/,
0000 ; 0x29/*天*/,
0000 ; 0x05/*星期*/,
0000 ; 0x02/*月/世纪*/,
0000 ; 0x08/*年*/
0000 ; };
0000 ; /*************************************************************************
0000 ; ** 函数名称: clear(unsigned char *p,unsigned char num)
0000 ; ** 功能描述: 清除指定区域指定长度的数据
0000 ; ** 输 入: unsigned char *p :起始地址 unsigned char num :零数据长度
0000 ; ** 输出 :
0000 ; ** 全局变量:
0000 ; ** 调用模块:
0000 ; ** 说明:
0000 ; ** 注意:
0000 ; **************************************************************************/
0000 ; void clear(unsigned char *p,unsigned char num)
0000 ; {
0000 .dbline 42
0000 ; for(;num>0;num--)
0000 06C0 xjmp L13
0002 L10:
0002 .dbline 43
0002 .dbline 44
0002 2224 clr R2
0004 F801 movw R30,R16
0006 2082 std z+0,R2
0008 .dbline 45
0008 0F5F subi R16,255 ; offset = 1
000A 1F4F sbci R17,255
000C .dbline 46
000C L11:
000C .dbline 42
000C 2A95 dec R18
000E L13:
000E .dbline 42
000E 2224 clr R2
0010 2216 cp R2,R18
0012 B8F3 brlo L10
0014 .dbline -2
0014 L9:
0014 .dbline 0 ; func end
0014 0895 ret
0016 .dbsym r num 18 c
0016 .dbsym r p 16 pc
0016 .dbend
0016 .dbfunc e PCF8536_wt _PCF8536_wt fV
0016 ; t -> R10
0016 ; data -> R20
0016 ; add -> R22,R23
.even
0016 _PCF8536_wt::
0016 0E940000 xcall push_gset3
001A 422F mov R20,R18
001C B801 movw R22,R16
001E .dbline -1
001E .dbline 60
001E ; {
001E ; *p=0;
001E ; p++;
001E ; }
001E ; }
001E ; /*************************************************************************
001E ; ** 函数名称: PCF8536_wt(unsigned int add,unsigned char data)
001E ; ** 功能描述: 向PCF8563指定地址写入一条数据
001E ; ** 输 入: unsigned int add :高八位为器件地址,低八位为内部寄存器地址
001E ; unsigned char data :需要写入的数据
001E ; ** 输出 :
001E ; ** 全局变量:
001E ; ** 调用模块:
001E ; ** 说明:
001E ; ** 注意:
001E ; **************************************************************************/
001E ; void PCF8536_wt(unsigned int add,unsigned char data)
001E ; {
001E .dbline 62
001E ; unsigned char t;
001E ; t=add>>8;
001E 5B01 movw R10,R22
0020 AB2C mov R10,R11
0022 BB24 clr R11
0024 .dbline 63
0024 ; t<<=1;
0024 AA0C lsl R10
0026 .dbline 64
0026 ; i2cstart();
0026 0E940000 xcall _i2cstart
002A .dbline 65
002A ; if(i2cwt(W_ADD_COM+t)==SLAW)
002A 0A2D mov R16,R10
002C 0E55 subi R16,94 ; addi 162
002E 0E940000 xcall _i2cwt
0032 0831 cpi R16,24
0034 39F4 brne L15
0036 .dbline 66
0036 ; {
0036 .dbline 67
0036 ; i2cwt(add);
0036 062F mov R16,R22
0038 0E940000 xcall _i2cwt
003C .dbline 68
003C ; i2cwt(data);
003C 042F mov R16,R20
003E 0E940000 xcall _i2cwt
0042 .dbline 69
0042 ; }
0042 03C0 xjmp L16
0044 L15:
0044 .dbline 70
0044 ; else syserr=ERR_SLAW;
0044 81E0 ldi R24,1
0046 80930000 sts _syserr,R24
004A L16:
004A .dbline 71
004A ; i2cstop();
004A 0E940000 xcall _i2cstop
004E .dbline -2
004E L14:
004E 0E940000 xcall pop_gset3
0052 .dbline 0 ; func end
0052 0895 ret
0054 .dbsym r t 10 c
0054 .dbsym r data 20 c
0054 .dbsym r add 22 i
0054 .dbend
0054 .dbfunc e PCF8536_wt_p _PCF8536_wt_p fV
0054 ; t -> R12
0054 ; num -> R20
0054 ; p -> R22,R23
0054 ; add -> R10,R11
.even
0054 _PCF8536_wt_p::
0054 0E940000 xcall push_gset4
0058 B901 movw R22,R18
005A 5801 movw R10,R16
005C 4885 ldd R20,y+8
005E .dbline -1
005E .dbline 86
005E ; }
005E ; /*************************************************************************
005E ; ** 函数名称: PCF8536_wt_p(unsigned int add,unsigned char *p,unsigned char num)
005E ; ** 功能描述: 向PCF8563地址连续的寄存器写入系列数据
005E ; ** 输 入: unsigned int add :高八位为器件地址,低八位为内部寄存器地址
005E ; unsigned char *p :需要写入的数据域的起始地址
005E ; unsigned char num :写入数据的个数
005E ; ** 输出 :
005E ; ** 全局变量:
005E ; ** 调用模块:
005E ; ** 说明:写入数据区域为地址连续的寄存器
005E ; ** 注意:
005E ; **************************************************************************/
005E ; void PCF8536_wt_p(unsigned int add,unsigned char *p,unsigned char num)
005E ; {
005E .dbline 88
005E ; unsigned char t;
005E ; t=add>>8;
005E 6501 movw R12,R10
0060 CD2C mov R12,R13
0062 DD24 clr R13
0064 .dbline 89
0064 ; t<<=1;
0064 CC0C lsl R12
0066 .dbline 90
0066 ; i2cstart();
0066 0E940000 xcall _i2cstart
006A .dbline 91
006A ; if(i2cwt(W_ADD_COM+t)==SLAW)
006A 0C2D mov R16,R12
006C 0E55 subi R16,94 ; addi 162
006E 0E940000 xcall _i2cwt
0072 0831 cpi R16,24
0074 81F4 brne L18
0076 .dbline 92
0076 ; {
0076 .dbline 93
0076 ; i2cwt(add);
0076 0A2D mov R16,R10
0078 0E940000 xcall _i2cwt
007C .dbline 94
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -