首页 > 其他 > 详细

stc单片机“全自动下载”

时间:2014-03-21 23:10:22      阅读:601      评论:0      收藏:0      [点我收藏+]

STC单片机完全自动下载”,无需再手动重新上电启动

这里以STC12C5A60S2为例演示:

步骤如下:

1.添加stc公司的mcukeil软件

(

这一步不是必须的,但进行了这一步之后,keil软件就会有stc公司的mcu的头文件,可以直接调用了,但如果没有这一步在主函数中头文件就要注意,对于IAP_CONTR的特殊功能寄存器就不能直接调用,这时候就必须用户自己定义:

sft IAP_CONTR=0xc7

)

这里以目前最新 STC-ISP下载软件为例:

bubuko.com,布布扣

选择keil安装目录xxxxxxxxxxx\keil , 点击确定,就会出现:

bubuko.com,布布扣

(2)打开keil,新建工程后,出现MCU选择:

bubuko.com,布布扣

选择STC MCU Database后,选择STC12C5A60S2,后创建并加载.c文件,设置生成hex文件:

技巧:为了防止意外操作导致stcmcu头文件被修改,设置其为“只读”模式,这时候工程文件就会有如下的“钥匙”标记

bubuko.com,布布扣

(3)程序代码如下:

主函数0000.c:

#include "./STC/stc12c5a60s2.h"
#include "uart.h"

void main(void)
{
	UartInit();

	P1=0x01;/*第一次,leds*/

	while(1);
}

 

uart.h文件:

#ifndef __UART_H__
#define __UART_H__

#define selfDownLodCmd 0x01

extern void UartInit(void) ;

#endif 

 

uart.c文件:

#include "./stc/stc12c5a60s2.h"
#include "uart.h"

void UartInit(void)
{
	SCON |= 0x50 ;
	TMOD |= 0X20 ;
	TH1	 =  0xfd ;	//11.0592MHZ , 9600kps
	TL1	 =  0xfd ;
	TR1=1 ;
	ES=1 ;
	EA=1 ;
}

void UART_IRQ(void) interrupt 4
{
	unsigned char k ;

	if(RI)
	{
		RI=0;
		k=SBUF;
		if(k==selfDownLodCmd)
		{
			IAP_CONTR |=0x60 ;
		}
		else
		{ /*其他操作,等待补充*/
			
		}
	
	}
	else
	{
		TI =0;
		/*其他操作,等待补充*/
	}
}


(4)这里第一次先手动启动下载一次,然后发现led0被点亮。保持上电状态

(5)修改下载设置:

bubuko.com,布布扣

(6)自动下载实验准备:修改main函数中的:

P1=0x01;/*第一次,leds*/

修改为:

P1=0x0f;

(7)发现STC-ISP软件已经自动下载了程序,而没有经过手动的重新上电。

stc单片机“全自动下载”,布布扣,bubuko.com

stc单片机“全自动下载”

原文:http://blog.csdn.net/yagnruinihao/article/details/21739665

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!