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

📄 main.c

📁 93C46 三线读写程序 请大家试用,谢谢大家
💻 C
字号:
#include "DS1302.h"
#include <AT89X51.H>
#include "intrins.h"

sbit led  = P2^0;

#define uchar unsigned char
#define uint unsigned int
typedef  unsigned  char   BYTE;
typedef  unsigned  char   byte;
typedef  unsigned  int    word;

void int_0();       //外部中断0
////////////////////////////////////////
///////////////////////////////////////
sbit CS = P1^0;
sbit SK = P1^1;
sbit DI = P1^5;  /* 注意 DI/DO 是连在一起的 */
sbit DO = P1^5;

  void WriteEnabled()
  {
       bit  tp;
       BYTE jj;
  
       CS=0;
       SK=0;
       DI=0;
       CS=1;   
  
       DI=1; SK=1; DI=0; SK=0; // START 
       DI=0; SK=1; DI=0; SK=0;
       DI=0; SK=1; DI=0; SK=0;
       DI=1; SK=1; DI=0; SK=0;
       DI=1; SK=1; DI=0; SK=0;
  
       for(jj=1;jj<=5;jj++)  //skh
       {
            tp=0;
            DI=0x00;
            SK=1;
            DI=0;
            SK=0;
       }
       CS=0;
  }
  void WriteChar(BYTE addr, BYTE value)
  {
       BYTE i;  
       CS = 1;
       
       SK=0; DI=1; _nop_(); SK=1;
       SK=0; DI=0; _nop_(); SK=1;
       SK=0; DI=1; _nop_(); SK=1;
       SK=0;
  
       for( i=0;i<7;i++ )
       {
            SK=0;
            DI = (addr & 0x40) == 0x40; 
            _nop_();
            SK = 1;
            addr <<= 1;         
       }
       SK = 0;
       
       for( i=0;i<8;i++ )
       {
            SK=0;
            DI = (value & 0x80) == 0x80; /*    时钟为低时写数据    */
            _nop_();
            SK = 1;
            
            value <<= 1;         /*    移位操作会将数据交给C    */
       }
       SK = 0;       
       CS = 0;       
       return ;
  }
  BYTE ReadChar(BYTE addr)
  {
       BYTE i;
       BYTE Result;   
       
       CS = 1;  
       SK=0; DI=1; _nop_(); SK=1;
       SK=0; DI=1; _nop_(); SK=1;
       SK=0; DI=0; _nop_(); SK=1;
       SK=0;
  
       for( i=0;i<7;i++ )
       {
            DI = ((addr & 0x40) == 0x40);
            SK = 1;
            _nop_();_nop_();
            SK = 0;
            addr <<= 1;  
       }
       Result = 0;
       DO = 1;
       SK = 0;     
       for( i=0;i<8;i++ )
       {
            Result <<= 1;
  
            SK = 1;
            _nop_();_nop_();
            Result |= (BYTE) DO;
            SK = 0;
       }
       SK = 0;  
       CS = 0;  
       return Result;
  }
//////////////////////////////////////////
//////////////////////////////////////////

/*void Delay1ms(unsigned int count)
{
	unsigned int i,j;
	for(i=0;i<count;i++)
	for(j=0;j<120;j++);
}*/
void delay1(unsigned int num)
	{while(num!=0){num=num-1;}
	}
void t0(void)interrupt  0 
{
	BYTE aaa;

	aaa = ReadChar(8);	
  	led=~led;
}
main()
{
	BYTE bbb;
/*		//led =0;	
		//delay1(30000);
		//led =1;	
		//delay1(30000);
			}*/
   	EA=1;			//开启0号中断
	EX0=1;
	IT0=1;

	bbb = ReadChar(6);
	WriteEnabled();
	WriteChar(8, 0x30);
	while(1)
		{
		}
}

⌨️ 快捷键说明

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