STC单片机免下电加载程序方法

本文介绍了一种针对STC单片机的在线编程(IAP)方法,通过自定义下载命令实现无需冷复位即可进行程序更新的功能,有效减少了调试过程中的电源开关操作,适用于频繁调试场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
/*应用说明:STC单片机具有在线加载升级程序程序功能,
但每次加载均需要冷复位(完全下电),在调试程序时仍有些不便。
我的学习板电源按钮就是因为两千多次反复的加载调试程序,现在已经
有接触不良问题了^_^,为此研究了STC晶片手册关于ISP/IAP功能应用写成
*/
//flow light and beep 
#include <reg51.h>
#include <intrins.h>
#define Self_Define_ISP_Download_Command 0x22
unsigned char a,b,k,j;
sbit beep=P2^3;
void delay10ms()
{
    for(a=100;a>0;a--)
      for(b=225;b>0;b--);
}

void Init_Com(void)
{
     TMOD = 0x20;
     SM0=0;
     SM1=1;
	 REN=1;
     TH1 = 0xFd;
     TL1 = 0xFd;
     TR1 = 1;
	 EA=1;
	 ES=1;
}
void main()
{
  Init_Com();
  k=0xfe;
  while(1)
  {
      delay10ms();delay10ms();
      beep=0;
      delay10ms();delay10ms();
      beep=1;
      j=_crol_(k,1);
      k=j;
      P1=j;
   }
}

void UART_Interrupt_Receive(void) interrupt 4
{
	unsigned char k=0;
	unsigned int a,b;
	if(RI==1)
	{
		RI=0;
		k=SBUF;
		if(k==Self_Define_ISP_Download_Command)
		{
			for(a=1000;a>0;a--)
				for(b=100;b>0;b--); //延时约1S
			IAP_CONTR = 0x60;
		}
	}
	else
	{
		TI=0;
	}
}


其实程序的运行就是一句话:IAP_CONTR = 0x60;关键是如何在串口的发送模块去触发它。

 

先下图设置STC_ISP软件,然后第一次加载仍然按以往下电再上电的方法加载,第二次,第三次就可以直接
按发送,就可以直接下载了,无须下电了.

好处:对某程序反复调试过程中,爱好者就不需要修改一次,下电——上电再加载这样频繁的上下电了.

注意:自定义下载命令就是你在程序设置的串口接收命令!即Self_Define_ISP_Download_Command
哈哈哈,我也是个菜鸟,朋友们可别说我懒啊.^_^

 

其实程序的运行就是一句话:IAP_CONTR = 0x60;关键是如何在串口的发送模块去触发它。

 

先下图设置STC_ISP软件,然后第一次加载仍然按以往下电再上电的方法加载,第二次,第三次就可以直接
按发送,就可以直接下载了,无须下电了.

好处:对某程序反复调试过程中,爱好者就不需要修改一次,下电——上电再加载这样频繁的上下电了.

注意:自定义下载命令就是你在程序设置的串口接收命令!即Self_Define_ISP_Download_Command
哈哈哈,我也是个菜鸟,朋友们可别说我懒啊.^_^

 


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值