随着单片机技术的发展,单片机片内存储器的容量越来越大,可以容纳越来越大的程序。由于程序越来越复杂,在程序调试过程中需要不断进行硬件复位来下载程序,虽然在线下载程序的方法已经普遍应用,但在现实调试实现中还是比较繁琐,因此人们在寻求一种用软件代替硬件的复位方法来调试下载程序,近而在工程实际中更加快捷方便地进行程序实现。因此,文中提出了一种软件复位单片机的方法,即利用STC单片机独有的ISP引导区,用特殊的指令使调试好的程序从ISP引导区执行,避免频繁地硬件复位,而且简单实用。
1 软件复位单片机的工作原理
1.1 STC单片机复位方法简介
STC单片机的复位方法分为热启动和冷启动两种:冷启动是系统断电后再上电的硬件复位;热启动分为3种:一种是reset引脚复位,一种是内部看门狗复位,一种是ISP引导区复位。热启动中的reset复位是reset引脚接受到复位信号直接从用户区执行,内部看门狗是在外界电磁干扰致使程序跑飞时发出一个复位信号,使程序地址指针移动到00H,产生和reset复位相同的效果,ISP引导区复位是一种只有在系统上电时才执行的程序存储区,当程序执行到ISP引导区时,如果系统没有检测到合法的数据流,则直接执行用户程序区;如果系统检测到合法的数据流,则先下载程序,再执行用户程序区。单片机启动的过程为:先给断电的单片机通电,进行STCISP下载,然后执行用户程序,或者没有检测到合法的数据流,然后直接执行用户程序区。其流程图如图1所示。
[page]
1.2 软件实现不断电下载的工作原理
STC单片机ISP_CONTR是单片机进行软复位的控制寄存器,其地址为E7H,进行ISP_CONTR定义后,再自定义串口接受的数据流。然后进行串口初始化和定时器初始化,串口初始化的波特率和具体工作方式要与下载软件一致,定时器设置初值任意,在软件中保证1 s即可。串口中断子程序设计,具体过程为:当串口接受数据后,把SBUF中的数据和用户自定义数据进行比较。如果一致,赋值给ISP_CONTR使单片机复位;如果没有接受到合法数据流,则继续执行用户程序。具体流程如图2所示。
2 在线下载接口电路
图3为STC89C52与RS232串口的连接电路图,RS232为负逻辑电平,所以单片机在与上位机进行通信时需要逻辑转换,图3所使用的转换芯片为MAXIM公司生产的MAX232标准RS-232接口芯片,使用+5 V供电,内部为爽组驱动器/接收器,每个接收器将RS-232电平转换为5 VTTL/CM OS电平。其中,RS-232在现代应用中由标准的25线简化为发送线、接收线、地线三线传输。串口的发送和接收线分别与RS-232的R1IN和T1OUT相连,MAX-232的R1OUT和T1IN分别与单片机的P3.0和P3.1相连,实现上位机、转换芯片、单片机的相互通信。
3 不断电下载程序设计
在单片机和PC机通讯并实现不断电下载,首先要设置好串口通信协议,例如串口接受与发送数据的波特率,串行口的工作方式,串行口接收与发送的数据帧格式;其次是定义自定义下载命令,并与实际发送命令一致;再次是设置串口发送命令等待时间,这可以通过单片机内部定时器来实现;最后为下位机接收发送自定义指令判断,实现软复位。
3.1 串口通讯协议初始化
首先设置波特率,根据STC单片机的晶振频率和STC芯片性能,设波特率为9 600 bit·s-1,波特率由定时器的溢出率控制。然后设置串行口的通信协议,如数据位位数、停止位位数以及是否奇偶校验,具体设置如图4所示。
[page]
3.2 定时器的设置
波特率为9 600 bit·s-1,在串口工作方式2的情况下,根据方式2的波特率=(2SMOD/32)*(T1溢出率)。假设单片机的晶振频率为11.0 59 2 MHz,经12分频后得到计数器记—个数的时间为12/11.059 2 MHz,定时器T1溢出一次的时间为(256-X)×12/11 059 200,所以T1的溢出率为11 059 200/[12×(256-X)],因为波特率不需要加倍,所以SMOD=0。根据公式得,9 600=(1/32)×11 059 200/[(256-X)×12],解得X=253,转换成16进制数为0Xfd。减少了程序的冗余性,定时器的工作方式设定为2,定时器自动重装,不必写定时器中断子程序。
3.3 初始化子程序
3.4 用户自定义下载命令
定义语句为:#define seffdecide_download_commond0x8E。0x8E是用户任意定义的下载指令,但最多不能超过0xFF,因为ISP_CONTR寄存器只有8位。接着进行ISP_CONTR的地址定义,通过查STC89C52的用户手册,其语句为sfr ISP_CONTR=0xE7。
3.5 串口接收合法数据程序
单片机的工作原理是循环扫描,即使不加大循环while语句,用户程序也总是一遍一遍地执行,所以用户程序需要时时刻刻扫描是否是合法数据流的出现。
串口中断的编号为4,首先要检验中断标志位RI,如果RI置1,说明上位机向单片机的串口发送指令;随后指令内容被传送到单片机的SBUF中,判断SBUF中的命令内容是否和用户自定义的命令一致。如果一致,直接向ISP_CONTR中赋特定的值使程序指针指到ISP引导区,实现程序的软复位;如果不一致,使TI清零,以便下一次中断申请。
3.6 延时子函数
串口接收数据有1 s的延时时间,所以需要加延时子函数,代码如下:
Void delayl s()
{
Int p,q;
For(p=1000;p>0;p--)
For(q=100;q>0;q--);
}
4 结束语
介绍了STC系列单片机不断电下载程序的程序设计思路及方法,运用STC单片机独有的ISP引导区对软件模拟硬件复位实现单片机的不断电下载程序,省去了编程器的频繁插拔件或者频繁的手动复位硬件开关。此方法在大的程序编写调试过程中能节省大量时间,但也降低了串行口的使用效率。本例适合运用在使用串行口较低的情况下,并且在调试的情况下可以省去手动频繁的复位操作,减少工作量。
关键字:STC单片机 ISP 引导程序 不断电下载
引用地址:
STC系列单片机不断电下载程序应用技术
推荐阅读最新更新时间:2024-03-16 13:22
银牛视觉AI处理器采用芯原创新的ISP IP
芯原面向机器人、AR/VR/MR等应用提供优化的IP解决方案 2023年9月21日,中国上海—— 芯原股份今日宣布3D视觉与人工智能(AI)解决方案提供商银牛微电子(简称“银牛”)在其量产的NU4100视觉AI处理器中采用了芯原低延迟、低功耗的双通道图像信号处理器(ISP)IP,为机器人、增强现实(AR)/虚拟现实(VR)/混合现实(MR)、无人机等多种应用领域带来了优秀的图像和视觉体验。 银牛NU4100是一款高度集成的单芯片视觉AI处理器,具备高质量的3D深度感知、优化的AI处理和片上基于视觉的实时定位与建图(VSLAM),并可以低功耗、低延迟地处理来自多个4K摄像头的大量数据。作为一款功能强大的视觉处理器,NU
[嵌入式]
如何在KEIL中添加STC单片机
首先,看一下STC公司的解答: 1.把STC单片机,当成Intel的8052/87C52/87C54/87C58, Philips的P87C52/P87C54/P87C58就可以了 2.也可安装STC仿真器的驱动程序,这样就看到型号了 然后,我来详细的说明一下: STC单片机完全还可以当成AT89C系列,AT89S系列,因为都是51的内核。如果要想看到STC单片机,就安装STC仿真器的驱动程序,这样就有STC所有的系列了 STC仿真器的驱动程序,原意是供STC仿真器使用的,但是STC仿真器比较昂贵,再加上STC单片机本身可以ISP下载调试程序,没有必要再用仿真器了。 由于STC的仿真器的驱动程序太大,我将下载地址
[单片机]
stc51单片机怎么学, 先掌握STC单片机程序烧录方法!
今天我在这里和大家探讨一下关于 51单片机怎么学 这个话题。 08年我在大学里学习单片机课程的时候,学习内容主要包括单片机的发展历史,单片机的框架,单片机的寄存器,以及单片机的操作指令,用汇编语言实现一些简单的功能。 当时学习的时候知识课本知识,而又没有配套的开发板,可以让我们动手。 当时的感触就是一个字:难,两个字:枯燥。 也许大多数的同学和我是一样的,一大堆指令,感到非常的无趣,没有什么意思,考试也是一大堆理论知识。 当然现在大学里的课程可能已经做了升级,关于单片机编程以及 单片机C语言 这一块了不知道大学里有没有增加,课程有没有优化的更加人性化一点。 后来参加电赛,自己买了一个开发板,不断的编代码,实践。 刚开始用汇编语言,
[单片机]
stc单片机IO配置与PWM
I/O口配置 STC2C5201AD系列单片机所有I/O口均可由软件配置成4种工作类型之一,如下表所示。4种类型分别为:准双向口/弱上拉(标准8051输出模式)、强推挽输出/强上拉、仅为输入(高阻)或开漏输出功能。每个口由2个控制寄存器中的相应位控制每个引脚工作类型。STC- 2C5201AD系列单片机上电复位后为准双向口/弱上拉(传统805 的I/O口)模式。2V以上时为高电平,0.8V以下时为低电平。每个I/O口驱动能力均可达到20mA,但整个芯片最大不得超过90mA。 P3口设定 P3.7,P3.6,P3.5,P3.4,P3.3,P3.2,P3.1,P3.0口 (P3口地址:B0H)口地址:B0H))
[单片机]
基于RlTOS和ISP功能的数字仪表系统设计与实现
引言 Atmel公司的控制器以其集成度高、在线调试方便等特点广泛应用于工程实践领域,文中以某武器系统的前期预研为背景,讨论了数字仪表系统的软硬件实现过程,其主要功能包含:实时采集配电箱系统的6路正负模拟电压值及作战环境温度,并通过MSl2232B型液晶模块动态式显示。 1 软件特性 随着C语言在嵌入式系统中的广泛运用,软件系统的实时性、复杂性设计要求也越来越高,用通常的单任务无限循环结构与中断服务子程序相配合的编程思想已难以完成相关的软件设计或实现较为困难,RTOS(多任务实时操作系统)是现阶段较为流行的处理方式。 RTOS的基本设计思想是将多种系统输入和处理要求,按功能做成不同的任务函数体,并分配适当的优先级,参
[测试测量]
ISP图像处理芯片
1、FH8510ISP处理芯片简介 FH8510是一款针对CIS(CMOSImageSensor)的图像信号处理芯片,它内置强大图像处理引擎,CMOS图像传感器接口,TV编码器,D/A转换器,提供NTSC/PAL的输出,同时也提供ITU.BT65610Bit的输出,主要应用于中低端标清模拟CCTV摄像机、车载后视摄像机及楼宇对讲摄像机。FH8510可以支持多种CMOS图像传感器,具有功耗低、分辨率高、配置灵活、定制化程度高等特点。FH8510的缺省配置可以支持OV7740、OV7725,通过外接EEPROM还可以配置更多的CMOS图像传感器。FH8510的OSD采用硬件图像数据解压缩技术,全部的OSD数据可放置在EEPROM内。
[安防电子]
STC单片机AD转换,外部触发,数码管显示电路
#include REG51.H sfr ADC_CONTR=0xC5;/*A/D 转换寄存器*/ sfr ADC_DATA=0xC6;/*A/D 转换结果寄存器, 为10 位 A/D 转换结果的高8 位*/ sfr ADC_LOW2=0x0BE;/*A/D 转换结果寄存器, 低2 位有效, 为10 位 A/D 转换结果的低2 位*/ sfr P1M0=0x91;//P1 口模式选择寄存器0 sfr P1M1=0x92;//P1 口模式选择寄存器1 #define ADCPowerChannel_7 0xE7;/*P1.7 作为A/D 输入11100111B*/ unsigned char ADC_Channel_7_Result
[单片机]
STC单片机如何实现运行中自定义下载
使用STC单片机的用户肯定都有一个经历,烧写程序时每次都要先点下载命令、断电、上电,进行冷启动。整个过程是比较繁琐的一件事,下面介绍一种自定义下载方式(不用断电,不用每次都加载用户下载文件),修改完程序编译好,直接点接发送即可。 自定义下载原理:STC-ISP.exe软件 1、STC-ISP.exe软件,可由用户设置,按UART/RS-232的格式向用户程序发送命令。 波特率: 38400bps, 19200bps, 9600bps, 4800bps, 2400bps, 1200bps 等。 奇偶校验位: 无, 偶校验, 奇校验 数据位几位: 8 位,7 位,6 位,5 位等 停止位几位: 1 位, 1.5
[单片机]