?? ht1622.c
字號(hào):
/*-----------------------------------------------------------------------------*/
/* TITLE : HT1622 operate routing */
/* MCU TYPE : FUJITSU MB89P935 */
// 入口參數(shù) :read1622(char,char *,char)
// write1622(char,char *,char)
// Command1622(char,char *,char)
//
// 出口參數(shù) : 無
//
// 使用硬件資源: 無
/*-----------------------------------------------------------------------------*/
//---------------------------------------------------------------------------------//
// CONST DEFINE & 1622 PORT DEFINE //
//---------------------------------------------------------------------------------//
#define HIGH 1
#define LOW 0
#define CS IO_PDR0.bit.P04
#define RD IO_PDR0.bit.P05
#define WR IO_PDR0.bit.P06
#define DATA IO_PDR0.bit.P07
#define DATAdir IO_DDR0.bit.P07
//--------------new pcb -------------//
//#define CS IO_PDR5.bit.P50
//#define RD IO_PDR0.bit.P01
//#define WR IO_PDR0.bit.P02
//#define DATA IO_PDR0.bit.P03
//#define DATAdir IO_DDR0.bit.P03
//---------------------------------------------------------------------------------//
// funtion define //
//--------------------------------------------------------------------------------//
void read1622(char,char *,char);
void write1622(char,char *,char);
void command1622(char *,char);
void send(char,char);
unsigned char receive(void);
void start(void);
void stop(void);
void delay1622(void);
//---------------------------------------------------------------------------------//
// 1622 operate funtion //
//---------------------------------------------------------------------------------//
void read1622(char Raddress,char * Rrampoint,char Rbytelength)
{
unsigned char i;
start();
send(0xC0,3);
send(Raddress,6);
//read byte from HT1622
for(i = 0;i < Rbytelength;i++)
{
*Rrampoint = receive();
Rrampoint++;
}
stop();
return;
}
/************************** begin of write1622()******************************/
void write1622(char Waddress,char *WramPoint,char Wbytelength)
{
unsigned char i;
start();
send(0xA0,3);
send(Waddress,6);
for(i=0;i<Wbytelength;i++)
{
send(*WramPoint,8);
WramPoint++;
}
stop();
return;
}
/***************************begin of command1622 ******************************/
void command1622(char *CramPoint,char Cbytelength)
{
unsigned char i;
start();
send(0x80,3);
for(i=0;i<Cbytelength;i++)
{
send(*CramPoint,8);
send(0x00,1);
CramPoint++;
}
stop();
}
/***********************end of command1622 ********************/
void delay1622()
{
unsigned char i;
for(i=0;i<10;i++);
return;
}
unsigned char receive()
{
unsigned char i,readbuffer;
IO_DDR0 = IO_DDR0 & 0X7F;//DATAdir = LOW;
IO_DDR0 = IO_DDR0 & 0X7F;//DATAdir = LOW;
IO_DDR0 = IO_DDR0 & 0X7F;//DATAdir = LOW;
for(i = 0;i < 8;i++){
RD = LOW;
readbuffer <<= 1;
delay1622();
RD = HIGH;
if(DATA) readbuffer++;
delay1622();
}
IO_DDR0 = IO_DDR0 | 0X80;//DATAdir = HIGH;
IO_DDR0 = IO_DDR0 | 0X80;//DATAdir = HIGH;
IO_DDR0 = IO_DDR0 | 0X80;//DATAdir = HIGH;
return(readbuffer);
}
void send(char writebuffer,char bitLength)
{
unsigned char i;
for(i = 0;i < bitLength;i++)
{
if(writebuffer & 0x80) DATA = HIGH;
else DATA = LOW;
WR = LOW;
delay1622();
WR = HIGH;
delay1622();
writebuffer <<= 1;
}
return;
}
void start()
{
CS = HIGH;
WR = HIGH;
RD = HIGH;
DATA = HIGH;
delay1622();
delay1622();
CS = LOW;
delay1622();
return;
}
void stop()
{
WR = HIGH;
RD = HIGH;
CS = HIGH;
DATA = HIGH;
delay1622();
return;
}
/*********************** all of 1622 operate function ****************************/
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -