12c887.c

来自「利用热释红外传感器、12C887和PIC单片机制作的智能电子时钟」· C语言 代码 · 共 61 行

C
61
字号
#include <pic.h>
#include "12c887.h";

/////////////   SUNROUTINE DECLARE   /////////////
void _12cc877_init(void);                                   // initialize RTC 12C887
extern _12c887_read(unsigned char ADDRESS);                            // 12C887 data read routine
extern _12c887_write(unsigned char ADDRESS,unsigned char DATA);        // 12C887 data write routine

/////////////////// SUBROUTINE ///////////////////
_12c887_init()              // initialize RTC 12c887
{
    _12c887_write(SECOND,0x00);     // write current time
    _12c887_write(MINUTE,0x10);
    _12c887_write(HOUR,0x19);
    _12c887_write(DayOfWeek,0x02);
    _12c887_write(DayOfMonth,0x02);
    _12c887_write(MONTH,0x10);
    _12c887_write(YEAR,0x07);
    _12c887_write(CENTURY,0x20);
    _12c887_write(MINUTE_ALARM,0x30);
    _12c887_write(HOUR_ALARM,0x09);
    _12c887_write(REGA,0b10101111); // configure the control register
    _12c887_write(REGB,0b01111010);
    _12c887_write(REGC,0b00000000);
}

_12c887_read(unsigned char ADDRESS) // read 12c887 data
{
    unsigned char temp;
    TRISD=0x00;
    WR=1;
    RD=1;
    ALE=1;
    CS=0;
    PORTD=ADDRESS;
    ALE=0;
    TRISD=0xff;
    RD=0;
    temp=PORTD;
    RD=1;
    CS=1;
    ALE=1;
    return(temp);
}

_12c887_write(unsigned char ADDRESS,unsigned char DATA) // write 12c887 data
{
    TRISD=0x00;
    WR=1;
    RD=1;
    ALE=1;
    CS=0;
    PORTD=ADDRESS;
    ALE=0;
    PORTD=DATA;
    WR=0;
    WR=1;
    ALE=1;
    CS=1;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?