STC51烧录程序时序分析
STC51烧录程序时序分析
Note1:关于STC51的冷启动下载和复位
STC51单片机里面有一段出厂时固化的程序,这段程序的作用是检测串口是否要下载程序,不需要则执行单片机内的用户程序。每次启动时运行这端程序,这就是为什么每次下载时要冷启动。而复位后单片机是从地址0X0000H处开始执行,地址0X0000H又会指向主程序入口,即主函数处,即片内下载的用户程序而不会执行前面已经固化的检测串口那段程序。这就是为什么单片机每次下载要冷启动,而复位不行。注意,程序前面的宏定义什么的东西不占用系统时间,所以主程序即主函数处。
有一个办法可以给那些需要加电立刻启动的用户,STC单片机可以设置为加电时只有P1.0/P1.1为低电平时开始下载程序,否则直接执行用户程序。这种办法快,不用等前面检测串口的那段时间。STC51单片机冷启动是必须的而复位电路不是必须的,不管是冷启动还是手动启动。也就是想下载程序必须冷启动,而有没有复位电路无所谓。但是最小系统板上必须有复位电路,无论是上电复位,还是上电加手动复位,虽然在一些简单的程序中看不出区别,但是因为复位操作会对一些特殊寄存器产生影响,这样没有复位操作的话再次执行函数的时候会出现错误。单片机断电后在通电也会从主函数处继续执行,可能是单片机断电后地址自动回到0X0000H,但是那些特殊寄存器里的值不会改变。
单片机的上电复位和手动复位是比较简单的电路,只要是根据单片机手册要求的复位时间TRESET要小于复位电路中的RC常数。
单片机下载程序一般都是通过串口,即上位机(STC-ISP)与单片机的底层通信都是通过串口协议实现的,两者之间更为高级的通信协议是建立在串口协议上的。
Note2:上位机(STC-ISP)检测单片机时序
波特率即为串口发送每比特所占用的时间,此处为2400,即每比特所占用的时间为1/2400=4.167*E-4 (S);可以点击检测MCU选项,上位机开始与单片机握手。整个握手过程可以从图2.2中获得,图中橙色为上位机发送的询问脉冲,蓝色为单片机的响应脉冲
图2.1 STC-ISP软件
图2.2 握手过程
由图2.2可知,上位机先发送检测信号,此时单片机需要冷启动,检测信号可以参看图2.3。在单片机冷启动后,单片机会运行内部固化程序,自行检测串口是否有上位机检测信号。一旦发现检测信号,单片机回复响应信息,响应信息波形可见图2.4,内容则可见图2.5。
图2.3 检测信号
图2.4 响应信号
图2.5 回复内容
上位机接收到单片机响应后的回复信号,波特率为2400,每比特所占时间大约为416us,可以根据图2.7对上位机的回复进行数据解析。
图2.6 上位机回复内容
图2.7 上位机回复内容
Note3:上位机(STC-ISP)程序烧录
总的烧录过程为:上位机先检测单片机,再通知单片机开始烧录程序,每次发一小段程序,单片机会有一个ACK,之后再发结束指令,图3.2接图3.1。
图3.1 程序烧录
图3.2 程序烧录
Note4:总结
图4.1 汇总
WOLF
STC51烧录程序时序分析相关推荐
- 计算机行业中的烧写怎么翻译,单片机怎么烧录程序_单片机烧录程序步骤说明...
描述 单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU.随机存储器RAM.只读存储器ROM.多种I/O口和中断系统.定时器/ ...
- 对Keil在线烧录程序弹出“The firmware of the connected J-Link[SN:xxxxxxxx] does not support......的问题解决
问题:最近下载并使用Keil_v5.29,在线烧录程序时出现"The firmware of the connected J-Link[SN:xxxxxxxx] does not suppo ...
- STM32休眠后不能烧录程序
STM32 原因:程序逻辑有误导致休眠后不能唤醒,不能烧录程序. 解决: 通常的解决办法是:一般的开发板或单片机最小系统都会有复位键,按住复位键,点下载,然后松开复位键即可. 1.可以将单片机的NRS ...
- ST单片机使用ST Visual Programmer软件烧录程序简易教程
文章原始地址: http://feotech.com/?p=100 ST单片机使用ST Visual Programmer软件烧录程序简易教程 ST Visual Programmer 是ST公司为自 ...
- stm32烧录软件_stm32怎么烧录程序
STM32烧录程序目前笔者知道的有三种:JLink ,Ulink和串口烧录,使用工具分别为:JLink,ULink以及USB转TTL线. ULink 烧录程序 在安装MDK过程中,会有提示是否安装驱动 ...
- 【华为云技术分享】使用keil5打开GD32F450i的MDK项目出现的问题以及J-Link无法烧录程序对应的解决方案
问题1:使用keil5打开后缀名为.uvproj的MDK项目出现无法打开的问题 对应解决方案:上述问题主要是keil的版本不兼容问题造成,因此可以直接将项目名称后缀名称由.uvproj更改为.uvpr ...
- 安装恩智浦IDE与配置SDK和烧录程序
目录 前言 第一步下载IDE 第二步定制你的SDK 第三步在IDE中配置你的SDK 第四步使用你的SDK 第五步烧录程序 前言 NXP平台的开发板拥有自己的IDE与SDK,如果想要使用官方IDE进行开 ...
- STM32在线烧录程序的开发
STM32在线烧录程序的开发 2013年03月10日 17:07:38 vishtvro 阅读数 2515 STM32在线烧录程序的开发<梅川酷子原创> STM32在芯片生产的阶段固化了一 ...
- c51单片机烧录程序 控制台显示正在检测目标单片机
问题 c51单片机烧录程序 控制台显示正在检测目标单片机 详细问题 笔者使用单片机型号STC89C52, 进行程序烧录.控制台显示正在检测目标单片机 解决方案 将单片机型号由STC89C52更改为ST ...
最新文章
- 【冰极峰教程系列之二】:牢不可破的九宫格布局
- java和C中基本数据类型的所占字节数对比
- Java实现字符全阵列阵列
- 条款10 令operator=返回一个reference to *this
- Android Fragment 简单实例
- 计算机应用基础 聂敏,1. 在Excel中,公式“COUNT(C2:E3)”的含义是:( )。...
- 51Nod 斜率最大
- java守护线程和用户线程
- linux 高性能服务排查方式
- 基于eclipse RCP的文件夹管理工具
- 如何给定两个gps坐标 算出航向角_机器人开发如何配置ROS中的TF变换关系?
- php 图片印章_php工具型代码之印章抠图
- 2020年的前端该怎么学?不吹不黑
- scala 判断字段 是不是 日期类型_举个栗子!Tableau 技巧(147):使用 动态参数 筛选到最新日期值...
- Android ViewGroup
- [转]STL(容器)与DEBUGNEW运算符冲突的解决
- linux下vscode配置c++,使其和Visual Studio2019一样调试
- Redis常用命令汇总
- [转贴]RUP与XP的平衡之道
- 51单片机学习历程(二)快速入门51单片机