您当前的位置:五五电子网电子知识单片机-工控设备源码-程序STC单片机免断电下载程序的更简单的方法 正文
STC单片机免断电下载程序的更简单的方法

STC单片机免断电下载程序的更简单的方法

点击数:7677 次   录入时间:03-04 11:50:11   整理:http://www.55dianzi.com   源码-程序

    看到网上有一些STC单片机免断电下载程序的例子。但是都是要用串口中断来完成。以下是一个程序片断

    拿来说明

    在调试程序中加入串口初始化代码,串口中断代码即可实现不断电下载程序

    TMOD|=0x20;

    SCON=0x50;

    TH1=0xfd;      //12T时钟9600bps

    TL1=0xfd;

    TR1=1;

    ES=1;

    EA=1;

    AUXR=AUXR|0x40; //定时器1使用1T时钟  9600*12=115200bps

    void UART(void) interrupt 4

    {

    uchar cdd;

    if(RI)

    {

    RI=0;

    cdd=SBUF;

    if(cdd==0xaa)

    {

    ISP_CONTR=0x60;//软复位,从ISP监控区启动

    }

    else if(cdd==0x55)

    {

    ISP_CONTR=0x20; //软复位,从用户程序区启动

    }

    else

    {

    senddata(cdd);

    }

    }

    else

    {

    TI=0;

    }

    }

    另外还要在stc下载软件中进行自定义下载设置才能完成面是一个操作视频

    http://v.youku.com/v_show/id_XMTk2MTE5MTgw.html

   



www.55dianzi.com

    从上面可以看出比较麻烦,那么有没有一种更为简单的方法呢,从上面的视频得知只要对0xe7这个地址赋予0x60就可以完成下载程序的功能了,那么我就想,stc下载软件用的是串口,用串口就必然用要发送数据到单片机,而单片机接收引脚是P3^0,那么我们只要检测这个引脚有没有电平的变化,如果有变化那么就对0xe7这个地址赋予0x60,就会完成自动下载的命令了,有了思路就开始验证。经过调试结果成功,说明本人只是对STC89C52RC做过测试,其它芯片能否可行请自行测试,以下为完整的程序,在stc下载软件中不需要做任何的设置,就像平常下载程序一样就行。

    /***  STC单片机免断电下载程序的另一种更简单的方法*******************************************************************

    **程序功能:STC单片机免断电下载程序

    **芯片型号:STC89C52RC

    **晶振频率:11.0592M

    **编写日期:2010年11月23日

    **编写人员:wang      QQ:349259818    Email:hongfadg@163.com

    **备注说明:

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

    //以下为所需的头文件

    //#include<absaCC.h>

    //#include<string.h>

    //#include<stdio.h>

    //#include <INTRINS.H>

    #include <reg52.H>

    //定义关键字方便使用

    #define uchar unsigned char

    #define uint unsigned int

    #define ulong unsigned long

    sfr iap=0xe7; //定义下载命令

    sbit p30=P3^0; //串口接收引脚

    /*                主函数

    *******************************************************************

    **函数原型:main()

    **函数功能:

    **输入参数:无

    **输出参数:无

    **备注说明:完成程序的主要功能

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

    main()

    {

    while(1)  //主循环

    {

    if(!p30) //判断串口是不是有数据

    {

    iap=0x60; //执行自动下载的命令

    }

    }

    }




本文关键字:单片机  程序  源码-程序单片机-工控设备 - 源码-程序