📄 sub.c.bak
字号:
//-----------------------------------------------
//function : INI_Memory
//in : NULL
//out : NULL
//description: clear all RAM
//-----------------------------------------------
void INI_Memory(void)
{
//_clrwdt();
for(_mp=C_RAM_END;_mp>=C_RAM_START;_mp--) _iar=0;
}
//-----------------------------------------------
//function : INI_System
//in : NULL
//out : NULL
//description: initial system set
//-----------------------------------------------
void INI_System(void)
{
//IO set
_pb = 0;
_pbc = 0;
_pc = 0;
_pcc = 0;
_pg = 0;
_pgc = 0;
_pa = 0x1f; //data , wr ,cs1 , cs2 , cs3 = 1
_pac = 0;
//system regedit set
_tmrc = C_TMRC;
_tmr = C_TMR;
_intc = C_INTC;
}
//-----------------------------------------------
//function : INI_1632
//in : NULL
//out : NULL
//description: initial 1632
//-----------------------------------------------
void INI_1632(void)
{
//command set
P_CS1_1632 = P_CS2_1632 = P_CS3_1632 = C_1632_CSOn; //1632 CS1 & CS2 & CS3 enable
SBR_INIT_1632(); //inital 1632's set
P_CS1_1632 = P_CS2_1632 = P_CS3_1632 = C_1632_CSOff; //1632 CS1 & CS2 & CS3 disable
//data write
P_CS1_1632 = P_CS2_1632 = P_CS3_1632 = C_1632_CSOn; //1632 CS1 & CS2 & CS3 enable
SBR_ALLRAM_1632(0); //all LED write 0
P_CS1_1632 = P_CS2_1632 = P_CS3_1632 = C_1632_CSOff; //1632 CS1 & CS2 & CS3 disable
}
//-----------------------------------------------
//function : SBR_DATA_DisplayCS
//in : CSEn -- which 1632 was enable
// station -- where address of RAM start write(0~47)
//out : NULL
//description: load data write into 1632 which CSEn control start address of station
//-----------------------------------------------
void SBR_DATA_DisplayCS(unsigned char CSEn,unsigned char station)
{
unsigned char CSDis,x,y,data;
CSDis = CSEn ^ 0xff; //save CS off
station = (C_DATA_MAX_CS-1)-station; //set the real station of 1632 RAM
while((station < C_DATA_MAX_CS) && (M_DATA_TableCnt < C_DATA_MAX_Length))
{
//load data
if(station > 23)
{
//LED 4~6
x = (station - 24); //RAM address count
x = ((x & 0x0f8) + (7 - (x & 0x07))) * 4 + 2;
}
else
{
//LED 1~3
x = station; //RAM address count
x = ((x & 0x0f8) + (7 - (x & 0x07))) * 4;
}
station++;
data = T_Data_Value[M_DATA_TableCnt]; //load data
M_DATA_TableCnt++; //next data
//*******************************
//insert part
//Up & Down Mask
if((M_Function_Step == C_FunStep_UDOn) || (M_Function_Step == C_FunStep_UDOff))
{
data &= M_DATA_UDMask;
}
//end of insert part
//*******************************
//1632 control
P_CSControl_1632 &= CSEn; //CS enable
SBR_PREDATA_1632(); // "101" , ready for write
SBR_ADDRESS_1632(x); // address = x
SBR_DATA_1632(data);
P_CSControl_1632 |= CSDis; //CS disable
}
}
//-----------------------------------------------
//function : SBR_DATA_DisplayByte
//in : CSEn -- which 1632 was enable
// station -- where address of RAM start write(0~47)
// data -- what data need write into 1632
//out : NULL
//description: load data write into 1632 which CSEn control start address of station
//-----------------------------------------------
void SBR_DATA_DisplayByte(unsigned char CSEn,unsigned char station,unsigned char data)
{
unsigned char CSDis,x;
CSDis = CSEn ^ 0xff; //save CS off
if(station > 23)
{
//LED 4~6
x = (station - 24); //RAM address count
x = ((x & 0x0f8) + (7 - (x & 0x07))) * 4 + 2;
}
else
{
//LED 1~3
x = station; //RAM address count
x = ((x & 0x0f8) + (7 - (x & 0x07))) * 4;
}
//1632 control
P_CSControl_1632 &= CSEn; //CS enable
SBR_PREDATA_1632(); // "101" , ready for write
SBR_ADDRESS_1632(x); // address = station
SBR_DATA_1632(data);
P_CSControl_1632 |= CSDis; //CS disable
}
//===============================================
//-----------------------------------------------
//function : SBR_FUNCTION_STEP0
//in : NULL
//out : NULL
//description: step0,run from R->L
//-----------------------------------------------
void SBR_FUNCTION_STEP0(void)
{
unsigned char x; //temp save the address of data station
if(M_DATA_FrePoint < C_DATA_MAX_Length)
{
//this step not run finally
M_DATA_TableCnt = 0;
x = M_DATA_FrePoint;
if(x < C_DATA_MAX_CS)
{
//data only at CS3
SBR_DATA_DisplayCS(C_1632_CS3En,x);
}
else
{
x -= C_DATA_MAX_CS;
if(x < C_DATA_MAX_CS)
{
//data at CS2 + CS3 all
SBR_DATA_DisplayCS(C_1632_CS2En,x);
SBR_DATA_DisplayCS(C_1632_CS3En,(C_DATA_MAX_CS-1));
}
else
{
x -= C_DATA_MAX_CS;
//data at CS1 + CS2 + CS3 all
SBR_DATA_DisplayCS(C_1632_CS1En,x);
SBR_DATA_DisplayCS(C_1632_CS2En,(C_DATA_MAX_CS-1));
SBR_DATA_DisplayCS(C_1632_CS3En,(C_DATA_MAX_CS-1));
}
}
}
else
{
//this step run end
M_Function_Step++; //next function step
//insert initial step2 code at here
M_TMR_MS = 0;
M_TMR_SEC = 0; //clear TMR count
}
}
//-----------------------------------------------
//function : SBR_FUNCTION_STEP1
//in : NULL
//out : NULL
//description: step1,delay
//-----------------------------------------------
void SBR_FUNCTION_STEP1(void)
{
M_Function_Step++; //next function step
//insert initial step3 code at here
//command set
//P_CS1_1632 = P_CS2_1632 = P_CS3_1632 = C_1632_CSOn; //1632 CS1 & CS2 & CS3 enable
//SBR_PRECOMMAND_1632(); //send "100" for command
//SBR_COMMAND_1632(C_COMMAND1632_BLINKON); //BLINK ON
//P_CS1_1632 = P_CS2_1632 = P_CS3_1632 = C_1632_CSOff; //1632 CS1 & CS2 & CS3 disable
M_TMR_SEC = 0;
}
//-----------------------------------------------
//function : SBR_FUNCTION_STEP2
//in : NULL
//out : NULL
//description: step2,data blink
//-----------------------------------------------
void SBR_FUNCTION_STEP2(void)
{
if(M_TMR_SEC > C_LED_BlinkTime)
{
M_Function_Step++; //next function step
//insert initial step3 code at here
//command set
P_CS1_1632 = P_CS2_1632 = P_CS3_1632 = C_1632_CSOn; //1632 CS1 & CS2 & CS3 enable
SBR_PRECOMMAND_1632(); //send "100" for command
SBR_COMMAND_1632(C_COMMAND1632_LEDON); //BLINK OFF
P_CS1_1632 = P_CS2_1632 = P_CS3_1632 = C_1632_CSOff; //1632 CS1 & CS2 & CS3 disable
M_TMR_SEC = 0;
}
else
{
if(!M_TMR_MS)
{
P_CS1_1632 = P_CS2_1632 = P_CS3_1632 = C_1632_CSOn; //1632 CS1 & CS2 & CS3 enable
SBR_PRECOMMAND_1632(); //send "100" for command
SBR_COMMAND_1632(C_COMMAND1632_LEDON); //LED ON
P_CS1_1632 = P_CS2_1632 = P_CS3_1632 = C_1632_CSOff; //1632 CS1 & CS2 & CS3 disable
}
else if(M_TMR_MS == 62)
{
P_CS1_1632 = P_CS2_1632 = P_CS3_1632 = C_1632_CSOn; //1632 CS1 & CS2 & CS3 enable
SBR_PRECOMMAND_1632(); //send "100" for command
SBR_COMMAND_1632(C_COMMAND1632_LEDOFF); //LED OFF
P_CS1_1632 = P_CS2_1632 = P_CS3_1632 = C_1632_CSOff; //1632 CS1 & CS2 & CS3 disable
}
}
}
//-----------------------------------------------
//function : SBR_FUNCTION_STEP4
//in : NULL
//out : NULL
//description: step4,move form R->L overflow
//-----------------------------------------------
void SBR_FUNCTION_STEP4(void)
{
M_DATA_TableCnt = C_DATA_MAX_Length - M_DATA_FrePoint;
SBR_DATA_DisplayCS(C_1632_CS1En,(C_DATA_MAX_CS-1));
SBR_DATA_DisplayCS(C_1632_CS2En,(C_DATA_MAX_CS-1));
SBR_DATA_DisplayCS(C_1632_CS3En,(C_DATA_MAX_CS-1)); //write data into 1632
if(!M_DATA_FrePoint)
{
M_Function_Step++; //next function
//insert initial step4 code at here
M_TMR_SEC = M_TMR_MS = 0;
}
}
//-----------------------------------------------
//function : SBR_FUNCTION_STEP6
//in : NULL
//out : NULL
//description: step6,move form up & down
//-----------------------------------------------
void SBR_FUNCTION_STEP6(void)
{
M_DATA_TableCnt = 0;
M_DATA_UDMask = T_Data_UpDown[M_UDMask_Cnt];
M_UDMask_Cnt++;
SBR_DATA_DisplayCS(C_1632_CS1En,(C_DATA_MAX_CS-1));
SBR_DATA_DisplayCS(C_1632_CS2En,(C_DATA_MAX_CS-1));
SBR_DATA_DisplayCS(C_1632_CS3En,(C_DATA_MAX_CS-1)); //write data into 1632
if(M_UDMask_Cnt > 3)
{
M_Function_Step++; //next function
M_TMR_SEC = M_TMR_MS = 0;
}
}
//-----------------------------------------------
//function : SBR_FUNCTION_STEP8
//in : NULL
//out : NULL
//description: step8,move form up & down
//-----------------------------------------------
void SBR_FUNCTION_STEP8(void)
{
M_DATA_TableCnt = 0;
M_DATA_UDMask = T_Data_UpDown[M_UDMask_Cnt];
M_UDMask_Cnt++;
SBR_DATA_DisplayCS(C_1632_CS1En,(C_DATA_MAX_CS-1));
SBR_DATA_DisplayCS(C_1632_CS2En,(C_DATA_MAX_CS-1));
SBR_DATA_DisplayCS(C_1632_CS3En,(C_DATA_MAX_CS-1)); //write data into 1632
if(M_UDMask_Cnt > 7)
{
M_Function_Step++; //next function
M_TMR_SEC = M_TMR_MS = 0;
}
}
//-----------------------------------------------
//function : SBR_FUNCTION_STEP10
//in : NULL
//out : NULL
//description: step10,move form Left & Right
//-----------------------------------------------
void SBR_FUNCTION_STEP10(void)
{
unsigned char x1,x2,data1,data2;
data1 = T_Data_Value[M_DATA_TableCnt]; //load data which need display at Left
data2 = T_Data_Value[((C_DATA_MAX_Length - 1) - M_DATA_TableCnt)]; //load data which need display at Right
if(M_DATA_TableCnt < C_DATA_MAX_CS)
{
//data at CS1 & CS3
x1 = M_DATA_TableCnt; //count Left station
x2 = (C_DATA_MAX_CS - 1) - x1; //count Right station
SBR_DATA_DisplayByte(C_1632_CS1En,x1,data1);
SBR_DATA_DisplayByte(C_1632_CS3En,x2,data2);
}
else
{
//data at CS2
x1 = M_DATA_TableCnt - C_DATA_MAX_CS;
x2 = (C_DATA_MAX_CS - 1) - x1; //count Right station
SBR_DATA_DisplayByte(C_1632_CS2En,x1,data1);
SBR_DATA_DisplayByte(C_1632_CS2En,x2,data2);
}
M_DATA_TableCnt++; //next data
if(M_DATA_TableCnt >= C_DATA_MAX_Length/2)
{
//step end
M_Function_Step++; //next function
M_TMR_SEC = M_TMR_MS = 0;
M_DATA_TableCnt = (C_DATA_MAX_Length/2);
}
}
//-----------------------------------------------
//function : SBR_FUNCTION_STEP12
//in : NULL
//out : NULL
//description: step12,move form Left & Right
//-----------------------------------------------
void SBR_FUNCTION_STEP12(void)
{
unsigned char x1,x2;
M_DATA_TableCnt--; //next data
if(M_DATA_TableCnt < C_DATA_MAX_CS)
{
//data at CS1 & CS3
x1 = M_DATA_TableCnt; //count Left station
x2 = (C_DATA_MAX_CS - 1) - x1; //count Right station
SBR_DATA_DisplayByte(C_1632_CS1En,x1,0);
SBR_DATA_DisplayByte(C_1632_CS3En,x2,0);
}
else
{
//data at CS2
x1 = M_DATA_TableCnt - C_DATA_MAX_CS;
x2 = (C_DATA_MAX_CS - 1) - x1; //count Right station
SBR_DATA_DisplayByte(C_1632_CS2En,x1,0);
SBR_DATA_DisplayByte(C_1632_CS2En,x2,0);
}
if(!M_DATA_TableCnt)
{
//step end
M_Function_Step++; //next function
M_TMR_SEC = M_TMR_MS = 0;
}
}
//-----------------------------------------------
//function : SBR_FUNCTION_STEP14
//in : NULL
//out : NULL
//description: step14,CS1 & CS3 all on
//-----------------------------------------------
void SBR_FUNCTION_STEP14(void)
{
//data write
P_CS1_1632 = P_CS3_1632 = C_1632_CSOn; //1632 CS1 & CS3 enable
SBR_ALLRAM_1632(1); //all LED write 1
P_CS1_1632 = P_CS3_1632 = C_1632_CSOff; //1632 CS1 & CS3 disable
SBR_DATA_DisplayByte(C_1632_CS1En,(C_DATA_MAX_CS-1),0);
SBR_DATA_DisplayByte(C_1632_CS3En,0,0); //clear one line
//insert initial step code at here
M_Function_Step++; //next function step
M_TMR_SEC = M_TMR_MS = 0;
}
//-----------------------------------------------
//function : SBR_FUNCTION_STEP16
//in : NULL
//out : NULL
//description: step16,display HOLTEK
//-----------------------------------------------
void SBR_FUNCTION_STEP16(void)
{
unsigned char x,data;
for(x=0 ; x < 36 ; x++)
{
data = T_Data_Value[x];
}
for(x=36 ; x < 48 ; x++)
{
//display HT logoicon
data = T_HT_LogoIcon[(x-36)];
SBR_DATA_DisplayByte(C_1632_CS2En,x,data);
}
// x = (C_DATA_MAX_CS-1) - x; //set next address.(notice:in sbr function,the address will sub by MAX)
// M_DATA_TableCnt = 0; //Load begin data 0.(HOLTEK)
// SBR_DATA_DisplayCS(C_1632_CS2En,x); //Write one 1632
//insert initial step code at here
M_Function_Step++; //next function step
M_TMR_SEC = M_TMR_MS = 0;
}
//-----------------------------------------------
//function : SBR_FUNCTION_STEP18
//in : NULL
//out : NULL
//description: step18,clear all LED display
//-----------------------------------------------
void SBR_FUNCTION_STEP18(void)
{
//data write
P_CS1_1632 = P_CS2_1632 = P_CS3_1632 = C_1632_CSOn; //1632 CS1 & CS2 & CS3 enable
SBR_ALLRAM_1632(0); //all LED write 0
P_CS1_1632 = P_CS2_1632 = P_CS3_1632 = C_1632_CSOff; //1632 CS1 & CS2 & CS3 disable
//insert initial step code at here
M_Function_Step++; //next function step
M_TMR_SEC = M_TMR_MS = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -