cl_main.c.svn-base

来自「51单片机读写nor flash 读出flash 的ID」· SVN-BASE 代码 · 共 1,114 行 · 第 1/2 页

SVN-BASE
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 + -
显示快捷键?