📄 main.c
字号:
/**********************************************************
文件名称:main.c
文件功能:SST89c54/58程序下载
文件版本:1.0
文件日期:2002-11-18
文件编写:yth
文件版权:WWW.99DPJ.COM
晶体振荡器调整void InitComm(unsigned char nBaudRate)
根据型号调整startup.a51中程序定位位置
编译选项目根据芯片决定,程序位置EEPROM startaddr
**********************************************************/
// PC==19200
// PC---0X0F成功
// block 1---boot program
// block 0---application program
///////////////////////////////////////////////////////////
#include <string.h>
#include "sst89cxx.h"
#include "iapfun.h"
#include "comfun.h"
#include "com.h"
#include "public.h"
#include "iap.h"
/*全局变量
unsigned char Status;
unsigned char buf[15];
unsigned char Buffer[COMMMAXLEN];
unsigned long timerout;
*/
extern void Jump0000();
/////////////main()/////////////////////
void main(void)
{
unsigned char ProgEndFlag=FALSE;
Delay(500);
InitSystem();
InitComm(Baud115200);
Delay(50);
Status=IsShakeHands();
if(Status!=TRUE)
{
EndSystem();
Jump0000();
}
while(1)
{
Status=ReceiveData();
if(Status==COMM_STX_ERROR)continue;
if(Status==COMM_LEN_ERROR||Status==COMM_DATA_ERROR||Status==COMM_STX_ERROR||Status==COMM_CRC_ERROR)
{
SendResponse(FALSE,0,buf);
continue;
}
//成功接收数据
switch(Buffer[2])
{
case IAP_WRITE_FLASH: //编程数据字节
IAP_WRITE_FLASHf();
break;
case IAP_ERASE_BLOCK: //擦除块
IAP_ERASE_BLOCKf();
break;
case IAP_ERASE_SECTOR: //擦除扇区
IAP_ERASE_SECTORf();
break;
case IAP_WRITE_SBIT: //编程保密位
IAP_WRITE_SBITf();
break;
case IAP_READ_FLASH: //读器件数据
IAP_READ_FLASHf();
break;
case PRG_READ_VERSION: //读取BIOS版本
PRG_READ_VERSIONf();
break;
case PRG_COMM_END: //通讯结束
PRG_COMM_ENDf();
ProgEndFlag=TRUE;
break;
default:
PRG_DEFAULTf(); //命令非法
}
if( ProgEndFlag==TRUE)break;
}
EndSystem();
Jump0000();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -