您当前的位置:五五电子网电子知识单片机-工控设备STC单片机(利用宏晶科技的IAP单片机开发自己的ISP程序 正文
利用宏晶科技的IAP单片机开发自己的ISP程序

利用宏晶科技的IAP单片机开发自己的ISP程序

点击数:7381 次   录入时间:03-04 11:58:30   整理:http://www.55dianzi.com   STC单片机(
/* 串口发送1字符 */
char putchar(char c)
{
 if(ES&&EA) /* 串口中断打开的 */
 { com_out=0;
  SBUF=c;
  while(com_out==0);
 }
 else  /* 串口中断关闭的 */
 { TI=0;
  SBUF=c;
  while(TI==0);
  TI=0;
 }
 WDT_CONTR=0x35; /* 开Watch-Dog-Timer(2秒喂狗) */
 return c;
}

/***********************************************************************************/

void main (void)
{ unsigned char ci;
 unsigned int iadr;

 EA = 0;  /* 禁止中断 */
 AUXR=0x40; /* T0x12,T1x12,UART_M0x6,EADCI,ESPI,ELVDI,-,- */
 PCON = 0; /* 波特率不加倍 */
 SCON = 0x50; /* 置串口工作方式1(T1用作串口波特率发生) */
 TMOD = 0x21; /* 置定时器1工作方式2,定时器0工作方式1 */
 TH0 = CON_MSH; /* 10mS时间常数 */
 TL0 = CON_MSL; /* 10mS时间常数 */
 TR0 = 1; /* 启动定时器0 */
 ET0 = 1; /* 允许定时器0中断 */
 EX0 = 0; /* 禁止INT0中断 */
 EX1 = 0; /* 禁止INT1中断 */
 ET1 = 0; /* 禁止定时器1中断 */
 TH1 = CON_BPS; /* 波特率时间常数 */
 TL1 = CON_BPS;
 TR1 = 1; /* 启动定时器1 */
 ES = 1;  /* 开串口中断 */
 EA = 1;  /* 允许中断 */

 P_KEY1 = 1; /* 按键1输入 */
 P_KEY2 = 1; /* 按键2输入 */

 boot_id=0;
 com_in=1; com_cur=' ';
 while(1)
 { if((P_KEY1==0)&&(P_KEY2==0)) boot_id=1; /* 两个按键都按下,进监控 */
  if(sec_id)  /* 每秒 */
  { sec_id=0;
   WDT_CONTR=0x35; /* 开Watch-Dog-Timer(2秒喂狗) */
  }
  if(com_in)  /* 串口接收到指令 */
  { if(com_cur=='R')
   { iadr=FDAT_ADR;
    printf("Read EEPROM Pg.1 adr 0x%04X:\r\n",iadr);
    for(ci=0;ci<0x10;ci++) printf("%02X",(unsigned int)byte_read(iadr+ci));
    printf("\r\n");
    iadr=FDAT_ADR+0x200;
    printf("Read EEPROM Pg.2 adr 0x%04X:\r\n",iadr);
    for(ci=0;ci<0x10;ci++) printf("%02X",(unsigned int)byte_read(iadr+ci));
    printf("\r\n");
   }
   else if(com_cur=='E')
   { iadr=FDAT_ADR;
    printf("Erase EEPROM Pg.1 adr 0x%04X\r\n",iadr);
    sector_erase(iadr);
    iadr=FDAT_ADR+0x200;
    printf("Erase EEPROM Pg.2 adr 0x%04X\r\n",iadr);
    sector_erase(iadr);
   }
   else if(com_cur=='W')
   { iadr=FDAT_ADR;
    printf("Write EEPROM Pg.1 adr 0x%04X:\r\n",iadr);
    for(ci=0;ci<0x10;ci++) { printf("%02X",(unsigned int)(ci|0x20)); byte_program(iadr+ci,ci|0x20); }
    printf("\r\n");
    iadr=FDAT_ADR+0x200;
    printf("Write EEPROM Pg.2 adr 0x%04X:\r\n",iadr);
    for(ci=0;ci<0x10;ci++) { printf("%02X",(unsigned int)(ci|0x30)); byte_program(iadr+ci,ci|0x30); }
    printf("\r\n");
   }
   else
   { printf("\r\n\r\nTEST AP Program 2009-6-25\r\nPlease choose function:\r\n[R]. Read EEPROM\r\n[E]. Ereas EEPROM\r\n[W]. Write EEPROM\r\n[Zz]. Goto ISP_DEMO\r\n");
   }
   com_in=0;
  }
  if(boot_id)  /* 进入监控程序升级 */
  { boot_id=0;
   printf("\r\nGoto ISP_DEMO ...\r\n");
   f_boot();
  }
 }
// reset_from_ISP_to_AP();  /* 软复位 */
}

/***********************************************************************************/



上一页  [1] [2] [3] [4] 


本文关键字:单片机  程序  开发  STC单片机(单片机-工控设备 - STC单片机(

《利用宏晶科技的IAP单片机开发自己的ISP程序》相关文章>>>