⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ds1302.c

📁 AVR单片机的C语言源程序,AVR与SED1520(12232LCD)的驱动程序,可实现时钟液晶显示
💻 C
字号:
#include "iom32.h"
//#include "includes.h"
#define DS1302_C
unsigned char bflag;
unsigned char bpm;
unsigned char get_hours(void)
{
	unsigned char i;
	unsigned char R_Byte;
	unsigned char TmpByte;
	reset();
	write(0x85);
	ddr_set_io();
	R_Byte = 0x00;
	prt_clear_io();
	ddr_clear_io();
	for(i=0;i<4;i++)
	{
		
		    TmpByte=0;
		    if((pinp&(1<<io)))
		    			TmpByte=1;
		TmpByte<<=7;
		R_Byte>>=1;
		R_Byte|=TmpByte;
		prt_set_clk();
		delay_nus(2);
		prt_clear_clk();
		delay_nus(2);
	}
	bflag=0;
	if((pinp&(1<<io)))
				bflag=1;
	prt_set_clk();
	delay_nus(2);
	prt_clear_clk();
	delay_nus(2);
				bpm=0;
	if((pinp&(1<<io)))
							bpm=1;
	prt_set_clk();
	delay_nus(2);
	prt_clear_clk();
	delay_nus(2);
	prt_clear_rst();
	prt_clear_clk();
	R_Byte>>=4;
	return R_Byte;
}

unsigned char readbyte(unsigned char w_byte)
{
	unsigned char temp;
	reset();
	write(w_byte);
	temp=read();
	prt_clear_rst();
	prt_clear_clk();
	return temp;
}

void writebyte(unsigned char w_byte, unsigned char w_2_byte)
{
	reset();
	write(w_byte);
	write(w_2_byte);
	prt_clear_rst();
	prt_clear_clk();
}

void reset(void)                     //设置引脚
{
	ddr_set_rst();
	prt_clear_clk();
	prt_clear_rst();
	prt_set_rst();
}

void write(unsigned char W_Byte)
{
	unsigned char i;
	DDRC=0xFF;
	
	for(i=0;i<8;i++)
	{
		prt_clear_io();
		if(W_Byte&0x01)
		{
			prt_set_io();
		}
		prt_set_clkk();
		delay_nus(1);     //delay_nus(2);
		prt_clear_clk();
		delay_nus(1);     //delay_nus(2);
		W_Byte>>=1;
	}
}

unsigned char read(void)       //读取1302
{
	unsigned char i;
	unsigned char R_Byte;
	unsigned char R_Byte2;
	unsigned char TmpByte;
	ddr_set_io();
	R_Byte=0x00;
	R_Byte2=0x00;
	prt_clear_io();
	ddr_clear_io();
	for(i=0;i<4;i++)          //get the first 4 bits
	{
		        TmpByte=0;
		if((pinp&(1<<io)))
		{
			TmpByte=1;
		 	TmpByte=0x80;
		}
		//TmpByte<<=7;
		R_Byte=(R_Byte>>1);    //R_Byte>>=1;
		R_Byte|=TmpByte;
		prt_set_clk();
		delay_nus(1);    //delay_nus(2);
		prt_clear_clk();
		delay_nus(1);     //delay_nus(2);
	}
	for(i=0;i<4;i++)
	{
		TmpByte=0;
		if((pinp&(1<<io)))
		{
			TmpByte=1;
			TmpByte=0x80;
		}
		//TmpByte<<=7;
		R_Byte2=(R_Byte2>>1);//R_Byte2>>=1;
		R_Byte2|=TmpByte;
		prt_set_clk();
		delay_nus(1); //delay_nus(2);
		prt_clear_clk();
		delay_nus(1);//delay_nus(2);
	}
	R_Byte>>=4;
	R_Byte2>>=4;
	R_Byte=(R_Byte2*10)+R_Byte;
	return R_Byte;
}

⌨️ 快捷键说明

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