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

📄 time1.c

📁 DSP读写DS1305时钟芯片一体函数
💻 C
字号:
unsigned int time_buf[6],time_buf2[6];
unsigned int time_flag_zxb;
extern  int d_b_addr,portc_new,porta_new,portb_new;    
extern unsigned char xizi[][16],long_tisi;      
extern volatile int *C82_ADD2;
extern volatile int *C82_ADD;
volatile int *TRC_ADD=(volatile int *)0x81c000;
#define  sclk_time C82_ADD2[0x01] //bit PB0 82_2  0x810000;
#define  sd_time  C82_ADD[0x02] //bit PC6 82_1
unsigned int r_time[6]={0x00,0x01,0x02,0x04,0x05,0x06};
unsigned int w_time[6]={0x80,0x81,0x82,0x84,0x85,0x86};
#define W_CONTROL 0x8f   //0x9F	//11111001
#define W_STATUS 0x90   //0x0A1	//10000101
#define W_TRICKLE 0x91   //0xA3	//11000101

/****************************************/
/*************中断的考虑*****************/
/****************************************/

/*入口:C82_ADD2[0x03]=0x00009100;  C(0~3):IN  C(4~7): OUT A:OUT B:OUT*/
/*      C82_ADD[0x03]=0x00008000    C:OUT   A;OUT   B:OUT */
void time_io(unsigned int RTC_REG,unsigned int write_count,unsigned int *data_addr)/*注意与其他PC PB PA 口冲突*/
{ 	unsigned int i,temp,*time_byte_zxb;
	time_byte_zxb=data_addr;
	temp=RTC_REG;
	
	sclk_time=0x00000000;  /*对USB 口的BUSY信号有影响*/
	TRC_ADD[0]=0x00; /*ke yi bu yong yao*/
	asm("  nop");asm("  nop");asm("  nop"); 
	 for(i=0;i<8;i++)
		{
		sclk_time=0x00000000;    
		if((temp&0x01)==0x01)   
		/*sd_time=0x00004000;*/
		C82_ADD[0x03]=0x00000D00;
		else 
		/*sd_time=0x00000000;*/
		C82_ADD[0x03]=0x00000C00;	
		asm("  nop");asm("  nop");asm("  nop");
		asm("  nop");asm("  nop");asm("  nop");
		sclk_time=0x00000100;
		asm("  nop");asm("  nop");asm("  nop");
		asm("  nop");asm("  nop");asm("  nop");
		temp=temp>>1;
		}
	temp=0x0080&RTC_REG;
	if(temp!=0)
	{temp=write_count;
	 for(i=0;i<8;i++)
	 	{sclk_time=0x00000000;
	 	if((temp&0x01)==0x01)   
		sd_time=0x00004000;
		else 
		sd_time=0x00000000;	
		asm("  nop");asm("  nop");asm("  nop");
		asm("  nop");asm("  nop");asm("  nop");
		sclk_time=0x00000100;
		asm("  nop");asm("  nop");asm("  nop");
		asm("  nop");asm("  nop");asm("  nop");
		temp=temp>>1;
	 	}
	sclk_time=0x00000000;
	}
	else
	{
	 C82_ADD[0x03]=0x00008800;/*C(0~3):OUT  C(4~7): IN  A:OUT B:OUT*/  
		for(i=0;i<8;i++)
		{
		sclk_time=0x00000000;	
		asm("  nop");asm("  nop");asm("  nop");
		asm("  nop");asm("  nop");asm("  nop");
		temp=((sd_time&0x004000)>>(14-i))|temp; 
		sclk_time=0x00000100;
		asm("  nop");asm("  nop");asm("  nop");
		asm("  nop");asm("  nop");asm("  nop");
		}
	*time_byte_zxb=temp;
	sclk_time=0x00000000;
	}
	TRC_ADD[0]=0x00; 
	C82_ADD[0x03]=0x00008000;
	portb_new=portb_new | 0x18;          
	C82_ADD[1]=portb_new<<8;
	C82_ADD[0x02]=portc_new<<8;    
	C82_ADD[0]=porta_new<<8;
	
}


void wr_time_zxb()
	{	
	unsigned int i;
	for(i=0;i<7;i++)
	time_io(w_time[i],time_buf[i],time_buf);	
	}

void rd_time_zxb()
	{	
	unsigned int i;
	for(i=0;i<7;i++)
	time_io(r_time[i],1,time_buf2+i);		//	
	}

void initclock_zxb()
	{
	time_io(W_CONTROL,0,time_buf);
	time_io(W_TRICKLE,0x0a6,time_buf);
	time_buf[0]=0x56;
	time_buf[1]=0x40;
	time_buf[2]=0x14;
	time_buf[3]=0x23;
	time_buf[4]=0x08;
	time_buf[5]=0x05;
	wr_time_zxb();  
	time_io(W_CONTROL,0x40,time_buf2);
}

⌨️ 快捷键说明

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