STC Monitor-51的单片机在线仿真调试

发布者:EnchantedMelody最新更新时间:2016-03-17 来源: 21ic关键字:IAP15F2K61S2  STC  Monitor-51  在线仿真 手机看文章 扫描二维码
随时随地手机看文章
引言

当今很多院校中,单片机的教学仍以经典的51内核单片机为主。其实验与应用开发中最重要的环节是软、硬件综合调试,通常采用的方法主要有两种:一种是使用仿真器,优点是功能齐全,但是价格较高,一般厂家研发采用;另一种是使用软件仿真和芯片直接烧写验证的方法,其成本虽然低,但在程序或硬件出现疑难问题时,很难找到原因。

实际上,还有一种成本低且具有在线仿真调试功能的技术是在线仿真调试,它特别适合初学者。“在线仿真调试”是指:通过Keil C51编译器,结合单片机中的监控程序,对系统的应用程序和硬件进行仿真调试,可以让单片机以单步、断点、全速等运行模式来执行程序。在线仿真调试是单片机应用开发过程中的高效方法,国内STC公司的51内核单片机IAP15F2K61S2便具有在线仿真调试功能。

1 在线仿真调试概述

Keil C51编译器开放了调试器与目标芯片的接口,只要芯片厂商提供自己特有的驱动程序(动态链接库DLL),就能使Keil调试器在不改变图形界面的情况下支持相应的硬件仿真调试。

STC Monitor-51是STC公司开发的内嵌Keil C51编译器的目标系统调试模块,它是一个实时监控程序,可利用PC机的USB口与目标端进行通信。在线仿真调试系统的结构示意图如图1所示。

a.jpg

PC机端由Keil调试器和STC Monitor-51的驱动程序stcmon51.DLL组成,stcmon51.DLL是STC公司自主开发的Keil仿真驱动协议,功能相比于 Keil自带的Mon51.DLL有较大的突破,例如:更改通信接口为真正的USB口,支持Keil Flash Download功能,支持软件复位,增加断点数量等。目标端由USB转串口芯片CH340、51内核单片机及STC Monoitor-51监控程序组成。Keil调试器将用户的调试指令通过PC机的USB口传送给目标端;目标端的USB转串口芯片将其转换为TTL电平后发送给单片机,最后由单片机中驻留的STC Monitor-51监控程序分析并执行。

2 在线仿真调试实现

2.1 IAP15F2K61S2的存储器结构

STC Monitor-51具有载入并执行用户程序的功能,所以要求单片机的程序存储器为Flash ROM,并具有ISP功能。ISP(In System Programming,在系统编程)指电路板上器件不用取出,就可以写入用户代码,已经编程的芯片也可以用ISP方式擦除或再编程。

IAP15F2K61S2单片机的程序存储器与数据存储器是独立编址的。IAP15F2K61S2单片机内部在物理上有4个相互独立的存储器空间;程序存储器(程序Flash)、片内基本RAM、片内扩展RAM与EEPROM(数据Flash)。IAP15F2K61S2单片机片内集成了61 KB的程序Flash存储器,其地址为0000H~F3FFH。用户可以使用的最大程序空间为55 KB,整个程序Flash存储器的分布图如图2所示。

b.jpg

很多单片机在出厂时已经将具有Boot loader功能的程序固化在系统区中,因此无需编程器就可通过ISP下载软件将用户程序下载到Flash ROM中。STC公司的单片机可以进行ISP串行下载程序,就是因为系统区中有芯片出厂时就已经固化的ISP引导码。如果想要下载应用程序至单片机,先要在下载软件界面上进行相应选择,然后再上电,当单片机检测到上位机中有特定的下载条件时,便启用ISP下载功能将程序下载至用户程序区;否则,单片机便会从用户应用程序区中开始执行代码。

STC公司的最新ISP下载软件stc-isp-15xx-v6.77.exe还可以将STC Monoitor-51监控程序下载到监控程序区,从而实现在线仿真调试功能。

2.2 IAP15F2K61S2的ISP和IAP实现

在线仿真调试功能的实现依赖于用户系统内部的监控程序和PC机上的下载程序。其具体实现主要利用IAP(In Applicatin Programming,在应用编程)技术,即在程序运行时程序存储器可由程序自身进行擦写。IAP15F2K61S2单片机的IAP功能,与以下几个特殊功能寄存器有关。

IAP_DATA:ISP/IAP数据寄存器,从Flash读出的数据放在此处,写入Flash的数据也需放在此处。

IAP_ADDRH:ISP/IAP地址寄存器高8位。

IAP_ADDRL:ISP/IAP地址寄存器低8位。

IAP_CMD:ISP/IAP命令寄存器,须IAP_TRIG触发方可生效。

IAP_TRIG:ISP/IAP命令触发寄存器。

IAP_CONTR:ISP/IAP控制寄存器。

当IAPEN(IAP_CONTR.7)=1时,只有对IAP_TRIG先写入0x5A、再写入0xA5,ISP/IAP命令才会生效。

ISP/IAP操作完成后,IAP命令寄存器、IAP地址高8位地址寄存器和低8位地址寄存器的内容都不变。如果需要对下一个地址的数据进行 ISP/IAP操作,则要手动将该地址的高8位和低8位对应写入地址寄存器中。每次进行IAP操作时,都要对IAP_TRIG先写入0x5A,再写入 0xA5,ISP/IAP命令才会生效。

ISP/IAP命令寄存器IAP_CMD的格式如表1所列。通过对命令寄存器IAP_CMD的MS1和MS0位进行赋值,可以实现相应功能。

c.jpg

IAP15F2K61S2程序在用户应用程序区时,不仅可以对数据Flash区(EEPROM)进行字节读、字节编程和扇区擦除,而且可以修改用户应用程序区。扇区擦除程序示意性代码如下所示,其他ISP/IAP操作类似。

IAP_ADDRH=EE_address/256; //送扇区地址高字节(地址需要改变时才需重新送地址)

IAP_ADDRL=EE_address%256; //送扇区地址低字节(512字节/扇区)

IAP_CONTR=0xS0; //设置等待时间,允许ISP/IAP操作,送一次就够

IAP_CMD=3; //送扇区擦除命令,命令不需改变时,不需重新送命令

IAP_TRIG=0x5A;

IAP_TRIG=0xA5; //ISP/IAP触发命令

2.3 监控程序

为配合Keil调试器的硬件仿真调试,监控程序应具备相应的单步、断点设置、ID读取等功能。仿真开始时,监控程序接收命令,判断相应的功能操作,再执行。STCMonoit or-51监控程序只能在程序中给定点处监测,调试时需要占用程序空间,属于一种侵入式的调试,其工作流程如图3所示。

d.jpg

2.4 IAP15F2K61S2在线仿真调试过程

以前的51内核单片机在线仿真调试时,需要根据硬件结构,修改应用程序和Keil C51集成开发环境的参数,初学者不易掌握,从而影响普及推广。STC公司的IAP15F2K61S2是十分易用的在线仿真调试芯片,只需利用最新ISP 下载软件stc-isp-15xx-v6.77.exe,将监控程序下载到单片机中,就可轻松地实现在线仿真调试功能。IAP15F2K61S2线仿真调试过程如下。

2.4.1 安装仿真驱动

运行ISP下载软件stc-isp-15xx-v6.77.exe,在“Keil仿真设置”页面中单击“添加MCU型号到Keil中”按钮,在出现的目录选择窗口中,确定到Keil的安装目录(一般可能为“C:\Keil\”)。添加头文件的同时也会安装STC的STC Monitor-51仿真驱动stcmon51.DLL。

2.4.2 创建仿真芯片

将一颗IAP15F2KG1S2通过目标板连接到电脑的USB口,然后在“Keil仿真设置”页面中单击“将IAP15F2K61S2设置为仿真芯片”按钮,再给目标板上电,当程序下载完成后仿真器便制作完成。

2.4.3 创建项目工程

若上一步的驱动安装成功,则在Keil中新建项目工程、选择芯片型号时,便会有“STC MCU Database”的选择项,然后从列表中选择相应的MCU型号(目前STC支持仿真的型号只有STC15F2K60S2),单击“确定”完成选择,再按Keil的一般使用方法添加源程序到项目工程中,若编译无误,则可以进行下面的项目设置。

2.4.4 硬件仿真驱动选择

选择Project中的Opertions for Target’Target1’,进入“Debug”设置页,在右侧的硬件仿真驱动下拉列表中选择“STC Monitor-51 Driver”项,然后单击“Settin gs”按钮,对串口的端口号和波特率进行设置,波特率一般选择115 200或者57 600。到此设置便完成了。

2.4.5 在线仿真调试

在这个Keil工程下,按下“Ctrl+F5”即可开始在线仿真调试。若硬件连接无误,将会进入到类似于常用的软件调试,并在命令输出窗口显示当前的仿真驱动版本号和当运行、全速运行等进行仿真调试。调试中的注意事项主要有:断点设置的个数不要太多,否则会影响调试速度;若仿真源代码为汇编程序,则第一条语句必须是长跳转语句,不能使用其他语句;仿真中,不能使用与P3.0和P3.1引脚相关的中断和功能。

结语

结合IAP15F2K61S2单片机与监控程序STC Monoitor-51、Keil C51集成开发软件,提供了一种成本低、功能强的在线硬件仿真调试技术,降低了使用单片机开发工具的门槛,特别适用于单片机初学者以及学校的教学活动,也为选用51内核单片机进行应用开发带来了极大便利,只需下载监控代码就可以进行在线仿真调试。

关键字:IAP15F2K61S2  STC  Monitor-51  在线仿真 引用地址:STC Monitor-51的单片机在线仿真调试

上一篇:基于单片机的病房紧急呼叫系统设计
下一篇:基于WiFi的可实时视频同传的探测小车

推荐阅读最新更新时间:2024-03-16 14:47

STC单片机之PCA/PWM
2路PCA的捕获、高速输出、16bit定时器、PWM模块 PCA.c * 文 件 名:PCA.c * 芯 片:STC12C5A60S2 * 晶 振:12MHz * 创 建 者:冷月 * 创建日期:2010.8.18 * 修 改 者: * 修改日期:2010.9.3 修改设置波特率参数为x%,增加定时器0作为PCA时钟源 * 功能描述:2路PCA的捕获、高速输出、16bit定时器、PWM实现 */ #include STC12C5A.H #include PCA.h #define uchar unsigned char #define uint unsigned int /
[单片机]
51单片机STC89C52控制LED跑马灯左移(使用C51自带库_crol_()实现)
/*-----------------------包含头文件区域-------------------------*/ #include reg52.h //单片机头文件 #include intrins.h //C51自带库头文件 /*-----------------------函数声明区域---------------------------*/ void delay(unsigned int xms);//延时函数声明 /*-----------------------主函数区域-----------------------------*/ void main() { unsigned char i;/
[单片机]
STC单片机程序下载失败问题总结
STC为宏晶公司推出的国产51单片机,其优点在于价格低廉,功能强大,使用方便,尤其是其串口ISP下载程序的方式方便了大量用户,免去了购买昂贵的编程器,非常适合单片机入门学习使用。 但是初学者常会遇到程序无法下载的情况,很多人甚至因此放弃了学习,实在可惜,在此给大家总结了常见的出错原因、判断方法和解决方法。 STC单片机下载程序需要的硬件主要分三部分: 单片机最小系统、下载电路、计算机端。 下载失败一般就从这三个方面来解决问题。 如果你有或者能向别人借到一套可以正常下载程序的电脑、单片机下载线、开发板,通过控制变量的方法,很快就能找到问题出在哪个环节。 1、你可以将自己的开发板连接在能正常下载的电脑上进行下载
[单片机]
<font color='red'>STC</font>单片机程序下载失败问题总结
基于STC12C65A60S2的空中花园室内空气更新系统的设计
为了解决中央空调长时间工作让封闭室内空气不能流通,从而给室内空气环境带来的空气质量下降问题。本方法提出的概念是基于STC12C65A60S2利用空中花园(即在城市大楼上建造大型的绿色植物花园)来净化和过滤空气,结合负离子发生器进一步净化。待空气指标达到预设指标,然后通过管道输送到w办公室,商场,家庭用户等密闭空间进行新鲜空气补充,实现室内空气更新。该系统具有电路结构简单,制作成本低,经济效益好,空气净化效果好的特点,达到设计的基本要求。 随着城市经济发展,中央空调成为各种大型商业楼如写字楼,大型商场及酒店必不可少的制冷电器。但对于使用所有空调都会带来的一个问题是:长时间的室内封闭环境进行内部的循环,造成的空气不流通,室内空
[单片机]
基于<font color='red'>STC</font>12C65A60S2的空中花园室内空气更新系统的设计
关于STC89C52系列单片机电路整理
本文主要对STC89C52系列单片机进行了简单介绍,对其主要电路进行整理。 1 STC89C52系列单片机简介 STC89C52单片机指令完全兼容传统8051单片机,包括12T和6T两种模式,用户可以根据自己需要任意选择。12T指12时钟每机器周期,6T指6时钟每机器周期。 STC89C52的特性如下: 1. 增强型8051单片机,6T和12T两种模式任选,指令完全兼容传统8051。 2. 工作电压: STC89C52 单片机工作电压:5.5V~3.8V (5V单片机) 3. 工作频率范围:0-35MHz,实际工作频率可以高达42MHz。常用的时钟工作频率为11.0592MHz和12MHz。 4. 片内Flash程序存储器:4
[单片机]
关于<font color='red'>STC</font>89C52系列单片机电路整理
基于C语言STC89C52单片机电子密码锁的设计与仿真
摘要:介绍一种通过Protues软件成功仿真的电子密码锁的实现过程。它采用高可靠性的STC89C52单片机来实现开锁和密码的识别,采用具备I2C总线接口的E2PROM芯片来完成密码的存储,通过1602液晶显示器提示程序运行状态和使用步骤,利用蜂鸣器模拟报警,发光二极管模拟锁的开关。该系统用C语言编写程序,与汇编语言相比具备更好的移植性和可读性,便于修改和增减功能。 关键词:Protues;密码锁;单片机;C语言 O 引言 电子密码锁是现代生活中常用的加密工具。它克服了机械式密码锁密码量少、安全性能差的缺点,尤其是微控制器的智能电子密码锁,不仅具有电子密码锁的功能,还可引入智能化管理功能,从而使密码锁具有更高的安全性和可靠性。
[单片机]
基于C语言<font color='red'>STC</font>89C52单片机电子密码锁的设计与<font color='red'>仿真</font>
STC15F2K60S2单片机数字电压表制作(不用外围A/D换换)
最近做了一个用STC15系列单片机内部A/D转换做的数字电压表,1602显示。就想着实现硬件很少,就做着玩玩。 制作出来的实物图如下: 实物图 /*** 等待液晶准备好***/ void LcdWaitReady() { unsigned char sta; LCD1602_DB = 0xFF; LCD1602_RS = 0; LCD1602_RW = 1; do { LCD1602_E = 1; sta = LCD1602_DB; //读取状态字 LCD1602_E =
[单片机]
<font color='red'>STC</font>15F2K60S2单片机数字电压表制作(不用外围A/D换换)
51单片机(STC89C52RC) keil软件精确定时 浅析
  这里主要是对使用keil环境下,提高51单片机软件精度的问题给出自己的一点小看法,参阅了文章 利用 Keil Cx51实现T0的精确定时 ,使用文章中的方法的确是可以提高软件精度,可是一碰到中断函数中语句较多,且main函数其它任务的时候,总是觉得力不从心,因为要计算中断执行时间就够我受的了。我可是很懒的,研究之下发现了一些东西。 51误差主要是来自两个方面:晶振和单片机中断系统的误差 晶振:我们的晶振一般误差都是20PPM的,百万分之二十。想提高精度,只能选择误差更小的晶振,但它毕竟不是为精确定时设计的,很难达到时钟芯片晶振的精度。 中断系统的误差:定时器产生中断请求以后,并不一定能马上响应这个中断。单片机至少要把当
[单片机]
51单片机(<font color='red'>STC</font>89C52RC) keil软件精确定时 浅析
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved