?? ds1302._c
字號(hào):
#include <iom16v.h>
#include <macros.h>
#include "1602LCD.h"
/************************************************
延時(shí)程序
************************************************/
void delay(uchar n)
{
uchar a;
for(a=0;a<n;a++)
;
}
/****************************************************
寫(xiě)一個(gè)字節(jié)
****************************************************/
void write_data(uchar addr,uchar data)
{
unsigned char i,temp;
T_DDR|=T_IO;
T_PORT&=~T_RST;
T_PORT&=~T_CLK;
asm("nop");
asm("nop");
asm("nop");
asm("nop");
T_PORT|=T_RST; //時(shí)鐘信號(hào)低時(shí)拉高RST初始化
temp=addr;
for(i=0;i<8;i++)
{
if(temp&(1<<i))
T_PORT |=T_IO ;
else
T_PORT &=~T_IO ;
asm("nop");
asm("nop");
T_PORT |=T_CLK; //時(shí)鐘上升沿寫(xiě)入數(shù)據(jù)
asm("nop");
T_PORT &=~T_CLK; //時(shí)鐘拉低電平
}
temp=data;
for(i=0;i<8;i++)
{
if(temp&(1<<i))
T_PORT |=T_IO ;
else
T_PORT &=~T_IO ;
asm("nop");
asm("nop");
T_PORT |=T_CLK; //時(shí)鐘上升沿寫(xiě)入數(shù)據(jù)
asm("nop");
T_PORT &=~T_CLK; //時(shí)鐘拉低電平
}
T_PORT&=~T_RST; //禁止DS1302
}
/***************************************************
讀一個(gè)字節(jié)
***************************************************/
uchar read_data(uchar addr)
{
uchar i,temp,k;
temp=0;
T_DDR|=T_IO;
T_PORT&=~T_RST;
T_PORT&=~T_CLK;
asm("nop");
asm("nop");
asm("nop");
asm("nop");
T_PORT|=T_RST; //時(shí)鐘信號(hào)低時(shí)拉高RST初始化
temp=addr;
for(i=0;i<8;i++)
{
if(temp&(1<<i))
T_PORT |=T_IO ;
else
T_PORT &=~T_IO ;
asm("nop");
asm("nop");
T_PORT |=T_CLK; //時(shí)鐘上升沿寫(xiě)入數(shù)據(jù)
T_PORT &=~T_CLK; //時(shí)鐘拉低電平
}
T_DDR&=~T_IO;
for(i=0;i<8;i++)
{
k=(T_PIN&T_IO);
if(k==T_IO)
temp|=(1<<i);
else
temp&=~(1<<i);
asm("nop");
asm("nop");
T_PORT|=T_CLK; //上升沿讀出數(shù)據(jù)
T_PORT &=~T_CLK; //時(shí)鐘電平拉低
}
T_DDR|=T_IO;
T_PORT&=~T_CLK;
T_PORT&=~T_RST; //禁止DS1302
return(temp);
}
//1302初始化
void init_1302()
{
write_data(0x8e,0x00); //關(guān)閉寄存器寫(xiě)保護(hù)
write_data(0x90,0x00); //寫(xiě)充電寄存器
write_data(0x80,0x00); //秒寄存器停止位置0,時(shí)鐘啟動(dòng),初值設(shè)為0
}
void init_time(uchar sec,uchar min,uchar hour,uchar day,uchar month,uchar d,uchar year)
{
write_data(0x80,sec);
write_data(0x82,min);
write_data(0x84,hour);
write_data(0x86,day);
write_data(0x88,month);
write_data(0x8a,d);
write_data(0x8c,year);
PORTA = 0xc7;//端口設(shè)置
DDRA = 0xc7;
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -