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

📄 hal.c

📁 采用811芯片实现单片机读写U盘的源代码
💻 C
字号:
#define HAL_FILE
#include "include.h"

//unsigned char xdata SL811H_ADDR _at_ SL811_ADDR_PORT;
//unsigned char xdata SL811H_DATA _at_ SL811_DATA_PORT;

//unsigned char idata ttt[20];
//extern unsigned char xdata DBUF[BUFFER_LENGTH];

uchar getkey(void)
{
	uchar i,j,temp=0;
	
	while(1){
		i=P1;
		i=((~(i>>4))&0x0f);
		if(!i) break;
		if(i==temp){ j++; if(j>6) break;}
		else { temp=i; j=0;}
   }
   if(i){
   	if(i==1) return 1;
   	if(i==2) return 2;
   	if(i==4) return 3;
   	if(i==8) return 4;
   }
   return 0;
}
		
unsigned char SL811Read(unsigned char a)
{  
	unsigned char nVal;
	SL811H_ADDR=a;
	nVal=SL811H_DATA;
	return nVal;
}

void SL811Write(unsigned char a, unsigned char d)
{  
	SL811H_ADDR=a;
	SL811H_DATA=d;
}

void SL811BufRead(unsigned char addr, unsigned char *s, unsigned char c)
{	
	unsigned char i;
	SL811H_ADDR=addr;
	
	for(i=0;i<c;i++)
		{
		*s++ =SL811H_DATA;
		}
}

void SL811BufWrite(unsigned char addr, unsigned char *s, unsigned char c)
{	
	
	SL811H_ADDR=addr;
	
	while (c--) 
		{
		SL811H_DATA = *s++;
		}	
}

unsigned short WordSwap(unsigned short input)
{
	return(((input&0x00FF)<<8)|((input&0xFF00)>>8));
}

void DelayMs(unsigned char nFactor)
{
	unsigned char data i;
	unsigned int data j;

	for(i=0; i<nFactor; i++)
		{
	//子循环共14000个指令周期,24MHZ下为7MS		
//		MCU_LED2=0;
		for(j=0;j<1000;j++)
		          j=j;
//		MCU_LED2=1;
		}
}

void DelayUs(unsigned char nFactor)
{
	unsigned char i;
	unsigned int j;

	for(i=0; i<nFactor; i++)
		for(j=0;j<10;j++)
		          j=j;
}
unsigned long SwapINT32(unsigned long dData)
{
    dData = (dData&0xff)<<24|(dData&0xff00)<<8|(dData&0xff000000)>>24|(dData&0xff0000)>>8;
	return dData;
}

unsigned int SwapINT16(unsigned int dData)
{
    dData = (dData&0xff00)>>8|(dData&0x00ff)<<8;
	return dData;
}

uchar BitNum(uchar date)
{
	switch(date){
		case 1: 
			return 0;
			break;
		case 2: 
			return 1;
			break;		
		case 4: 
			return 2;
			break;
		case 8: 
			return 3;
			break;
		case 16: 
			return 4;
			break;
		case 32: 
			return 5;
			break;
		case 64: 
			return 6;
			break;
		case 128: 
			return 7;
			break;
		default:
			break;
	}		
	return 0xff;
}	

void memcpy_cur(void *dector,void *source,uint len)
{
	uchar *p,*q;
	p=(uchar *)source;
	q=(uchar *)dector;
	while(len){
		*q=*p;
		q++;p++;
		len--;
	}	
}

void memset_cur(void *source,uchar temp,uint len)
{
	uchar *p;
	p=(uchar *)source;
	while(len){
		*p=temp;
		p++;len--;
	}
}

char memcmp_cur(void *source,void *dector,uint len)
{
	uchar *p,*q;
	p=(uchar *)source;
	q=(uchar *)dector;
	while(len){
		if(*p!=*q){
			if(*p>*q) return -1;
			if(*p<*q) return 1;
		}	
		q++;p++;
		len--;
	}	
	return 0;
}

⌨️ 快捷键说明

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