📄 cpu12isrs.c
字号:
0x7000,
0x73e0,
0x6ff8,
0xfffc,
0xf81e,
0xe00e,
0x0007,
0x0007,
0x0007,
0x0007,
0x0007,
0xe007,
0xf00e,
0x781e,
0x7ffc,
0x1ff8,
0x0fe0
};
volatile const unsigned int Fig6[23]= {
0x03f0,
0x0ffc,
0x1ffe,
0x3c1e,
0x780f,
0x7007,
0x7000,
0xe000,
0xe3f0,
0xeff8,
0xfffc,
0xfc1e,
0xf00f,
0xe007,
0xe007,
0xe007,
0xe007,
0x7007,
0x700e,
0x3c1e,
0x3ffc,
0x0ff8,
0x07e0
};
volatile const unsigned int Fig7[23]= {
0x7fff,
0x7fff,
0x7fff,
0x0006,
0x000c,
0x001c,
0x0038,
0x0070,
0x0070,
0x00e0,
0x00e0,
0x01c0,
0x01c0,
0x0380,
0x0380,
0x0700,
0x0700,
0x0700,
0x0700,
0x0e00,
0x0e00,
0x0e00,
0x0e00
};
volatile const unsigned int Fig8[23]= {
0x07e0,
0x1ff8,
0x3ffc,
0x781c,
0x700e,
0x700e,
0x700e,
0x700e,
0x381c,
0x1ff8,
0x0ff0,
0x3ffc,
0x781e,
0x700e,
0xe007,
0xe007,
0xe007,
0xe007,
0xf00f,
0x781e,
0x3ffc,
0x1ff8,
0x07e0
};
volatile const unsigned int Fig9[23]= {
0x07e0,
0x1ff0,
0x3ffc,
0x781c,
0x700e,
0xe006,
0xe007,
0xe007,
0xe007,
0xe007,
0xf00f,
0x781f,
0x3fff,
0x1ff7,
0x0fc7,
0x0007,
0x000e,
0xe00e,
0xf01e,
0x783c,
0x7ff8,
0x3ff0,
0x0fc0
};
/*
** ===================================================================
** Method : CharUpdate
**
** Description :
** Transfert Character from ROM to Display RAM
**
** ===================================================================
*/
void InitChar(){
Message[0].Status=1;
Message[0].Letter_Offset = (unsigned int *) Fig9;
Message[0].Color=RED;
Message[0].OriginPosX = 120;
Message[0].OriginPosY = 254; // 6th block (25 ligne each = absolute ligne 138)
Message[1].Status=1;
Message[1].Letter_Offset = (unsigned int *) Fig8;
Message[1].Color=RED;
Message[1].OriginPosX = 100;
Message[1].OriginPosY = 254; // 6th block (25 ligne each = absolute ligne 138)
Message[2].Status=1;
Message[2].Letter_Offset = (unsigned int *) Fig7;
Message[2].Color=RED;
Message[2].OriginPosX = 80;
Message[2].OriginPosY = 254; // 6th block (25 ligne each = absolute ligne 138)
Message[3].Status=1;
Message[3].Letter_Offset = (unsigned int *) Fig6;
Message[3].Color=RED;
Message[3].OriginPosX = 50;
Message[3].OriginPosY = 254; // 6th block (25 ligne each = absolute ligne 138)
Message[4].Status=1;
Message[4].Letter_Offset = (unsigned int *) Fig5;
Message[4].Color=RED;
Message[4].OriginPosX = 66;
Message[4].OriginPosY = 254; // 6th block (25 ligne each = absolute ligne 138)
Message[5].Status=1;
Message[5].Letter_Offset = (unsigned int *) Fig4;
Message[5].Color=RED;
Message[5].OriginPosX = 80;
Message[5].OriginPosY = 254; // 6th block (25 ligne each = absolute ligne 138)
Message[6].Status=1;
Message[6].Letter_Offset = (unsigned int *) Fig3;
Message[6].Color=RED;
Message[6].OriginPosX = 80;
Message[6].OriginPosY = 254; // 6th block (25 ligne each = absolute ligne 138)
Message[7].Status=1;
Message[7].Letter_Offset = (unsigned int *) Fig2;
Message[7].Color=RED;
Message[7].OriginPosX = 80;
Message[7].OriginPosY = 254; // 6th block (25 ligne each = absolute ligne 138)
Message[8].Status=1;
Message[8].Letter_Offset = (unsigned int *) Fig1;
Message[8].Color=RED;
Message[8].OriginPosX = 80;
Message[8].OriginPosY = 254; // 6th block (25 ligne each = absolute ligne 138)
Message[9].Status=1;
Message[9].Letter_Offset = (unsigned int *) Fig0;
Message[9].Color=RED;
Message[9].OriginPosX = 80;
Message[9].OriginPosY = 254; // 6th block (25 ligne each = absolute ligne 138)
Message[10].Status=1;
Message[10].Letter_Offset = (unsigned int *) image2;
Message[10].Color=RED;
Message[10].OriginPosX = 170;
Message[10].OriginPosY = 291;
Message[11].Status=0;
Message[11].Letter_Offset = (unsigned int *) image3;
Message[11].Color=RED;
Message[11].OriginPosX = 150;
Message[11].OriginPosY = 291;
Message[12].Status=0;
Message[12].Letter_Offset = (unsigned int *) image4;
Message[12].Color=RED;
Message[12].OriginPosX = 130;
Message[12].OriginPosY = 291;
Message[13].Status=0;
Message[13].Letter_Offset = (unsigned int *) imageD;
Message[13].Color=RED;
Message[13].OriginPosX = 110;
Message[13].OriginPosY = 291;
Message[14].Status=0;
Message[14].Letter_Offset = (unsigned int *) imageN;
Message[14].Color=RED;
Message[14].OriginPosX = 90;
Message[14].OriginPosY = 291;
Message[15].Status=0;
Message[15].Letter_Offset = (unsigned int *) imageR;
Message[15].Color=RED;
Message[15].OriginPosX = 70;
Message[15].OriginPosY = 291;
Message[16].Status=0;
Message[16].Letter_Offset = (unsigned int *) imageP;
Message[16].Color=RED;
Message[16].OriginPosX = 50;
Message[16].OriginPosY = 291;
Message[17].Status=0;
Message[17].Letter_Offset = (unsigned int *) Gas_Yellow;
Message[17].Color=RED;
Message[17].OriginPosX = 190;
Message[17].OriginPosY = 200;
Message[18].Status=1;
Message[18].Letter_Offset = (unsigned int *) Gas_Yellow;
Message[18].Color=RED;
Message[18].OriginPosX = 35;
Message[18].OriginPosY = 70;
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED /* these functions have to be allocated in the non banked area */
//----------------------------------------------------------------------------------------------------//
void GasUpdate(char NumBloc) {
unsigned int Offset_Position=0,Block_Offset;
unsigned char j,k;
unsigned char * ptr;
Block_Offset = NumBloc * CURRENT_BLOCK_MAX_LINE;
if (NumBloc&1) Offset_Position = 0x1000; // page 2 si pair
ptr = (unsigned int *)Message[17].Letter_Offset;
//Test Valid position in current Block
for (j=0;j<32;j++){ // rows in a character
if( ((Message[17].OriginPosY+j)>=Block_Offset)&&((Message[17].OriginPosY+j)<(Block_Offset + CURRENT_BLOCK_MAX_LINE))) {
for (k= Message[17].OriginPosX;k<Message[17].OriginPosX+32;k++ ){
Screen_Array_in_RAM[Offset_Position+(Message[17].OriginPosY+j-Block_Offset)*NB_PIXELS_PER_LINES+k] = ~*ptr++;
} //for (k= Message[17].
} //if ( ((Message[17].OriginPosY+j)>=Block_Offset)
else ptr+=32;
}// for (j=0;j<32;j++){
}
//----------------------------------------------------------------------------------------------------//
unsigned char Gearnumber =0;
unsigned int DelayOK,MaxDelay=250;
signed char Delay=-10,adder=1;
void GearUpdate(char NumBloc,char gear) {
unsigned int Offset_Position=0,Block_Offset;
unsigned char j,k;
unsigned char * ptr;
Block_Offset = NumBloc * CURRENT_BLOCK_MAX_LINE;
if (NumBloc&1) Offset_Position = 0x1000; // page 2 si pair
ptr = (unsigned int *)Message[gear].Letter_Offset;
//Test Valid position in current Block
for (j=0;j<23;j++){ // rows in a character
if( ((Message[gear].OriginPosY+j)>=Block_Offset)&&((Message[gear].OriginPosY+j)<(Block_Offset + CURRENT_BLOCK_MAX_LINE))) {
for (k= Message[gear].OriginPosX;k<Message[gear].OriginPosX+20;k++ ){
Screen_Array_in_RAM[Offset_Position+(Message[gear].OriginPosY+j-Block_Offset)*NB_PIXELS_PER_LINES+k] = ~*ptr++;
if (j==22){
if (!DelayOK++) {
if ((Gearnumber+adder)>6) adder-=2;
else if ((Gearnumber+adder)<0) adder+=2;
Gearnumber = Gearnumber+adder ;
}
if (DelayOK>MaxDelay) {
DelayOK=0;
if (MaxDelay<=10) Delay +=5;
else if (MaxDelay>=300) Delay -=5;
MaxDelay += Delay;
}
}
}// for every bit
} //if ( ((Message[10].OriginPosY+j)>=Block_Offset)
else ptr+=20;
} // for (j=0;j<23;j++){
}
//----------------------------------------------------------------------------------------------------//
char count=0,count_2digit=1;
void CharUpdate(char NumBloc) {
/* put your own code here */
/* please make sure that you never leave this function */
unsigned char j,k;
unsigned int Block_Offset;
unsigned int Mask,Offset_Position=0;
unsigned int * ptr;
// Test all caracter in string
// If status =1 and
// If position is in Block then print it
// using right color
// PORTB_PB4=1;
Block_Offset = NumBloc * CURRENT_BLOCK_MAX_LINE;
if (NumBloc&1) Offset_Position = 0x1000; // page 2 si pair
ptr = (unsigned int *)Message[0].Letter_Offset;
//Test Valid position in current Block
for (j=0;j<23;j++){ // rows in a character
if( ((Message[0].OriginPosY+j)>=Block_Offset)&&((Message[0].OriginPosY+j)<(Block_Offset + CURRENT_BLOCK_MAX_LINE))) {
Mask=0x8000;
for (k= Message[0].OriginPosX;k<Message[0].OriginPosX+20;k++ ){
if (*ptr & Mask)
Screen_Array_in_RAM[Offset_Position+(Message[0].OriginPosY+j-Block_Offset)*NB_PIXELS_PER_LINES+k] = ~Message[0].Color;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -