cl_main1.c
来自「51单片机读写nor flash 读出flash 的ID」· C语言 代码 · 共 1,114 行 · 第 1/2 页
C
1,114 行
H = GetBufData();
Y2 = MAKEWORD(L, H);/////////////
temp_bit = BUSY;
BUSY = 1;
Draw_Line(X1,Y1,X2,Y2,colorFront);
//BUSY = temp_bit;
count = 0;
if(dataSrc==FROM_SERIAL_PORT)
SendToPC(ACK_CODE);
BUSY = temp_bit;
break;
case DrawCircle:
inputMode=COMMON_MODE;
colorFront = MYCOLOR(GetBufData()) ;
L = GetBufData();
H = GetBufData();
X1 = MAKEWORD(L, H);/////////
L = GetBufData();
H = GetBufData();
Y1 = MAKEWORD(L, H);//////////
L = GetBufData();
H = GetBufData();
R1 = MAKEWORD(L, H);
temp_bit = BUSY;
BUSY = 1;
Draw_Circle(X1,Y1,R1,colorFront);
//BUSY = temp_bit;
if(dataSrc==FROM_SERIAL_PORT)
SendToPC(ACK_CODE);
BUSY = temp_bit;
break;
case DrawSCircle:
inputMode=COMMON_MODE;
colorFront = MYCOLOR(GetBufData()) ;
L = GetBufData();
H = GetBufData();
X1 = MAKEWORD(L, H);///////
L = GetBufData();
H = GetBufData();
Y1 = MAKEWORD(L, H);/////////
L = GetBufData();
H = GetBufData();
R1 = MAKEWORD(L, H);
temp_bit = BUSY;
BUSY = 1;
Draw_Fill_Circle (X1,Y1,R1,colorFront);
//BUSY = temp_bit;
if(dataSrc==FROM_SERIAL_PORT)
SendToPC(ACK_CODE);
BUSY = temp_bit;
break;
case DrawSRectangle:
inputMode=COMMON_MODE;
colorFront = MYCOLOR(GetBufData()) ;
L = GetBufData();
H = GetBufData();
X1 = MAKEWORD(L, H);////////
L = GetBufData();
H = GetBufData();
Y1 = MAKEWORD(L, H);////////
L = GetBufData();
H = GetBufData();
X2 = MAKEWORD(L, H);////////
L = GetBufData();
H = GetBufData();
Y2 = MAKEWORD(L, H);///////////
temp_bit = BUSY;
BUSY = 1;
Rectangle_Fill(X1,Y1,X2,Y2,colorFront);
//BUSY = temp_bit;
if(dataSrc==FROM_SERIAL_PORT)
SendToPC(ACK_CODE);
BUSY = temp_bit;
break;
case DrawVRectangle:
inputMode=COMMON_MODE;
colorFront = MYCOLOR(GetBufData()) ;
L = GetBufData();
H = GetBufData();
X1 = MAKEWORD(L, H);///////////
L = GetBufData();
H = GetBufData();
Y1 = MAKEWORD(L, H);///////////
L = GetBufData();
H = GetBufData();
X2 = MAKEWORD(L, H);//////////
L = GetBufData();
H = GetBufData();
Y2 = MAKEWORD(L, H);////////
temp_bit = BUSY;
BUSY = 1;
Rectangle_Empty(X1,Y1,X2,Y2,colorFront);
//BUSY = temp_bit;
if(dataSrc==FROM_SERIAL_PORT)
SendToPC(ACK_CODE);
BUSY = temp_bit;
break;
case ClearScreen:
inputMode=COMMON_MODE;
colorBg = MYCOLOR(GetBufData()) ;
temp_bit = BUSY;
BUSY = 1;
Clear(colorBg);
curColUsing =0;
curRowUsing =0;
BUSY = temp_bit;
if(dataSrc==FROM_SERIAL_PORT)
SendToPC(ACK_CODE);
BUSY = temp_bit;
break;
case ChineseCode:
inputMode = CHINESE_MODE;
//curColUsing =curCol;
//curRowUsing =curRow;
// TRACE(ChineseCode);
break;
case AsciisingleCode:
inputMode = ASCII_MODE;
//curColUsing =curCol;
//curRowUsing =curRow;
// TRACE(AsciisingleCode);
break;
/////////the Cursor Functions//////////////
case CURSOR_ENTER:
H=GetBufData();//H is in Unit of Row,NOT pixel
temp_bit = BUSY;
BUSY = 1;
curCol=0; //locate to the first colum
curRow+=H;
LIMIT_ROW(curRow);
curColUsing =curCol;
curRowUsing =curRow;
if(dataSrc==FROM_SERIAL_PORT)
SendToPC(ACK_CODE);
BUSY = temp_bit;
break;
case CursorMoveToCol0:
temp_bit = BUSY;
BUSY = 1;
curCol=0;
curColUsing =curCol;
if(dataSrc==FROM_SERIAL_PORT)
SendToPC(ACK_CODE);
BUSY = temp_bit;
break;
case CursorMoveToColMax:
temp_bit = BUSY;
BUSY = 1;
curCol=COL_MAX-1;
curColUsing =curCol;
if(dataSrc==FROM_SERIAL_PORT)
SendToPC(ACK_CODE);
BUSY = temp_bit;
break;
case CursorMoveToRow0:
temp_bit = BUSY;
BUSY = 1;
curRow=0;
curRowUsing =curRow;
if(dataSrc==FROM_SERIAL_PORT)
SendToPC(ACK_CODE);
BUSY = temp_bit;
break;
case CursorMoveToRowMax:
temp_bit = BUSY;
BUSY = 1;
curRow=ROW_MAX-1;
curRowUsing =curRow;
if(dataSrc==FROM_SERIAL_PORT)
SendToPC(ACK_CODE);
break;
case CursorMoveUp:
temp_bit = BUSY;
BUSY = 1;
if(curRow)
curRow--;
LIMIT_ROW(curRow);
curRowUsing =curRow;
if(dataSrc==FROM_SERIAL_PORT)
SendToPC(ACK_CODE);
BUSY = temp_bit;
break;
case CursorMoveDown:
temp_bit = BUSY;
BUSY = 1;
curRow++;
LIMIT_ROW(curRow);
curRowUsing =curRow;
if(dataSrc==FROM_SERIAL_PORT)
SendToPC(ACK_CODE);
BUSY = temp_bit;
break;
case CursorMoveLeft:
temp_bit = BUSY;
BUSY = 1;
if(curCol)
curCol--;
LIMIT_COL(curCol);
curColUsing =curCol;
if(dataSrc==FROM_SERIAL_PORT)
SendToPC(ACK_CODE);
BUSY = temp_bit;
break;
case CursorMoveRightN:
H = GetBufData();
temp_bit = BUSY;
BUSY = 1;
curCol+=H;
LIMIT_COL(curCol);
curColUsing =curCol;
if(dataSrc==FROM_SERIAL_PORT)
SendToPC(ACK_CODE);
BUSY = temp_bit;
break;
case CursorMoveTo:
curCol = GetBufData();
curRow = GetBufData();
temp_bit = BUSY;
BUSY = 1;
LIMIT_COL(curCol);
LIMIT_ROW(curRow);
curColUsing =curCol;
curRowUsing =curRow;
if(dataSrc==FROM_SERIAL_PORT)
SendToPC(ACK_CODE);
BUSY = temp_bit;
break;
case CursorMoveToXY:
L = GetBufData();
H = GetBufData();
X1 = MAKEWORD(L, H);//////
L = GetBufData();
H = GetBufData();
Y1 = MAKEWORD(L, H);//////
temp_bit = BUSY;
BUSY = 1;
curCol = X1/CHAR_WIDTH;
curRow = Y1/CHAR_HEIGHT;
LIMIT_ROW(curRow);
LIMIT_COL(curCol);
curColUsing =curCol;
curRowUsing =curRow;
if(dataSrc==FROM_SERIAL_PORT)
SendToPC(ACK_CODE);
BUSY = temp_bit;
break;
case CursorColor :
curColorFront= MYCOLOR(GetBufData()) ;
curColorBg = MYCOLOR(GetBufData());
temp_bit = BUSY;
BUSY = 1;
if(dataSrc==FROM_SERIAL_PORT)
SendToPC(ACK_CODE);
BUSY = temp_bit;
break;
case CURSOR_ENABLE :
cursorEnable = GetBufData();
temp_bit = BUSY;
BUSY = 1;
if(dataSrc==FROM_SERIAL_PORT)
SendToPC(ACK_CODE);
BUSY = temp_bit;
break;
////////the Cursor Functions End///////////////
case FrontColor :
//inputMode=COMMON_MODE;
colorFront = GetBufData() ;
temp_bit = BUSY;
BUSY = 1;
COLOR_FRONT= MYCOLOR(colorFront);
if(dataSrc==FROM_SERIAL_PORT)
SendToPC(ACK_CODE);
BUSY = temp_bit;
break;
case OVERLAY_MODE :
overlayMode = GetBufData();
temp_bit = BUSY;
BUSY = 1;
LIMIT_MODE(overlayMode);
BUSY = temp_bit;
if(dataSrc==FROM_SERIAL_PORT)
SendToPC(ACK_CODE);
break;
case DisplayZoom :
L = GetBufData();
temp_bit = BUSY;
BUSY = 1;
if (L==0x51)
{
ZOOMX= 1;
ZOOMY=1;
}
else if (L==0x52)
{
ZOOMX= 2;
ZOOMY=1;
}
else if (L==0x53)
{
ZOOMX= 1;
ZOOMY=2;
}
else if (L==0x54)
{
ZOOMX= 2;
ZOOMY=2;
}
BUSY = temp_bit;
break;
///////////////////////////////////////////////////
case ProgramFlash:
inputMode=COMMON_MODE;
H = GetBufData();
L = GetBufData();
iSector =MAKEWORD(L, H);
H = GetBufData(); //y2Ly1Lx2x1 数据长度
L = GetBufData();
X1 = MAKEWORD(L, H);
H = GetBufData();
L = GetBufData();
X2 = MAKEWORD(L, H);
temp_bit = BUSY;
BUSY = 1;
ulLength = ((ULONG)X1<<16) | X2;
AUXR=0x02;
CS_ALL_OPEN();
CS_FLASH088_OPEN(); //使能39VF040片选
Program_BMP_to_Flash(iSector, ulLength);
CS_ALL_OPEN();
CS_DISPLAY_OPEN();
if(dataSrc==FROM_SERIAL_PORT)
SendToPC(ACK_CODE);
BUSY = temp_bit;
break;
/////////////////////////////////////////////////////////////////////////////
/*---------------------------------------------------------------------------
X1 显示位置横坐标
Y1L 显示位置纵坐标
X2 图片宽度
Y2L 图片高度
----------------------------------------------------------------------------*/
case DisplayBMP:
inputMode=COMMON_MODE;
L = GetBufData();
H = GetBufData();
X1 = MAKEWORD(L, H);////////
L = GetBufData();
H = GetBufData();
Y1 = MAKEWORD(L, H);////////
L = GetBufData();
H = GetBufData();
X2 = MAKEWORD(L, H);///////
L = GetBufData();
H = GetBufData();
Y2 = MAKEWORD(L, H);///////
temp_bit = BUSY;
BUSY = 1;
Display_Picture(X1,Y1,X2,Y2);
if(dataSrc==FROM_SERIAL_PORT)
SendToPC(ACK_CODE);
BUSY = temp_bit;
break;
case ConvexFill: // x1Hx1L 横坐标
inputMode=COMMON_MODE;
L = GetBufData();
H = GetBufData();
X1 = MAKEWORD(L, H);//////
L = GetBufData();
H = GetBufData();
Y1 = MAKEWORD(L, H);////////
colorFront= MYCOLOR(GetBufData()) ;
colorBg = MYCOLOR(GetBufData()) ;
temp_bit = BUSY;
BUSY = 1;
Convex_Fill( X1, Y1, colorFront, colorBg);
count = 0;
if(dataSrc==FROM_SERIAL_PORT)
SendToPC(ACK_CODE);
BUSY = temp_bit;
break;
case LoadFlashBmp:
inputMode=COMMON_MODE;
page= GetBufData(); // 扇区号
L = GetBufData();
H = GetBufData(); //
X1 = MAKEWORD(L, H);
L = GetBufData();
H = GetBufData(); //
Y1 = MAKEWORD(L, H);
pic_x= GetBufData(); //位图宽度
pic_y= GetBufData();// 位图高度
temp_bit = BUSY;
BUSY = 1;
Load_Picture(page,X1,Y1,pic_x,pic_y );
if(dataSrc==FROM_SERIAL_PORT)
SendToPC(ACK_CODE);
BUSY = temp_bit;
break;
case LoadPrePic:
inputMode=COMMON_MODE;
L = GetBufData(); // S1 扇区号
if (L==0xff) //0x1b,0x50,0xff means END
{
// BUSY=FALSE;
// INIT_backupData();
retrieveData();
EX0 = 1;
BUSY=FALSE;
dataSrc=FROM_SERIAL_PORT;
}
else
{
BUSY=TRUE;
SendToPC(ACK_CODE);
backupData();
// INIT_retrieveData();
dataSrc = FROM_FLASH;
FlashPtr = 0;
sectorIndex = L;
//LoadP(L);
}
break;
case BLON:
inputMode=COMMON_MODE;
LAMP_ON( );
break;
case BLOFF:
inputMode=COMMON_MODE;
LAMP_OFF( );
break;
case SWITCH_PORT:
if(dataSrc==FROM_SERIAL_PORT)
{
dataSrc=FROM_PARALLEL_PORT;
SendToPC(ACK_CODE);
}
else if(dataSrc==FROM_PARALLEL_PORT)
dataSrc=FROM_SERIAL_PORT;
break;
/*case TEST_BUSY:
H=GetBufData();
BUSY=H;
if(dataSrc==FROM_SERIAL_PORT)
SendToPC(H);
break;*/
case TEST_COMMAND:
H=GetBufData();
L=GetBufData();
Addr=0XA380;//你0X01A380
Write_GB_Chinese(H*CHAR_WIDTH,L*CHAR_HEIGHT,Addr,COLOR_FRONT,COLOR_BG,01);
X1=GetBufData();
Write_Ascii_single (H*CHAR_WIDTH,(L+1)*CHAR_HEIGHT,X1,COLOR_FRONT,COLOR_BG);
break;
default:
if(dataSrc==FROM_SERIAL_PORT)
SendToPC(ACK_CODE);
break;
}
}
else // firstData is Not 0x1b
{
if(inputMode==CHINESE_MODE)
{
H = firstData;
L = GetBufData();//CHINSES CODE Low
TRACE(ChineseCode);
temp_bit = BUSY;
BUSY = 1;
// EX0 = 0;
AUXR= 0x0;
Location = (94*((ULONG)H-0XA1)+(ULONG)L-0XA1)*32;
page = (BYTE)( Location >>16);
Addr = (WORD)Location ;
AUXR = 0x02;
Write_GB_Chinese(curColUsing*CHAR_WIDTH,curRowUsing*CHAR_HEIGHT,Addr,COLOR_FRONT,COLOR_BG,page);
curColUsing+=2*ZOOMX;
// EX0 =1;
// BUSY = temp_bit;
if(curColUsing>=COL_MAX)
{
curColUsing=0;
//curRowUsing+=ZOOMY;
//if(curRowUsing>=ROW_MAX)
// curRowUsing=0;
}
if(dataSrc==FROM_SERIAL_PORT) //page>4 indicate that it's the "End" pseudo char
SendToPC(ACK_CODE);
BUSY = temp_bit;
}
else if(inputMode==ASCII_MODE)
{
temp_bit = BUSY;
BUSY = 1;
H = firstData;
TRACE(H);
// temp_bit = BUSY;
// BUSY = 1;
Write_Ascii_single(curColUsing*CHAR_WIDTH,curRowUsing*CHAR_HEIGHT,H,COLOR_FRONT,COLOR_BG);
curColUsing+=1*ZOOMX;
// BUSY = temp_bit;
if(curColUsing>=COL_MAX)
{
curColUsing=0;
//curRowUsing+=ZOOMY;
//if(curRowUsing>=ROW_MAX)
// curRowUsing=0;
}
if(dataSrc==FROM_SERIAL_PORT )
SendToPC(ACK_CODE);
BUSY = temp_bit;
}
else // if(inputMode==COMMON_MODE)
{ BUSY=1;
if(dataSrc==FROM_FLASH)
{
//INIT_backupData();
retrieveData();
dataSrc=FROM_SERIAL_PORT ;
}
BUSY=0;
}
/*
else //FromFlash: but Error Command,such as Load a Non_PreStore_Pic
{ BUSY=1;
if(dataSrc==FROM_FLASH)
{
//BUSY=FALSE;
retrieveData();
BUSY=0;
}
BUSY=0;
}
*/
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?