📄 pcf8563.lis
字号:
.module pcf8563.c
.area text(rom, con, rel)
0000 .dbfile D:\mega16\drive\pcf8563.c
0000 .dbfunc e PCF8563Write _PCF8563Write fc
0000 ; NByte -> R22
0000 ; Data -> R20,R21
.even
0000 _PCF8563Write::
0000 0E940000 xcall push_gset2
0004 A801 movw R20,R16
0006 2197 sbiw R28,1
0008 .dbline -1
0008 .dbline 49
0008 ; /*********************************************************************************************************
0008 ; ** Small RTOS(51)
0008 ; ** The Real-Time Kernel(For Keil c51)
0008 ; **
0008 ; ** (c) Copyright 2002-2002, chenmingji
0008 ; ** All Rights Reserved
0008 ; **
0008 ; ** V1.11.0
0008 ; **
0008 ; **
0008 ; **--------------文件信息--------------------------------------------------------------------------------
0008 ; **文 件 名: Pcf8563.h
0008 ; **创 建 人: 陈明计
0008 ; **最后修改日期: 2002年12月9日
0008 ; **描 述: Small RTOS Pcf8563驱动程序源文件,也可以在不使用
0008 ; ** Small RTOS的情况下使用
0008 ; **--------------历史版本信息----------------------------------------------------------------------------
0008 ; ** 创建人: 陈明计
0008 ; ** 版 本: V1.00
0008 ; ** 日 期: 2002年12月9日
0008 ; ** 描 述: 原始版本
0008 ; **
0008 ; **------------------------------------------------------------------------------------------------------
0008 ; ** 修改人:
0008 ; ** 版 本:
0008 ; ** 日 期:
0008 ; ** 描 述:
0008 ; **
0008 ; **--------------当前版本修订------------------------------------------------------------------------------
0008 ; ** 修改人:
0008 ; ** 日 期:
0008 ; ** 描 述:
0008 ; **
0008 ; **------------------------------------------------------------------------------------------------------
0008 ; ********************************************************************************************************/
0008 ; #include "config.h"
0008 ;
0008 ; /*********************************************************************************************************
0008 ; ** 函数名称: PCF8563Write
0008 ; ** 功能描述: 设置PCF8563寄存器(仅允许一个任务可以调用)
0008 ; ** 输 入: Data[0]:设置寄存器数目
0008 ; ** Data[1]:设置寄存器的起始的地址
0008 ; ** Data[2]~Data[Data[1] + 1]:设置数据
0008 ; ** 输 出: 无
0008 ; ** 全局变量: 无
0008 ; ** 调用模块: 无
0008 ; ********************************************************************************************************/
0008 ; unsigned char PCF8563Write(unsigned char *Data)
0008 ; {
0008 .dbline 52
0008 ; unsigned char NByte;
0008 ;
0008 ; NByte = *Data++;
0008 FA01 movw R30,R20
000A 6191 ld R22,Z+
000C AF01 movw R20,R30
000E .dbline 53
000E ; NByte++;
000E 6395 inc R22
0010 .dbline 55
0010 ; // return (IIC_write(PCF8563Addr,Data,NByte));
0010 ; return (IICWrite(PCF8563Addr,Data,NByte));
0010 6883 std y+0,R22
0012 9F01 movw R18,R30
0014 02EA ldi R16,162
0016 0E940000 xcall _IICWrite
001A .dbline -2
001A L1:
001A 2196 adiw R28,1
001C 0E940000 xcall pop_gset2
0020 .dbline 0 ; func end
0020 0895 ret
0022 .dbsym r NByte 22 c
0022 .dbsym r Data 20 pc
0022 .dbend
0022 .dbfunc e PCF8563Read _PCF8563Read fc
0022 ; NByte -> R22
0022 ; Data -> R20,R21
.even
0022 _PCF8563Read::
0022 0E940000 xcall push_gset2
0026 A801 movw R20,R16
0028 2197 sbiw R28,1
002A .dbline -1
002A .dbline 68
002A ; }
002A ;
002A ; /*********************************************************************************************************
002A ; ** 函数名称: PCF8563Read
002A ; ** 功能描述: 读取PCF8563寄存器(仅允许一个任务可以调用)
002A ; ** 输 入: Data[0]:读取寄存器数目
002A ; ** Data[1]:读取寄存器的起始的地址
002A ; ** 输 出: Data:读取的数据
002A ; ** 全局变量: 无
002A ; ** 调用模块: 无
002A ; ********************************************************************************************************/
002A ; unsigned char PCF8563Read(unsigned char *Data)
002A ; {
002A .dbline 71
002A ; unsigned char NByte;
002A ;
002A ; NByte = *Data++;
002A FA01 movw R30,R20
002C 6191 ld R22,Z+
002E AF01 movw R20,R30
0030 .dbline 73
0030 ; // if(IIC_write(PCF8563Addr,Data,1) == FALSE) return FALSE;
0030 ; if(IICWrite(PCF8563Addr,Data,1) == FALSE) return FALSE;
0030 81E0 ldi R24,1
0032 8883 std y+0,R24
0034 9F01 movw R18,R30
0036 02EA ldi R16,162
0038 0E940000 xcall _IICWrite
003C 0230 cpi R16,2
003E 11F4 brne L3
0040 .dbline 73
0040 02E0 ldi R16,2
0042 0CC0 xjmp L2
0044 L3:
0044 .dbline 75
0044 ; // if(IIC_read(PCF8563Addr,Data - 1,NByte) == FALSE) return FALSE;
0044 ; if(IICRead(Data + 3,PCF8563Addr,NByte) == FALSE) return FALSE;
0044 6883 std y+0,R22
0046 22EA ldi R18,162
0048 8A01 movw R16,R20
004A 0D5F subi R16,253 ; offset = 3
004C 1F4F sbci R17,255
004E 0E940000 xcall _IICRead
0052 0230 cpi R16,2
0054 11F4 brne L5
0056 .dbline 75
0056 02E0 ldi R16,2
0058 01C0 xjmp L2
005A L5:
005A .dbline 76
005A ; return TRUE ;
005A 01E0 ldi R16,1
005C .dbline -2
005C L2:
005C 2196 adiw R28,1
005E 0E940000 xcall pop_gset2
0062 .dbline 0 ; func end
0062 0895 ret
0064 .dbsym r NByte 22 c
0064 .dbsym r Data 20 pc
0064 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -