📄 hal.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 + -