⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 upsd3200单片机IAP的实现
💻 C
字号:
#include  "include.h"

extern void RUNAPP();
extern unsigned char flash_erase_chip( );
extern uchar WriteMainFlash(uchar which,uint len, uint Address,uchar *wdata);

void initial_system(void)//ok
{
    SCON  = 0x50;		        /* SCON: mode 1, 8-bit UART, enable rcvr      */
    TMOD |= 0x20;               /* TMOD: timer 1, mode 2, 8-bit reload        */
    TH1   = 221;                /* TH1:  reload value for 1200 baud @ 16MHz   */
    TR1   = 1;                  /* TR1:  timer 1 run                          */
    TI    = 1;                  /* TI:   set TI to send first char of UART    */
}

char code menu[] = 
   "\n"
   "  ======Welcome to play boot progrom ======\n"
   "  0. erase the main flash\n"
   "  1. write some data to the 1 section of the main flash\n"
   "  2. write some data to the 2 section of the main flash\n"
   "  3. write some data to the 3 section of the main flash\n"
   "  4. write some data to the 4 section of the main flash\n"
   "  5. write some data to the 5 section of the main flash\n"
   "  6. write some data to the 6 section of the main flash\n"
   "  7. write some data to the 7 section of the main flash\n"
   "  8. write some data to the 8 section of the main flash\n"
   "  9. run to main flash\n";



//=============================================================================
void main(void)
{
//	uchar buf[50];
 	uchar key;
	uchar err;
	uint i,j;
	uchar addr;
	uchar xdata wbuf[1024];
	initial_system();
	printf(menu);

	do
	{

		do
		{
			key = _getkey ();
		}while(key==0);
		
		switch(key)
		{
		case '0':
			
			printf("eraseing...\r");
			err = flash_erase_chip();
			if(err)
				printf("eraseing fail\r");
			else
				printf("eraseing 0k\r");
			
			break;
			
		case '1':
			printf("write section 1...\r");
			addr = 0;
			for(j=0;j<32;j++)
			{
				for(i=0;i<1024;i++)
				{
					wbuf[i] = 0x55;
				}
				printf( "... %02d K\r", j );
				
				WriteMainFlash(0,1024,addr,wbuf);
				addr += 1024;
			}
			if(err)
				printf("write section 1 fail\r");
			else
				printf("write section 1 0k\r");

			break;
			
		case '2':
			printf("write section 2...\r");
			addr = 0;
			for(j=0;j<32;j++)
			{
				for(i=0;i<1024;i++)
				{
					wbuf[i] = 0x55;
				}
				printf(  "... %02d K\r", j );
				
				WriteMainFlash(1,1024,addr,wbuf);
				addr += 1024;
			}
			if(err)
				printf("write section 2 fail\r");
			else
				printf("write section 2 0k\r");
			break;
			
		case '3':
			break;
			
		case '4':
			break;
			
		case '5':
			break;
			
		case '6':
			break;
			
		case '7':
			break;
			
		case '8':
			break;
			
		case '9':
			printf("run main program.\r");
			RUNAPP();
			break;
		default:
			break;
		}
			
	}while(1);
    

}


		/*switch(key)
		{
		case '0':
			addr = 0;
			clear_lcd(0,MAX_LCD_NUM);//清最大显示行数4行
		    strcpy(buf,"正在写主FLASH...0");
		    lcd_disp(1,0,buf);
			for(j=0;j<32;j++)
			{
				for(i=0;i<1024;i++)
				{
					wbuf[i] = 0x55;
				}
				sprintf( buf, "... %02d K", j );
				lcd_disp(2,0,buf);
				
				WriteMainFlash(0,1024,addr,wbuf);
				addr += 1024;
			}
			break;
		case '1':
			addr = 0;
			clear_lcd(0,MAX_LCD_NUM);//清最大显示行数4行
		    strcpy(buf,"正在写主FLASH...1");
		    lcd_disp(1,0,buf);
			for(j=0;j<32;j++)
			{
				for(i=0;i<1024;i++)
				{
					wbuf[i] = 0x55;
				}
				sprintf( buf, "... %02d K", j );
				lcd_disp(2,0,buf);
				
				WriteMainFlash(1,1024,addr,wbuf);
				addr += 1024;
			}

			break;
		case '2':
			addr = 0;
			clear_lcd(0,MAX_LCD_NUM);//清最大显示行数4行
		    strcpy(buf,"正在写主FLASH...2");
		    lcd_disp(1,0,buf);
			for(j=0;j<32;j++)
			{
				for(i=0;i<1024;i++)
				{
					wbuf[i] = 0x55;
				}
				sprintf( buf, "... %02d K", j );
				lcd_disp(2,0,buf);
				
				WriteMainFlash(2,1024,addr,wbuf);
				addr += 1024;
			}


			break;
				
		case '3':
			addr = 0;
			clear_lcd(0,MAX_LCD_NUM);//清最大显示行数4行
		    strcpy(buf,"正在写主FLASH...3");
		    lcd_disp(1,0,buf);
			for(j=0;j<32;j++)
			{
				for(i=0;i<1024;i++)
				{
					wbuf[i] = 0x55;
				}
				sprintf( buf, "... %02d K", j );
				lcd_disp(2,0,buf);
				
				WriteMainFlash(3,1024,addr,wbuf);
				addr += 1024;
			}
			break;
			
		case '4':
			addr = 0;
			clear_lcd(0,MAX_LCD_NUM);//清最大显示行数4行
		    strcpy(buf,"正在写主FLASH...4");
		    lcd_disp(1,0,buf);
			for(j=0;j<32;j++)
			{
				for(i=0;i<1024;i++)
				{
					wbuf[i] = 0x55;
				}
				sprintf( buf, "... %02d K", j );
				lcd_disp(2,0,buf);
				
				WriteMainFlash(4,1024,addr,wbuf);
				addr += 1024;
			}
			break;
			
		case '5':
			addr = 0;
			clear_lcd(0,MAX_LCD_NUM);//清最大显示行数4行
		    strcpy(buf,"正在写主FLASH...5");
		    lcd_disp(1,0,buf);
			for(j=0;j<32;j++)
			{
				for(i=0;i<1024;i++)
				{
					wbuf[i] = 0x55;
				}
				sprintf( buf, "... %02d K", j );
				lcd_disp(2,0,buf);
				
				WriteMainFlash(5,1024,addr,wbuf);
				addr += 1024;
			}
			break;
		case '6':
			addr = 0;
			clear_lcd(0,MAX_LCD_NUM);//清最大显示行数4行
		    strcpy(buf,"正在写主FLASH...6");
		    lcd_disp(1,0,buf);
			for(j=0;j<32;j++)
			{
				for(i=0;i<1024;i++)
				{
					wbuf[i] = 0x55;
				}
				sprintf( buf, "... %02d K", j );
				lcd_disp(2,0,buf);
				
				WriteMainFlash(6,1024,addr,wbuf);
				addr += 1024;
			}
			break;
		case '7':
			addr = 0;
			clear_lcd(0,MAX_LCD_NUM);//清最大显示行数4行
		    strcpy(buf,"正在写主FLASH...7");
		    lcd_disp(1,0,buf);
			for(j=0;j<32;j++)
			{
				for(i=0;i<1024;i++)
				{
					wbuf[i] = 0x55;
				}
				sprintf( buf, "... %02d K", j );
				lcd_disp(2,0,buf);
				
				WriteMainFlash(7,1024,addr,wbuf);
				addr += 1024;
			}
			break;
		case '8':

			self_detect_USB();
			break;
		case '9':

			RunMain();
			break;
			
		case BRANCH1:
			clear_lcd(0,MAX_LCD_NUM);//清最大显示行数4行
		    strcpy(buf,"正在擦除主FLASH...");
		    lcd_disp(1,0,buf);
			err = flash_erase_sector(0);


			break;
		
		case BRANCH2:
			break;
			
		case BRANCH3:
			break;
			
		case BRANCH4:
			break;
			
		case BRANCH5:
			break;
			
		case BRANCH6:

			break;
			
		case BRANCH7:

			break;
			
		case BRANCH8:

			break;
			
		case PAGEUP:
			break;
			
		case PAGEDOWN:
			break;
			
		case TAB:
			break;
			
			
		default:
			break;
		}
	}*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -