📄 1632_driver.c
字号:
//-----------------------------------------------
//filename : 1632_driver.c
//stack : 2
//programer : dolphin
//date : 2007-02-26
//-----------------------------------------------
/*
//--- 1632_driver.c ---
void SBR_PRECOMMAND_1632(void); //send "100" for command
void SBR_COMMAND_1632(unsigned char command); //send command for 1632
void SBR_PREDATA_1632(void); //send "101" for data
void SBR_ADDRESS_1632(unsigned char address); //send address for 1632 RAM
void SBR_DATA_1632(unsigned char data); //send data for 1632
void SBR_INIT_1632(void); //inital 1632's set
void SBR_ALLRAM_1632(bit F_RAM1632_SET); //clear or set all ram for 1632
*/
//-----------------------------------------------
//Const define
#define C_COMMAND1632_SYSEN 0x01 //SYSTEM ENABLE
#define C_COMMAND1632_OPTION 0x2c //P-MOS OUTPUT AND 16 COMMON OPTION(8-com 0x28)
#define C_COMMAND1632_LEDON 0x03 //LED ON
#define C_COMMAND1632_LEDOFF 0x02 //LED OFF
#define C_COMMAND1632_BLINKOFF 0x08 //BLINK OFF
#define C_COMMAND1632_BLINKON 0x09 //BLINK OFF
#define C_COMMAND1632_PWMDUTY 0xaa //PWM DUTY SET(0xa0~0xaf)
/*
#define P_WR_1632 _pa0
#define P_DATA_1632 _pa1
#define P_WRC_1632 _pac0
#define P_DATAC_1632 _pac1
*/
//-----------------------------------------------
//function : SBR_INIT_1632
//in : NULL
//out : NULL
//description: inital 1632's set
//notice : user must set CS before call this function
//-----------------------------------------------
void SBR_INIT_1632()
{
// P_WR_1632 = 1;
// P_WRC_1632 = 0;
// P_DATAC_1632 = 0; //set IO output
SBR_PRECOMMAND_1632();
SBR_COMMAND_1632(C_COMMAND1632_SYSEN); //SYSTEM ENABLE
SBR_COMMAND_1632(C_COMMAND1632_OPTION); //P-MOS OUTPUT AND 16COMMON OPTION
SBR_COMMAND_1632(C_COMMAND1632_LEDON); //LED ON
SBR_COMMAND_1632(C_COMMAND1632_BLINKOFF); //BLINK OFF
SBR_COMMAND_1632(C_COMMAND1632_PWMDUTY); //PWM DUTY SET
}
//-----------------------------------------------
//function : SBR_ALLRAM_1632
//in : NULL
//out : NULL
//description: clear or set all ram for 1632
//notice : user must set CS before call this function
//-----------------------------------------------
void SBR_ALLRAM_1632(bit F_RAM1632_SET)
{
unsigned char i;
SBR_PREDATA_1632(); // "101" , ready for write
SBR_ADDRESS_1632(0); // address = 0
// all RAM have 96
for(i=0 ; i<48 ; i++)
{
if(F_RAM1632_SET) SBR_DATA_1632(0xff); //all RAM write 1
else SBR_DATA_1632(0x00); //all RAM write 0
}
}
//-----------------------------------------------
//function : SBR_PRECOMMAND_1632
//in : NULL
//out : NULL
//description: send "100" for command
//-----------------------------------------------
void SBR_PRECOMMAND_1632()
{
P_WR_1632 = 0;
P_DATA_1632 = 1; // 1
_nop();
P_WR_1632 = 1;
_nop();
_nop();
P_WR_1632 = 0;
P_DATA_1632 = 0; // 0
_nop();
P_WR_1632 = 1;
_nop();
_nop();
P_WR_1632 = 0;
P_DATA_1632 = 0; // 0
_nop();
P_WR_1632 = 1;
_nop();
_nop();
}
//-----------------------------------------------
//function : SBR_COMMAND_1632
//in : command
//out : NULL
//description: send command for 1632 (command-X)
//-----------------------------------------------
void SBR_COMMAND_1632(unsigned char command)
{
unsigned char i,temp;
temp = 0x80;
for(i=0 ; i<8 ; i++)
{
P_WR_1632 = 0; //clk = 0 for data ready
if((temp & command) == 0) P_DATA_1632 = 0;
else P_DATA_1632 = 1;
P_WR_1632 = 1; //clk = 1 for data write into 1632
temp >>= 1;
}
P_WR_1632 = 0;
_nop();
_nop();
P_WR_1632 = 1; // X
}
//-----------------------------------------------
//function : SBR_PREDATA_1632
//in : NULL
//out : NULL
//description: send "101" for data
//-----------------------------------------------
void SBR_PREDATA_1632()
{
P_WR_1632 = 0;
P_DATA_1632 = 1; // 1
_nop();
P_WR_1632 = 1;
_nop();
_nop();
P_WR_1632 = 0;
P_DATA_1632 = 0; // 0
_nop();
P_WR_1632 = 1;
_nop();
_nop();
P_WR_1632 = 0;
P_DATA_1632 = 1; // 1
_nop();
P_WR_1632 = 1;
_nop();
_nop();
}
//-----------------------------------------------
//function : SBR_ADDRESS_1632
//in : address
//out : NULL
//description: send address(7-bit) for 1632 RAM
//-----------------------------------------------
void SBR_ADDRESS_1632(unsigned char address)
{
unsigned char i,temp;
temp = 0x40;
for(i=0 ; i<7 ; i++)
{
P_WR_1632 = 0; //clk = 0 for data ready
if((temp & address) == 0) P_DATA_1632 = 0;
else P_DATA_1632 = 1;
P_WR_1632 = 1; //clk = 1 for data write into 1632
temp >>= 1;
}
}
//-----------------------------------------------
//function : SBR_DATA_1632
//in : data
//out : NULL
//description: send data for 1632
//-----------------------------------------------
void SBR_DATA_1632(unsigned char data)
{
unsigned char i,temp;
temp = 0x01;
for(i=0 ; i<8 ; i++)
{
P_WR_1632 = 0; //clk = 0 for data ready
if((temp & data) == 0) P_DATA_1632 = 0;
else P_DATA_1632 = 1;
P_WR_1632 = 1; //clk = 1 for data write into 1632
temp <<= 1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -