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

📄 test.c

📁 DS12887A是Dallas公司的一款内置电池的时钟芯片。该程序基于GCC
💻 C
字号:
#include "avr/io.h"
#include "delay.h"
//#define DS_CS0      cbi(PORTC,PC0) 
//#define DS_CS1      sbi(PORTC,PC0) 
#define DS_AS0      cbi(PORTC,PC1) 
#define DS_AS1      sbi(PORTC,PC1) 
#define DS_READ     sbi(PORTC,PC2) 
#define DS_WRITE    cbi(PORTC,PC2) 
#define DS_DS0      cbi(PORTC,PC3) 
#define DS_DS1      sbi(PORTC,PC3) 

// 控制引脚定义intel 

#define DS_CS0      (PORTB&=0x7F)
#define DS_CS1      (PORTB|=0x80)
#define DS_ALE0     (PORTB&=0xBF)
#define DS_ALE1     (PORTB|=0x40)
#define DS_WR0      (PORTB&=0xDF)
#define DS_WR1      (PORTB|=0x20)
#define DS_RD0      (PORTB&=0xEF)
#define DS_RD1      (PORTB|=0x10) 
//#define NOP()		(asm("nop;"))

//#include "ds12887.h"
/*
void StartRT(void)
{
	PORTB&=0x1F;
	PORTA=0xAF;
	PORTB|=0x40;
}

void SetTime(void)
{
	
}

void GetTime(void)
{
	
}
int main()
{
	DDRA=0xff;
	DDRB=0xff;
	PORTB&=0xfe;
	delay_nms(400);
	PORTB|=0x01;
	delay_nms(1);
	StartRT();
	while(1)
	{
		


	}
	return 1;
}*/


//===== DS12C887 intel时序 ====== 
/*************************************** 
  函数功能:用来写 
***************************************/ 
void WriteAddrData(uint8_t dsaddress,uint8_t dsdata) 
{ 
    DS_ALE0; 
    DS_RD1; 
    DS_WR1; 
    DS_CS0;                     //选中时钟芯片 
    //NOP(); 
	asm("nop");
    // 
    DS_ALE1; 
    PORTA = dsaddress;          //RAM地址 
    asm("nop");
    asm("nop");
    DS_ALE0; 
    asm("nop");
    asm("nop");
    // 
    PORTA = dsdata;             //data 
    asm("nop");
    DS_WR0; 
    asm("nop");
    asm("nop"); 
    asm("nop"); 
    DS_ALE1; 
    DS_WR1; 
    DS_CS1;                     //关闭时钟芯片 
} 

/*************************************** 
  函数功能:用来读 
***************************************/ 
uint8_t ReadAddrData(uint8_t dsaddress) 
{ 
    uint8_t dsdata; 
    DS_ALE0; 
    DS_RD1; 
    DS_WR1; 
    DS_CS0;                     //选中时钟芯片 
    asm("nop"); 
    // 
    DS_ALE1; 
    PORTA = dsaddress;          //RAM地址 
    asm("nop");
    asm("nop");
    DS_ALE0; 
    asm("nop");
    asm("nop");
    // 
    DDRA=0x00;  // PORTA in 
    DS_RD0; 
    asm("nop");
    dsdata = PINA;             //data 
    DS_ALE1; 
    DS_RD1; 
    DS_CS1;                     //关闭时钟芯片 
    DDRA=0xff;  // PORTA out 
    return dsdata; 
} 
int main()
{

	long a;
	a=0;
	a=17/10;
	while(1)
		a=0;



	DDRA=0xff;
	DDRB=0xff;
	DDRD=0xff;
	PORTB&=0xfe;
	//delay_nms(400);
	PORTB|=0x01;
	delay_nms(1);
	//StartRT();
	unsigned int i;
	unsigned int Test;
	while(1)
	{
		for(i=0X2000;i<0X200D;i++)
		{
			WriteAddrData(i,i);
			asm("nop");
			asm("nop");asm("nop");
			asm("nop");
			asm("nop");
			asm("nop");
			Test=ReadAddrData(i);
			if (Test==i)
			{
				PORTD=~PORTD;
				//delay_nms(500);
			}
		}


	}
	return 1;
}

⌨️ 快捷键说明

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