您的位置 首页 ADAS

有关Keil软件仿真的51单片机串口调试技巧

引言在单片机系统中,串口(UART,通用异步收发接口)是一个非常重要的组成部分。通常使用单片机串口通过RS232/RS485电平转换芯片与上位机连接,以进行上位机与下位机的数据交换、参数设

  导言

  在单片机体系中,串口(UART,通用异步收发接口)是一个十分重要的组成部分。一般运用单片机串口经过RS232/RS485电平转化芯片与上位机衔接,以进行上位机与下位机的数据交换、参数设置、组成网络以及各种外部设备的衔接等。RS232/RS485串行接口总线具有成本低、简略牢靠、简略运用等特色,加上其历史悠久,所以现在运用依然十分广泛;特别关于数据量不是很大的场合,串口通讯依然是很好的挑选,有着宽广的运用远景。

  在单片机编程中,串口占了很重要的方位。传统办法串口程序的调试,往往是运用专用的单片机硬件仿真器。在编写好程序后,运用仿真器来设置断点,调查变量和程序的流程,逐渐对程序进行调试,批改过错。运用硬件仿真器的确是很有用的办法,可是也有一些缺陷:

  许多仿真器不能做到彻底硬件仿真,因而会形成仿真时正常,而实践作业时呈现过错的状况;也有仿真不能经过,可是实践作业正常的状况。

  关于一些较新的芯片或许是外表贴装的芯片,要么没有适宜的仿真器或仿真头;要么便是硬件仿真器十分贵重,且不简略买到。

  有时由于设备内部结构空间的约束,仿真头不便当接入。

  有的仿真器归于简略的在线仿真型,仿真时有许多约束。例如速度不高,实时性或稳定性欠好,对断点有约束等,形成仿真起来不太便当。

  1 调试前的准备作业

  下面介绍一种运用Keil的软件仿真功用来完结51单片机串口调试用户程序的办法。运用这种办法,无需任何硬件仿真器,乃至都不需求用户电路板。所需的仅仅:

  ① 硬件。1台一般核算机(需求带有2个规范串口)和1根串口线(两端都是母头,连线联系如图1所示)。

  ② 串口软件可所以自己编写的专用调试或上下位机通讯软件,也可所以通用的串口软件(如串口帮手、串口调试等),首要用来收发数据。假如没有适宜的串口调试软件,则可运用笔者编写的一个免费的串口小工具TurboCom。除了与其他软件相同的数据收发功用外,它还有守时轮番发送自定义数据帧和主动应答(接纳到指定数据帧后,主动回来相应的数据帧)这两个很有用的功用,特别合适于老化测验。这个小工具可以从网上下载。

  2 底子调试指令介绍

  这个串口调试办法首要是运用了Keil强壮的软件仿真功用。在新版别(高于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

  将核算机的串口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模仿的单片机串口上,用户程序可以经过中止处理程序或查询办法接纳到这些数据;相同,单片机程序中发送到单片机串口上的数据也会经过被绑定的核算机串口发送出来,可以被其他软件所接纳。运用这个特色,就可以便当地仿真、调试单片机的串口部分程序。要留意的是,这两个指令需求一同运用。

  

 

  2.3 仿真过程

  首要,用串口线将核算机的两个串口衔接起来(或许是两台核算机上的两个串口)。这两个串口一个用来模仿单片机串口,另一个给调试程序运用。这个由用户自己分配,没有特别要求。

  其次,编写好用户程序,并编译经过。

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

  

 

  图2 仿真参数设置

  为了不必每次进入仿真状况后,都需求输入串口参数设置指令,可以树立一个初始化文件。初始化文件是一个一般的文本文件,内容便是仿真时需求的指令,依照次序一行输入一条。如图2所示,树立了一个debug.ini的初始化文件。这样,当每次进入仿真调试状况时,Keil就会主动载入 debug.ini的内容进行初始化。

  为了正确仿真串口,在软件仿真调试时,在用户的Keil工程文件的特色中,还需求设置实践运用的晶振频率。这个参数十分重要,直接影响通讯的波特率,可以依照实践运用的参数进行设置。要留意,这个参数的单位是MHz。

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

  mode com1 9600,0,8,1

  assign com1 Sout

  然后设置断点,一般是在要害当地或与串口相关联的当地设置。再单击图标作业(Run)用户程序,运用户程序作业起来(否则是接纳不到串口数据的)。这时再运用串口调试软件或用户调试软件,发送通讯指令或许数据包,看用户程序是否进入断点,以及相关的变量是否正确。还可以有意发送带有过错数据的数据包,以调查用户程序的反常处理部分是否正常。一旦发现程序中的过错,可以立刻中止仿真调试,当即修正代码,然后再次重复上面的过程进行仿真。由于不需求与用户方针板联机,也不必下载代码到用户板上,所以速度十分高。以上这些过程和运用硬件仿真器的底子相同,只不过现在运用的是软件仿真。

  需求留意的是:仿真时单片机串口实践的波特率由MODE指令来指定,单片机程序中的TMOD、SCON等参数是不影响串口仿真状况的(也便是说这些参数不影响仿真的波特率,即便它们是过错的)。可是中止的使能位(如ES、EA等)仍是起作用的,假如ES或EA被制止,那么就不会进入串口中止。

  由于这种办法是运用核算机的串口来仿真单片机的串口,而仿真是经过Keil软件来转化串口上的数据,不是直接转发数据的,所以在实践仿真时,处理速度会比实践单片机作业时略微低一点。比方说仿真状况时1 s只能发送/接纳10个数据帧,但在单片机硬件上作业时或许1 s就可以接纳/发送50个数据帧。这与运用的核算机的速度有关,但对仿真来说,是没有任何影响的。

  关于多串口的单片机,从理论上来说,可以一次绑定多个串口,只需核算机有足够多的串口。底子上,运用这种办法需求占用核算机的串口数量是单片机绑定串口的2倍。一个串口被Keil占用,用来模仿单片机的串口;别的一个串口被核算机占用,用来给单片机的串口收发数据。

  3 小结

  这儿介绍的办法对C51和汇编言语都是合适的。它最大的优点便是简略、便当,简略运用,不需求运用任何电路,也没有特别的要求;乃至可以在硬件电路制作好之前就将串口部分的程序编写、调试结束。笔者运用这种办法现已很长时刻了,事实证明这种办法的确十分有用。其实关于51单片机,Keil的仿真功用实在是太强壮了,只需充沛把握其特色,可以娴熟运用它,就可以处理作业中的大部分问题。许多作业都可以运用软件仿真来完结,底子无需任何硬件仿真器;只需一些新的外部器材的时序、接口的调试才有或许需求用到硬件仿真器。现在介绍Keil软件仿真这方面的参阅书本很少,有些讲的仍是老版别的用法,不过没有联系,Keil的帮助文件写得很具体、很清楚,只需仔细看理解就会运用了。运用娴熟后,就会发现Keil的功用适当强。

  关于串口编程,51单片机有Keil这个功用强壮的开发软件,给咱们带来了极大的便当;而在其他单片机软件的开发中,现在还没有这么强壮的开发工具和便当的调试手法。这儿有个变通的办法,便是可以先在Keil中编写并调试好串口程序,然后将程序移植到其他单片机平台中(笔者在PIC18单片机开发中就运用了这种办法,收到了很好的作用。当然这是指在运用C言语开发单片机程序时,汇编言语是没有可移植性的)。至于怎么可以减小程序移植的作业量,使得程序具有更好的通用性,以最小的价值就可以滑润地移植到其他单片机平台上,也是一个十分值得讨论的问题。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/adas/115080.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部