导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→pcf8563的一个小问题,希望能得到答案,谢谢

* 58155: pcf8563的一个小问题,希望能得到答案,谢谢

   baolqkun 
baolqkun发表的帖子 

 pcf8563的一个小问题,希望能得到答案,谢谢
我现在用PCF8563,
程序有点问题
程序如下
 MINU DATA 30H ;秒寄存器
 SECO DATA 31H ;分寄存器
 HOU DATA 32H ;时寄存器
 DAY DATA 33H ;日寄存器
 WEEK DATA 34H ;周寄存器
 MONTH DATA 35H ;月寄存器
 YEAR DATA 36H ;年寄存器
 SLA DATA 37H ;37H为被控器的地址
 NUMBYT DATA 38H ;38H为数据字节计数器
 MRT DATA 40H ;接收数据缓冲区首地址
 MTD DATA 50H ;发送数据缓冲区首地址
 BITCNT DATA 39h     ; bit counter for I2C routines
 SLAVEADD DATA 3Ah     ; slave address for I2C routines
 INPUT DATA    3Bh     ; data recieved from the slave
 OUTPUT DATA    3Ch     ; data to be transmitted to slave
 NOACK BIT 00h     ; I2C no acknowledge flag
                  
;①PCF8563定时器工作模式
                  
PCFINT: MOV 51H,#81H ;设置PCF8563的0EH为81H,启动定时器,定时器频率64Hz                  
 MOV 52H,#64 ;设置PCF8563的0FH为64,定时器倒计数值为64                  
 MOV MTD,#0EH ;定时器控制寄存器字节首地址                  
 MOV NUMBYT,#3 ;写字节                  
 MOV SLA,#0A2H ;取写器件地址                  
 LCALL WRNBYT ;写8563

;以上配置完成后,PCF8563的INT脚产生周期为1s,脉冲宽度(低电平)约为15ms的脉冲中断信号。
;②PCF8563当前时间设定子程序如下:
PCFWR: MOV 51H,#00H ;启动时钟
 MOV 52H,#11H ;定时器为中断模式,脉冲形式
 MOV 53H,MINU ;将秒至年的时间写入发送缓冲区
 MOV 54H,SECO
 MOV 55H,HOU
 MOV 56H,DAY
 MOV 57H,WEEK
 MOV 58H,MONTH
 MOV 59H,YEAR
 MOV SLA,#0A2H ;取写器件地址
 MOV NUMBYT,#10 ;写字节数
 MOV MTD,#00H ;写入8563寄存器首地址为00H
 LCALL WRNBYT ;写入8563
 RET
;③读出时钟芯片当前值子程序设计
PCFRD: MOV MTD,#02H ;读时钟寄存器首字节地址02H
 MOV SLA,#0A2H ;取写器件地址
 MOV NUMBYT,#1 ;写字节数
 LCALL WRNBYT ;写8563
 MOV SLA,#0A3H ;取读器件地址
 MOV NUMBYT,#7 ;读七个时钟信息
 LCALL RDNBYT ;读取时间并放入缓冲区
 MOV A,40H ;取滗字节
 ANL A,#7FH ;屏蔽无效位
 MOV MINU,A ;送秒寄存器
 MOV A,41H ;取分字节
 ANL A,#7EH ;屏蔽无效位
 MOV MINU,A ;送分寄存器
 MOV A,42H ;取小时字节
 ANL A,#3FH ;屏蔽无效位
 MOV HOU,A ;送时寄存器
 MOV A,43H ;取天字节
 ANL A,#3FH ;屏蔽无效位
 MOV DAY,A ;送天寄存器
 MOV A,44H  ;取星期字节
 ANL A,#07H ;屏蔽无效位
 MOV WEEK,A ;送星期寄存器
 MOV A,45H ;取月字节
 ANL A,#1FH ;屏蔽无效位
 MOV MONTH,A ;送月寄存器
 RET
;系统程序流程如图4所示,中断服务程序如5所示。
; Send 8-bits in ACC to the slave
WRNBYT:
        MOV     BITCNT,#8       ; 8 bits in a byte
        SETB    MDE             ; to enable SDATA pin as an output
        CLR     MCO             ; make sure that the clock line is low
SENDBIT:
        RLC     A               ; put data bit to be sent into carry
        MOV     MDO,C           ; put data bit on SDATA line
        SETB    MCO             ; clock to send bit
        CLR     MCO             ; clear clock 
        DJNZ    BITCNT,SENDBIT  ; jump back and send all eight bits

        CLR     MDE             ; release data line for acknowledge
        SETB    MCO             ; send clock for acknowledge
        JNB     MDI,NEXT        ; this is a check for acknowledge
        SETB    NOACK           ; no acknowledge, set flag
NEXT:   CLR     MCO             ; clear clock 
        RET
;____________________________________________________________________
                                                            ; RCVBYTE
; receives one byte of data from an I2C slave device. Returns it in A

RDNBYT:
        MOV     BITCNT,#8       ; Set bit count.
        CLR     MDE             ; to enable SDATA pin as an input 
        CLR     MCO             ; make sure the clock line is low
RCVBIT:  
        SETB    MCO             ; clock to recieve bit
        CLR     MCO             ; clear clock
        MOV     C,MDI           ; read data bit into carry.
        RLC     A               ; Rotate bit into result byte.

        DJNZ    BITCNT,RCVBIT   ; Repeat until all bits received.
                                ; recieved byte is in the accumulator

        SETB    MDE             ; Data pin =Output for NACK
        SETB    MDO             ; Send NACK (always send NACK for
                                ; last byte in transmission)
        SETB    MCO             ; Send NACK clock.
        CLR     MCO
        RET



发表时间:2004年7月14日16:58:24

  
回复该帖

本主题共有 7 帖,分页:>>>>>该主题的所有内容[7]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  58435.[详细]有人知道吗?能帮个忙吗?
摘要:有人知道吗? 能帮个忙吗?......(24字)
- [baolqkun][749次] 2004年7月19日

  58581.[详细]有人知道吗?急用,谢谢
摘要:有人知道吗? 急用, 谢谢......(24字)
- [baolqkun][829次] 2004年7月20日

  58611.[详细]继续顶,不信没有人告诉我
摘要:继续顶, 不信没有人告诉我......(25字)
- [baolqkun][828次] 2004年7月21日

[上一篇帖子]:老主题,修改了重新发一下,高手一定赐教哦,谢谢大家好,小弟做的单片机控制打印机的程序,请高手指点!如
[下一篇帖子]:其实你可以试是试Micron的产品.