您的位置:首页 > 其它

有关Keil软件仿真的串口调试技巧

2012-02-29 15:54 363 查看
http://www.dzjs.net/html/qianrushixitong/2006/1208/1179.html

有关Keil软件仿真的串口调试技巧

引言

在单片机系统中,串口(UART,通用异步收发接口)是个非常重要的组成部分。通常使用单片机串口通过RS232/RS485电平转换芯片和上位机连接,以入行上位机和下位机的数据交换、参数设置、组成网络及各种外部设备的连接等。RS232/RS485串行接口总线具有成本低、简单可靠、容易使用等特点,加上其历史悠久,所以目前应用仍然非常广泛;特别对于数据量不是非常大的场合,串口通信仍然是非常好的选择,有着广阔的使用前景。

在单片机编程中,串口占了非常重要的地位。传统方式串口程式的调试,往往是利用专用的单片机硬件仿真器。在编写好程式后,利用仿真器来设置断点,观察变量和程式的流程,逐步对程式进行调试,修高亮发光二极管参数正错误。使用硬件仿真器的确是非常有效的方法,不过也有一些缺点:

非常多仿真器不能做到完全硬件仿真,因而会造成仿真时正常,而实际运行时出现错误的情况;也有仿真不能通过,不过实际运行正常的情况。

对于一些较新的芯片或是表面贴装的芯片,要么没有合适的仿真器或仿真头;要么就是硬件仿真器非常昂贵,且不容易买到。

有时由于设备内部结构空间的限制,仿真头不方便接入。

有的仿真器属于简单的在线仿真型,仿真时有非常多限制。例如速度不高,实时OF或稳定OF不好,对断点有限制等,造成仿真起来不太方便。

1 调试前的准备工作

下面介绍一种利用Keil的软件仿真功能来实现51单片机串口调试用户程式的方法。使用这种方法led显示屏控制软件,无需所有硬件仿真器,甚至都不必用户电路板。所需的只是:

① 硬件。1台普通计算机(需要带有2个标准串口)和1根串口线(两头都是母头,连线关系如图1所示)。

② 串口软件能是自己编写的专用调试或上下位机通信软件,也能是通用的串口软件(如串口助手、串口调试等),主要用来收发数据。如果没有合适的串口调试软件,则可使用笔者编写的一个免费的串口小工具TurboCom。除了和其他软件相同的数据收发功能外,他更有定时轮流发送自定义数据帧和自动应答(接收到指定数据帧后,自动返回相应的数据帧)这两个非常有用的功能,特别适合于老化测试。这个小工具能从http://shaoziyang.bloger.com.cn下载。

2 基本调试命令介绍

这个串口调试方法主要是利用了Keil强大的软件仿真功能。在上海led电子显示屏新版本(高于6.0)的Keil软件中,增强了软件的仿真能力,能利用软件仿真更多的单片机功能。在这些功能中,其中有一个非常重要的功能就是利用计算机的串口来模拟单片机的串口(这不同于非常多软件在仿真时使用的激励文件方式,能直接和其他串口入行通信,更加方便、灵活)。首先要介绍仿真时需要使用的两个命令:ASSIGN和MODE。

2.1 ASSIGN命令

将单片机的串口绑定到计算机的串口。基本使用方式为:

ASSIGN channeloutreg

其中: channel代表计算机的串口,能是COM1、COM2、COM3或COM4;而inreg和outreg代表单片机的串口。对于只有一个串口的普通单片机,即SIN和SOUT;对于有两个或多个串口的单片机,即SnIN和SnOUT(n=0,1,…即单片机的串口号)。

图1 串口连线示意图

例如:

ASSIGN COM1SOUT

将计算机的串口1绑定到单片机的串口(针对只有一个串口的单片机)。

ASSIGN COM2S0OUT

将计算机的大连led显示屏出租串口2绑定到单片机的串口0(针对有多个串口的单片机,注意串口号的位置)。

需要注重的是,参数的括号是不能省略的,而outreg则是没有括号的。

2.2 MODE命令

设置被绑定计算机串口的参数。基本使用方式为:

MODE COMx baudrate, parity, databits, stopbits

其中: COMx(x = 1,2,…)代表计算机的串口号;baudrate代表串口的波特率;parity代表校验方式;databits代表数据位长度;stopbits代表停止位长度。

例如:

MODE COM1 9600, n, 8, 1

设置串口1。波特率为9 600,无校验位,8位数据,1位停止位。

MODE COM2 19200, 1, 8, 1

设置串口2。波特率为19 200,奇校验,8位数据,1位停止位。

使用以上两个命令,就能够将计算机的串口模拟成单片机的串口了。在进行软件仿真时,所有发送到被绑定的计算机串口上的数据都会转发到Keil模拟的单片机串口上,用户程式能通过中断处理程式或查询方式接收到这些数据;同样,单片机程式中发送到单上海led显示屏报价片机串口上的数据也会通过被绑定的计算机串口发送出来,能被其他软件所接收。利用这个特点,就能方便地仿真、调试单片机的串口部分程式。要注重的是,这两个命令需要一起使用。

2.3 仿真步骤

首先,用串口线将计算机的两个串口连接起来(或是两台计算机上的两个串口)。这两个串口一个用来模拟单片机串口,另一个给调试程式使用。这个由用户自己分配,没有特别需求。

其次,编写好用户程式,并编译通过。

然后,设置工程文件(Project)的相关参数,如图2和图3所示。主要是选择软件仿真模式(Use Simulator)及晶振参数。

图2 仿真参数设置

为了不必每次进渗透仿真状态后,都需要输渗入渗出串口参数设置命令,能建立一个初始化文件。初始化文件是个普通的文本文件,内容郑州led晶佳显示屏就是仿真时需要的命令,按照顺序一行输入一条。如图2所示,建立了一个debug.ini的初始化文件。这样,当每次进入仿真调试状态时,Keil就会自动载入 debug.ini的内容进行初始化。

为了正确仿真串口,在软件仿真调试时,在用户的Keil工程文件的属OF中,还需要设置实际使用的晶振频率。这个参数非常重要,直接影响通信的波特率,能按照实际使用的参数入行设置。要注重,这个参数的单位是MHz。

设置好参数后,就能进行仿真了。单击工具栏的图标按此在新窗口浏览图片入渗透Debug(仿真调试)状态,在Output window窗口中的command文本框(一般是在左下角)中输入上面介绍的命令。例如,将PC机的串口1设置为单片机的串口:

mode com1 9600,0,8,1

assign com1 Sout

然后设置断点,一般是在关键地方或和串口相关联的地方设置。再单击图标运行led照明市场(Run)用户程式,使用户程式运转起来(不然是接收不到串口数据的)。这时再使用串口调试软件或用户调试软件,发送通信命令或数据包,观用户程式是否入入断点,及相关的变量是否正确。还能有意发送带有错误数据的数据包,以观察用户程式的异常处理部分是否正常。一旦发现程式中的错误,能马上停止仿真调试,即时修改代码,然后再次重复上面的步骤进行仿真。因为不必和用户目标板联机,也不用下载代码到用户板上,所以速度非常高。以上这些步骤和使用硬件仿真器的基本相同,只不过目前使用的是软件仿真。

需要注重的是:仿真时单片机串口实际的波特率由MODE命令来指定,单片机程式中的TMOD、SCON等参数是不影响串口仿真状态的(也就发光二极管工作电流是说这些参数不影响仿真的波特率,即使他们是错误的)。不过中断的使能位(如ES、EA等)还是起作用的,如果ES或EA被禁止,那么就不会进入串口中断。

因为这种方法是利用计算机的串口来仿真单片机的串口,而仿真是通过Keil软件来转换串口上的数据,不是直接转发数据的,所以在实际仿真时,处理速度会比实际单片机运行时稍微低一点。比方说仿真状态时1 s只能发送/接收10个数据帧,但在单片机硬件上运行时可能1 s就能接收/发送50个数据帧。这和使用的计算机的速度有关,但对仿真来说,是没有所有影响的。

对于多串口的单片机,从理论上来说,能一次绑定多个串口,只要计算机有足够多的串口。基本上,使用这种方法需要占用计算机的串口数量是单led lamp片机绑定串口的2倍。一个串口被Keil占用,用来模拟单片机的串口;另外一个串口被计算机占用,用来给单片机的串口收发数据。

3 小结

这里介绍的方法对C51和汇编语言都是适合的。他最大的好处就是简单、方便,容易使用,不必使用所有电路,也没有特别的需求;甚至能在硬件电路制作好之前就将串口部分的程式编写、调试完毕。笔者使用这种方法已非常长时间了,事实证实这种方法确实非常有效。其实对于51单片机,Keil的仿真功能实在是太强大了,只要充分掌控其特点,能够熟练利用他,就能解决工作中的大部分问题。非常多工作都能使用软件仿真来完成,根本无需所有硬件仿真器;只有一些新的外部器件的时序、接口的调试才有可能需要用到led 照明燈硬件仿真器。目前介绍Keil软件仿真这方面的参考书籍非常少,有些讲的还是老版本的用法,不过没有关系,Keil的帮助文件写得非常周详、非常清晰,只要认真观明白就会使用了。使用熟练后,就会发现Keil的功能相当强。

对于串口编程,51单片机有Keil这个功能强大的研发软件,给我们带来了极大的便利;而在其他单片机软件的研发中,目前还没有这么强大的研发工具和方便的调试手段。这里有个变通的办法,就是能先在Keil中编写并调试好串口程式,然后将程式移植到其他单片机平台中(笔者在PIC18单片机研发中就使用了这种方法,收到了非常好的效果。当然这是指在使用C语言研发单片机程式时,汇编语言是没有可移植OF的)。至于怎么能够减小程式移植的太阳能路灯生产厂家工作量,使得程式具有更好的通用OF,以最小的代价就能平滑地移植到其他单片机平台上,也是个非常值得探讨的问题

很抱歉,因为您在网易相册发布了违规信息,账号被屏蔽。被屏蔽期间他人无法访问您的相册。

去帮助中心,了解如何重新恢复服务。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: