新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > stc单片机不断电下载程序

stc单片机不断电下载程序

作者:时间:2012-08-04来源:网络收藏

在调试程序中加入串口初始化代码,串口中断代码即可实现
///******************
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;
}
}

在上演示程序中,利用单片机串口收到某个有效数据后,执行从isp引导区软启动的命令(ISP_CONTR=0x60;),实现程序下载。但该方法为实现程序下载,占用了一些单片机资源——串口、中断等,实际应用中有一些不便。下面介绍另一种程序不断电下载方法:
考虑到单片机开发板在设计时一般都留有一个手动复位按钮,能否利用该按钮实现程序不断电下载呢?答案是肯定的!!!!!

单片机上电复位时,POF=1;单片机手动复位时,POF=0
单片机上电运行时对POF位进行判断,如果POF位=0,将POF位置1,让单片机从isp引导区软复位。
如果POF位=1,将POF位清0。

将实现以上功能的代码加入到你的程序中,当需要时,按下复位按钮,此时POF位=0,单片机再次从isp引导区软复位,从而实现程序下载。

该方法只需在用户程序中嵌入一段判断POF标志位的代码就能实现程序不断电下载,无需占用任何单片机内部资源。

演示程序:

//*******************不断电******************
#include REG52.H>

sfr ISP_CONTR=0xe7; 软复位寄存器声明
void main(void)
{
//////////////将这段代码嵌入到程序中////////////////
if((PCON0x10)==0) //如果POF位=0
{
PCON=PCON|0x10; //将POF位置1
ISP_CONTR=0x60; //软复位,从ISP监控区启动
}
else
{
PCON=PCON0xef; //将POF位清零
}
//////////////////////////////////////////////

while(1)
{
`

` 用户程序

`

}
}

操作说明:
1 将演示程序中的红色代码复制到您的程序中,首次使用时应利用断电下载的方式将含有红色代码的程序下载到单片机中
2 将hex文件载入stc单片机isp软件,点击下载按钮
3 按下单片机开发板上复位键,单片机进行is程序下载

单片机相关文章:单片机教程


c++相关文章:c++教程


单片机相关文章:单片机视频教程


单片机相关文章:单片机工作原理



上一页 1 2 下一页

关键词: stc单片机 不断电 下载程序

评论


相关推荐

技术专区

关闭