⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pcf8563.lis

📁 ATMEGA128的PCF8536驱动程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .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 + -