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

📄 main.c

📁 这是《Keil Cx51 V7.0单片机高级语言编程与uVision2应用实践》教材各章中列出的全部程序例子。
💻 C
字号:
#include <stdio.h>
#include "config.h"
#include "isp.h"
/***************************** _DEAD_()函数 *******************************
* 功    能:输出错误提示信息并进入一个死循环,当发生致命错误时调用本函数。
**************************************************************************/
void _DEAD_(void) {
  printf("\nError: cannot continue!\n");
  while (1);
}

/**************************** 系统初始化函数 *****************************
* 功     能:进行系统初始化,禁止片上XRAM,设置串行口工作方式。
**************************************************************************/
void system_init(void) {
    #ifdef HAVE_XRAM				 /* 禁止片上 XRAM */  
  AUXR = NO_XDATA;              
#endif
  
  	uart_init(); 				/* 设置串行口工作方式 */
  	EA = 1;      				/* 开中断 */
}

/****************************** 主函数 **********************************
* 功    能:提供程序入口,管理从芯片擦除到芯片编程的全部ISP工作过程。
*************************************************************************/
void main(void) {
  Uchar status;
  system_init();					/* 系统初始化 */
  printf("\n\n** Welcome to the ISP program! **\n\n");  /* 输出提示信息 */
   
  /* 检查FLASH存储器生产厂商及芯片ID(Atmel=1F, 49HF010=17) */
  printf("Check if FLASH device is a Atmel AT49HF010... ");
  if (flash_id()==0x1F17) {
    printf("OK.\n");				/* FLASH存储器是AT49HF010,继续 */
  }
  else {
    printf("KO!\n");   			/* FLASH存储器不是AT49HF010 */
    _DEAD_();					/* 发生致命错误,进入死循环 */
  }

  /* 擦除FLASH存储器 */
  printf("\nErasing the on-board FLASH memory... ");
  flash_erase();  				
  printf("OK.\n\n");
 
  /* 擦除完成,准备从PC机下载更新代码,输出提示信息 */
  printf("Ready for FLASH programming.\n");
  printf("Send .hex file with the following terminal configuration:\n");
  printf("  - ASCII character transmission,\n"); 
  printf("  - 8 bits, 1 stop, parity none,\n"), 
  printf("  - XON-XOFF flow control.\n"); 
  printf("\nWaiting for download...\n");

  /* 整理从PC机下载的HEX文件更新代码,并将其编程到FLASH存储器中 */
  uart_rx_enable();
  status = hex_parser();        
  uart_rx_disable();
  if (status == HEX_DEC_CSERR) {
    printf("\nChecksum error: external FLASH memory is not programmed!\n");
    _DEAD_();
  }
  else     
    printf("\nExternal FLASH memory is now programmed.\n");    
  while(1);
}  
             

⌨️ 快捷键说明

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