/* 接口说明:
* ds1302 : sclk,data,rst 分别接 , ,
* 12864 液晶: CS,SID,SCLK,PSB,RST 分别接 , , , ,
*
*/
#include""
#define uchar unsigned char
#define uint unsigned int
#define SCLK_1 P2OUT|=BIT3//1302 芯片时钟端口
#define SCLK_0 P2OUT&=~BIT3
#define SCLK_OUT P2DIR|=BIT3
#define SCLK_IN P2DIR&=~BIT3
#define DATA_1 P2OUT|=BIT4//1302 芯片数据端口
#define DATA_0 P2OUT&=~BIT4
#define DATA_OUT P2DIR|=BIT4
#define DATA_IN P2DIR&=~BIT4
#define DATA (P2IN&BIT4)
#define RST_1 P2OUT|=BIT5// 复位端口
#define RST_0 P2OUT&=~BIT5
#define RST_OUT P2DIR|=BIT5
#define RST_IN P2DIR&=~BIT5
#define CPU_F ((double)1000000)
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/))
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/))
uchar digit[10]={"0123456789"};// 定义字符数组显示数字
/*****************************************************
函数功能:向 1302 写一个字节数据
入口参数: x
***************************************************/
void Write1302(uchar dat)
{
uchar i;
DATA_OUT;
SCLK_0;
delay_us(2);
for(i=0;i<8;i++)
{
if(dat&0x01) DATA_1;
else DATA_0;
delay_us(2);
SCLK_1;
delay_us(2);
SCLK_0;
dat>>=1;
}
}
/*****************************************************
函数功能:根据命令字,向 1302 写一个字节数据
入口参数: Cmd ,储存命令字; dat ,储存待写的数据
***************************************************/
void WriteSet1302(uchar Cmd,uchar dat)
{
RST_0;
SCLK_0;
RST_1;
delay_us(2);
Write1302(Cmd);
Write1302(dat);
SCLK_1;
RST_0;
}
/*****************************************************
函数功能:从 1302 读一个字节数据
入口参数: x
***************************************************/
uchar Read1302(void)
{
uchar i,dat;
DATA_IN;//
DATA_0;//
delay_us(2);
for(i=0;i<8;i++)
{
dat>>=1;
if(DATA!=0) dat|=0x80;
else dat&=0x7f;
SCLK_1;
delay_us(2);
SCLK_0;
delay_us(2);
}
DATA_OUT;//
return dat;
}
/*****************************************************
函数功能:根据命令字,从 1302 读取一个字节数据
入口参数: Cmd
***************************************************/
uchar R
msp430g2553 ds1302 来自淘豆网m.daumloan.com转载请标明出处.