分享

STC单片机IAP功能实现的远程升级(官方程序)

 quasiceo 2015-12-02

STC单片机IAP功能实现的远程升级(官方程序)

[复制链接]
单片机在运行的时候能通过串口通讯更新内部的程序
  1. /*------------------------------------------------------------------*/
  2. /* --- STC MCU International Limited -------------------------------*/
  3. /* --- STC IAP 系列单片机实现用户ISP 演示程序 ----------------------*/
  4. /* --- Mobile:  -------------------------------------*/
  5. /* --- Fax:  ----------------------------------------*/
  6. /* --- Tel:  ----------------------------------------*/
  7. /* --- Web: www.STCMCU.com -----------------------------------------*/
  8. /* 如果要在程序中使用或者在文章中引用该程序,请在程序中或文章中注明  */
  9. /* 使用了宏晶科技的资料或程序                                       */
  10. /*------------------------------------------------------------------*/

  11. #include "reg51.h"

  12. #define FOSC 18432000L                  //系统时钟频率
  13. #define BAUD (256 - FOSC/32/115200)     //定义串口波特率
  14. #define ISPPROGRAM  0xec00              //ISP下载程序入口地址

  15. /* 定义串口相关SFR */
  16. sfr AUXR = 0x8E;                        //波特率发生器控制寄存器
  17. sfr BRT = 0x9C;                         //波特率发生器定时器

  18. void (*IspProgram)() = ISPPROGRAM;        //定义指针函数
  19. char cnt7f;                             //Isp_Check内部使用的变量

  20. void uart() interrupt 4 using 1         //串口中断服务程序
  21. {
  22.     if (TI) TI = 0;                     //发送完成中断
  23.     if (RI)                             //接收完成中断
  24.     {
  25.         if (SBUF == 0x7f)
  26.         {
  27.             cnt7f++;
  28.             if (cnt7f >= 16)
  29.             {
  30.                 IspProgram();           //调用下载模块(****重要语句****)
  31.             }
  32.         }
  33.         else
  34.         {
  35.             cnt7f = 0;
  36.         }
  37.         RI = 0;                         //清接收完成标志
  38.     }
  39. }

  40. void main()
  41. {
  42.     SCON = 0x50;                        //定义串口模式为8bit可变,无校验位
  43.     AUXR = 0x15;                        //波特率发生器12倍速,并启动波特率发生器定时器
  44.     BRT = BAUD;                         //初始化波特率发生器定时器的定时初值
  45.     ES = 1;                             //使能串口中断
  46.     EA = 1;                             //打开全局中断开关

  47.     while (1)
  48.     {
  49.         P1++;
  50.     }
  51. }
  52. 这个就是了,下载一次后不用按复位键就能下载
复制代码

发表于 2013-5-29 15:01:07
过来 接着晕····


发表于 2013-5-29 20:55:08
这个厉害、、、


发表于 2013-10-23 14:32:16
不错,谢谢.........


发表于 2013-11-8 14:00:24
最近正在看IAP这方面,看一看


发表于 2014-8-13 17:13:39
请问超版,这个是远程升级么?

貌似只是检测串口,怎样通过GPRS下载服务器中的程序来实现自动更新呢?单片机不在身边啊。


发表于 2014-8-13 17:17:19
哦,明白了,这样也可以远程。不过要把网口虚拟成串口,手动下载。

只是有些麻烦了。要是有成千上万台设备需要升级,就不可行。

我正在找一种可以自动下载的方法。文件放在服务器上,单片机通过FTP或者什么方式下载到本地,校验代码后升级。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多