单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9675|回复: 8
收起左侧

STC单片机的IAP 实现不掉电下载程序

  [复制链接]
niuniu 发表于 2015-6-9 03:31 | 显示全部楼层 |阅读模式

  感谢772958417提醒, 真是错漏百出啊, 很多需要修改一下....一下是修改后的

  最近貌似考试繁忙啊,英语四级估计又要情何以堪了唉。。。研究一下51单片机(STC89C52)下载程序方面的问题,打算以后用stm32做上位机给51下载程序。虽然还不知道怎么弄出个上位机,不过目前实现了不掉电下载程序功能了,在这里跟同学们分享一下嘿嘿~~~STC单片机的IAP 实现不掉电下载程序
  下面介绍不掉电载程序的实现过程。先要了解一点基础知识。单片机的复位,下载流等等。。。
  首先说一下复位。STC89C52有的复位有两种,一种是上电复位,也就是冷启动,复位后检测串口那里有没有下载流,有的话跑去下载程序那里。还有一种是平时的按键复位,高电平有效那种的,不检测是否有下载流。
  下载流是什么?就是串口发送给单片机要烧写程序的信息。STC89C52的下载流是0x7F,连续12个好像(官方公布是大于16 )。如果我们上位机点下载,它就通过一直发送0x7F给单片机。如果这是有上电复位,就烧写程序进去单片机。
  我们的程序里面就是要用到这些,再介绍一下基本思路。我们需要单片机正常运行过程中检测是否有下载流(0x7F),如果有下载流就跳进上电复位。只要实现了这个功能,就是实现了不掉电下载程序了~~~检测下载流不难,我这里使用的是串口中断,中断里面检测是否有下载流信息,有的话就跳进上电复位那里。主要是跳到上电复位,怎么跳?上电复位在哪??
  跳转方面,有学过微机的同学就能好理解。只要修改 PC 指针就行了,让它指向上电复位那段程序。还有一个问题是,上电复位那段程序在哪里?这个要找芯片数据手册了。官方公布的是0xEC00, 但是我们不是直接跳转过去的, 而是通过使能IAP, 也就是设置IAP控制寄存器。官方公布的IAP控制寄存器地址是0xE7, 设置成0x60就使能了IAP. 来到这里相信同学们都理解了,可以着手写一下程序了。
把必要的东西弄上。文件包含,宏定义,寄存器声明等等。
#include<reg52.h>

#define IAP_ENABLE 0x60      //IAP允许
sfr IAP_CNTR = 0xE7;        //IAP控制寄存器

void mian(void)
{
  UART_Init();                //串口初始化
  while(1)                    //死循环,等待串口中断
  {

  }
}

void UART_Init()
{
  TMOD|=0x20; //定时器1提供串口波特率
  TH1=0xf3;     //波特率2400, 晶振为12M
  TL1=0xf3;     //波特率2400, 晶振为12M
  EA=1;         //打开总中断
  TR1=1;        //定时器1开始计数
  ES=1;         //允许串口中断
  SCON=0x50;    //方式0, 允许串口接收
}

void UART_IRQHandler(void)interrupt 4
{
  unsigned char rev;             //临时变量, 保存SBUF
  if(RI)                         //检查是否接收到数据
  {
    RI = 0;                      //软件清除接受标志位
    rev = SBUF;                  //读取接受缓冲区
    if(0x7F == rev)              //判断是否为下载流信息
    {
      IAP_CNTR = IAP_ENABLE;  //允许IAP, 也就是直接进入下载程序
    }
  }
}

  (编译通过,下载程序,测试能否在线下载。成功!!!!!!!!!!!!那是感动啊~~~~STC单片机的IAP实现不掉电下载程序)
  有了上面程序的话,以后下载程序就直接打开上位机,也就是STC_ISP那个软件,选择好对应的.hex文件,点击下载,就开始下载程序了。以后再也不用先关电源,再上电了下载,那是方便啊(事实证明,我已经对频繁对电源开关,感觉非常繁琐了)。多年来的梦想啊(虽然接触51,貌似不到1年。。。),让我曾经一度非常妒忌AT的单片机,因为它支持在线下载程序。。。STC单片机的IAP实现不掉电下载程序
  成功了有点小激动,特地发一下新浪博客,分享给有需要的同学们嘿嘿。


评分

参与人数 1黑币 +5 收起 理由
歧路踏歌行 + 5 很给力!

查看全部评分

回复

使用道具 举报

忘却の旋律 发表于 2015-6-15 20:24 | 显示全部楼层
楼主厉害,顶一个!
回复

使用道具 举报

文龙 发表于 2017-8-7 22:17 | 显示全部楼层
学习了。今天奇思妙想,百度了一下,结果在这里找到了方法。
回复

使用道具 举报

bhjyqjs 发表于 2018-7-30 11:11 | 显示全部楼层
这段程序需加进用户代码中,貌似用处不大
回复

使用道具 举报

liu198601 发表于 2019-10-1 10:51 来自手机 | 显示全部楼层
支持原创
回复

使用道具 举报

zmc419 发表于 2020-1-4 10:42 来自手机 | 显示全部楼层
要安排好主程序和下载程序位置和时间,否则下不了或主程序异常。
回复

使用道具 举报

rsbook 发表于 2020-5-6 14:06 | 显示全部楼层
哇,谢谢!一直在找的方法
回复

使用道具 举报

rsbook 发表于 2020-5-6 14:10 | 显示全部楼层
哇,一直在找的,谢谢!
回复

使用道具 举报

starv 发表于 2020-6-30 10:29 | 显示全部楼层
什么乱七八槽的!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表