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

📄 24lc16.c

📁 这个系统是我根据常州拨云拨号器的硬体写的应用系统,完全兼容拨云拨号器的硬件和全功能实现,能实现自动拨接语音ip接入号,设定十组,各种号码路由权限设定!反极侦察产生!
💻 C
字号:
		  
/*
****************************************************************************
			AT24C08 test program, Test ok!,Us with [delay.asm]
			Write byte Tan-wentang, 2004-08-15

****************************************************************************
*/


#include <reg2051.h>
#include <intrins.H>

#include "Dialer_program.h"

extern void delay(unsigned char k);
extern bit EETestAcknowledge (void);
extern unsigned char EEReadByte (void);
extern void EESendByte (unsigned char d);
extern void EEStop (void);
extern void EEAcknowledge (void);
extern void EENoAcknowledge (void);
extern void EEStart (void);
extern void EESendWcom (unsigned char Block, com);
extern void EEReadPage (unsigned char *str, unsigned char Block, unsigned char StartAddr, unsigned char n) ;
extern void EEWritePage (unsigned char *str, unsigned char Block, unsigned char StartAddr, unsigned char n);

//=========================================================================

bit EETestAcknowledge (void) {
	SDA_24C08 = 1;	  
	_nop_();
	_nop_();
	CLK_24C08 = 1;	    
	_nop_();
	_nop_();
	F0 = SDA_24C08;
	_nop_();
	_nop_();
	CLK_24C08 = 0;	     
	return F0;	            
}
//=========================================================================

unsigned char EEReadByte (void) { 
	unsigned char d = 0;
	unsigned char i;
	     
	i = 8;
	do {
		CLK_24C08 = 1;
		d *= 2;	   
		if (SDA_24C08) d++;
		CLK_24C08 = 0;	   
		_nop_();
	} while (--i);
	return d;	             
}
//=========================================================================

void EESendByte (unsigned char d) {
	unsigned char i;

	i = 8;
	do {
		SDA_24C08 = (bit)(d & 0x80);    
		_nop_();
		_nop_();
		CLK_24C08 = 1;	    
		_nop_();
		_nop_();
		CLK_24C08 = 0;	    
		d *= 2;
	} while(--i);
	return;	            
}	 
           
//=========================================================================

void EEStop (void) {
	CLK_24C08 = 0;	      
	_nop_();
	_nop_();
	SDA_24C08 = 0;	      
	_nop_();
	_nop_();
	CLK_24C08 = 1;	      
	_nop_();
	_nop_();
	SDA_24C08 = 1;	      
	return;	        
}	    
//=========================================================================
void EEAcknowledge (void) {
	SDA_24C08 = 0;	      
	_nop_();
	_nop_();
	CLK_24C08 = 1;	      
	_nop_();
	_nop_();
	CLK_24C08 = 0;	      
	_nop_();
	_nop_();
	SDA_24C08 = 1;	      
	return;	            
}
//=========================================================================
void EENoAcknowledge (void) {
	SDA_24C08 = 1;	     
	_nop_();
	_nop_();
	CLK_24C08 = 1;	     
	_nop_();
	_nop_();
	CLK_24C08 = 0;	     
	return;	           
}
//=========================================================================
void EEStart (void) {
	SDA_24C08 = 1;
	_nop_();	  
	_nop_();
	CLK_24C08 = 1;	     
	_nop_();
	_nop_();
	SDA_24C08 = 0;	     
	_nop_();
	_nop_();
	CLK_24C08 = 0;	     
	return;	           	
}
//=========================================================================

void EESendWcom (unsigned char Block, com) {
	EEStart();
	//EESendByte(0xa0); 
	EESendByte(0xa0 | com | ((Block & 0x07) * 2)); 
}	                

//=========================================================================

void EEReadPage (unsigned char *str, unsigned char Block, unsigned char StartAddr, unsigned char n) {
//	WP = 0;
	EESendWcom(Block , 0x00);
	EETestAcknowledge();	

	EESendByte(StartAddr);                 
	EETestAcknowledge(); 
	          
	EEStart();	  
	EESendWcom(Block , 0x01);
	EETestAcknowledge();  
	         
	do {
		if (1 == n)	break;
		if (0 == n) break;
			
		*str = EEReadByte();                 
		EEAcknowledge();          
		str++;
		n--;  
	} while(1);
	*str = EEReadByte();       
	EENoAcknowledge();            
	EEStop();	  
//	WP = 1;
	//EEDelayMs(0x000a);		
}	
// 0 1 2 3 4 5 6 7 * 256 = 8 * 0x100 = 0x800 
// 0 1 2 3 4 5 6 7 * 256 = 8 * 0x100 * 8 = 0x4000  
//=========================================================================
//;        MOV    R5, #83H     ;DATAADDR
//;        MOV    R3, 2BH	   ;EEPROMADDR
//;        MOV    R2, 2AH	   ;EEPROM BLOCK ADDR
//;        MOV    R7, #01H     ;BYTE COUNT
//;        LCALL  L1EE3H	
//=========================================================================
void EEWritePage (unsigned char *str, unsigned char Block, unsigned char StartAddr, unsigned char n) {
//	WP = 0;
	EESendWcom(Block , 0x00);
	EETestAcknowledge();	

	EESendByte(StartAddr);                 
	EETestAcknowledge();           
	         
	do {
		if (0 == n) break;
		EESendByte(*str);                  
		EETestAcknowledge();        
		str++;
		n--;
	} while (1);
	EEStop();	  
	delay(0x02);
//	WP = 1;
}
void delay(unsigned char k){
	unsigned char i,j;
	for(k;k > 0;k--){
		for (i=0;i<0x02;i++){
			for(j=0;j<0xFF;j++){
			}
		}
	}
}

⌨️ 快捷键说明

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