物理与电子工程学院
ACC7 = T_IO; T_CLK = 1; T_CLK = 0; }
return(ACC); }
void v_W1302(uchar ucAddr, uchar ucDa) {
T_RST = 0; T_CLK = 0; T_RST = 1;
v_RTInputByte(ucAddr); _nop_(); _nop_();
v_RTInputByte(ucDa); T_CLK = 1; T_RST = 0; }
uchar uc_R1302(uchar ucAddr) {
uchar ucDa; T_RST = 0; T_CLK = 0; T_RST = 1;
v_RTInputByte(ucAddr); _nop_(); _nop_();
ucDa = uc_RTOutputByte(); T_CLK = 1; T_RST = 0; return(ucDa); }
uchar bcdtodec(uchar bcd) {
uchar data1;
data1=((bcd&0x70)>>4)*10+(bcd&0x0f); return data1; }
21
物理与电子工程学院
uchar dectobcd(uchar dec) {
uchar dat;
dat=((dec/10)<<4|(dec)); return dat; }
void Write_DS1302Init(void) {
v_W1302(0x8e,0); v_W1302(0x80,0x00); v_W1302(0x8e,0); v_W1302(0x82,0x00); v_W1302(0x8e,0);
v_W1302(0x84,0x00); }
void Run_DS1302(void) {
uchar sec, min, hour; v_W1302(0x8f, 0);
sec = bcdtodec(uc_R1302(0x81)); v_W1302(0x8f, 0); min = bcdtodec(uc_R1302(0x83)); v_W1302(0x8f, 0);
hour = bcdtodec(uc_R1302(0x85));
L1602_char(2, 6, hour / 10 /*% 10 */+ 48); L1602_char(2, 7, hour % 10 + 48); L1602_char(2, 8, ':');
L1602_char(2, 9, min / 10/* % 10 */+ 48); L1602_char(2, 10, min % 10 + 48); L1602_char(2, 11, ':');
L1602_char(2, 12, sec / 10 /*% 10*/ + 48); L1602_char(2, 13, sec % 10 + 48); }
void int0() interrupt 0 {
timechange(); }
void Main(void)
22
物理与电子工程学院
{ L1602_init(); EA=1; EX0=1; IT0=1; while(1) { if((t==0)&&(m==0)) {
}
}
Write_DS1302Init(); } Run_DS1302();
23