gps测速软件中文版:教你STC单片机免下电加载程序的方法,送程序
来源:百度文库 编辑:偶看新闻 时间:2024/05/10 06:45:13
教你STC单片机免下电加载程序的方法,送程序
程序/*******************************************应用说明:STC单片机具有在线加载升级程序程序功能,
但每次加载均需要冷复位(完全下电),在调试程序时仍有些不便。
我的学习板电源按钮就是因为两千多次反复的加载调试程序,现在已经
有接触不良问题了^_^,为此研究了STC晶片手册关于ISP/IAP功能应用写成
以下头文件.在其他程序想实现免下电升级程序,则:
在源程序开始时包含
#include
和主函数中调用
AIP_reset_to_ISP();
即可实现该功能
*******************************************/
//#include
#include
#define Self_Define_ISP_Download_Command 0x22 //自定义下载命令
sfr ISP_CONTR=0xe7;
void delay(void);
void AIP_reset_to_ISP(void);
void serial_port_ini()
{ TMOD=0x20; //定时器1--方式2; 定时器0--方式1(16位计数);
/* GATE C/T M1 M0 GATE C/T M1 M0
0 0 1 0 0 0 0 1
| | | | | | | +----方式选择
| | | | | | +-------方式选择
| | | | | +-----------定时器0或计数器0选择位 清零时用作定时器功能 置位时用作计数器功能
| | | | +---------------置位时为门控位
| | | +-------------------方式选择
| | +----------------------方式选择
| +--------------------------定时器1或计数器1选择位 清零时用作定时器功能 置位时用作计数器功能
+------------------------------置位时为门控位*/
IE=0x12; //中断控制设置,串口 T1(波特率发生器),T0定时中断
/* EA - - ES ET1 EX1 ET0 EX0
0 0 0 1 0 0 1 0
| | | | | | | +-------外部中断0 使能。
| | | | | | +-----------定时器0 溢出中断使能。
| | | | | +---------------外部中断1 使能。
| | | | +-------------------定时器1 溢出中断使能。
| | | +----------------------串口中断使能。
| | +--------------------------定时器2 中断使能。
| +-----------------------------
+-------------------------------中断使能位:EA=1,允许中断服务;EA=0,禁能中断服务。*/
PCON=0x80; //电源控制
/* SMOD SMODO - POF GF1 GF0 PD IDL
1 0 0 0 0 0 0 0
| | | | | | | +---
| | | | | | +------
| | | | | +----------
| | | | +--------------
| | | +------------------
| | +---------------------
| +-------------------------
+------------------------------*/
SCON=0x50; //方式1
/* SM0/FE SM1 SM2 REN TB8 RB8 TI RI
0 1 0 1 0 0 0 0
| | | | | | | +-接收中断标志
| | | | | | +----发送中断标志
| | | | | +--------模式2 和3 中接收的第9 位数据,在模式1 中(SM2 必须为0),RB8 是接收到的停止位。在模式0 中,RB8 未定义。
| | | | +------------模式2 和3 中将要发送的第9 位数据,可以根据需要由软件置位或清零。
| | | +----------------使能串行接收
| | +--------------------使能模式2 和3 中的多机通信功能。
| +------------------------和SM0 定义串行口操作模式
+-----------------------------该位的用途由PCON 寄存器中的SMOD0 决定。*/
TL1=0xFa;//0xF4; //12MHZ晶振,波特率为4800 0xf3 4800
TH1=0xFa;//0xF4; //11.0592MHZ晶振,波特率为4800 0xf4 9600 0xfa 19200 0xfd
TR1=1; //启动定时
// TH0=0x4c;
// TL0=0x00; // 11.0592MHZ晶振,th0=0x4c,th0=0x00;11.0592MHZ晶振,th0=0x3c,th0=0xb0;中断周期50ms;
// TR0=1;
ES=1;
EA=1;
}
void UART_Interrupt_Receive(void) interrupt 4
{
unsigned char k ;
if(RI==1)
{
RI = 0;
k = SBUF;
if(k==Self_Define_ISP_Download_Command) //是自定义下载命令
{
// delay(); //延时1秒就足够了
ISP_CONTR = 0x60; //0110,0000 软复位到系统ISP监控区
}
}
else
{
TI = 0;
}
}
/********************************************
在路免下点程序加载对外应用接口函数
说明:在其他函数或程序中调用很函数
AIP_reset_to_ISP();
即可达到系统软件复位,并切换到STC晶片监控程序(ISP)运行区,
若ISP接收的数据合法(有几十的字节)则刷新IAP区域,升级用户程序
*********************************************/
void AIP_reset_to_ISP(void)
{
serial_port_ini();
}
使用方法介绍:在源文件(你如说你自己写的“流水灯”程序)中添加引用上述头文件,然后编译得到
目标代码。
先下图设置STC_ISP软件,然后第一次加载仍然按以往下电再上电的方法加载,第二次,第三次就可以直接
按发送,就可以直接下载了,无须下电了.
好处:对某程序反复调试过程中,爱好者就不需要修改一次,下电——上电再加载这样频繁的上下电了.
哈哈哈,我也是个菜鸟,朋友们可别说我懒啊.^_^
单片机调试程序的方法
STC专用仿真器为何下载不了程序
单片机的小程序
单片机的程序的理解
开始运行里面,不必加载程序都是英文的,有什么方法知道是否加载
谁能帮写一个单片机的程序
单片机程序
求51系列单片机的定时程序
问一段程序,AT89C51单片机的
关于单片机的一段小程序
MCS51单片机间通信的C程序
USB的单片机程序烧写器多少钱?
单片机8051报警彩灯的设计程序
一小段MCS51单片机程序的问题
8051 单片机的程序怎么读出来
单片机的大型点阵的实现方法
可编程单片机产生脉冲信号的方法
raid卡的加载方法?
加载的程序名为upsrv.dll,提示加载错误
单片机编程,自检程序
单片机延时程序
单片机c程序实例
求助:单片机小程序
单片机延时程序