KEIL中如何用虚拟串口调试串口程序
使用Keil软件模拟调试单片机串行口

使用Keil软件模拟调试单片机串行口单片机串行口是单片机中很常见的接口之一,常用于与外界通讯,如与PC机通讯,接收或发送数据等。
Keil软件可以帮助我们模拟及调试单片机串行口,下面是详细介绍。
一、Keil软件简介Keil是一款强大的单片机编程软件,具有模拟器和仿真器。
其可支持多种嵌入式系统和多种编译器。
同时Keil具有标准C 编译器,专门用于单片机编程,而且具有与某些模拟器和编译器的集成,可提供完整的嵌入式开发环境。
二、使用Keil软件模拟1. 连接软件与硬件在开始模拟之前,需要将单片机与电脑通过串口连接好。
打开“Options for Target”对话框,选择“Debug”选项卡,选择正确的COM 端口,设置存根速度,完成调试设置。
2. 添加串行口文件在Keil软件中打开设计文件,键入“#include <reg52.h>”来添加注册头文件,其中包含了需要使用串口的相关寄存器位。
利用如下代码,可以对串行口的各项参数进行设置,例如波特率、校验位等等。
void init(){SCON = 0X50; //使串口工作在方式1,即8位数据,可变波特率TMOD |= 0X20; //TMOD的高4位设为0010,使Timer1工作在方式2TH1 = 0XF3; //波特率设为2400bpsTL1 = 0XF3;TR1 = 1; //启动Timer1ES = 1; //开启串口中断EA = 1; //打开总中断}3. 编写数据收发代码在调用串口的过程中,我们往往需要使用到接收和发送两个函数。
在接收方面,我们需要设置好接收中断模式以及缓冲区的异步处理。
编写简单的数据接收收发代码如下:void send_data(unsigned char dat){SBUF = sdat; //将数据传输到SBUF当中while(!TI); //等待发送完成TI = 0; //完成发送}unsigned char receive_data(){while(!RI); //等待接收完成RI = 0; // 完成接收return SBUF; // 返回接收缓冲区}4. 最后进行模拟完成串行口配置和数据处理之后,就可以开始模拟调试了。
关于Keil串口使用的一些要点

字号:大中小关于Keil串口使用的一些要点1.Keil的Peripherals下的Serial显示的对话框中,只是用来查看一些串口状态的,是不能用来修改的。
比如想模拟串口接收,在这里修改SBUF的值会不起作用。
读到的全是0.2.Keil的Serial #1,#2,#3是直接对单片机的。
按下对应的键,键码会发送到SBUF中去。
但这个值是无法观察到的。
只能通过mov a,sbuff的方式读出。
不过,虽然在Serial窗口可以设置Ascii模式或Hex模式,按下的键统一还是用Ascii的形式传到SBUF中去了。
具体见::/forum/read/1627783. 最完美的解决办法是将keil的串口绑定到PC的串口上去。
(先用Mode命令,再用Assign命令)1 ASSIGN命令将单片机的串口绑定到计算机的串口。
基本使用方式为:ASSIGN COMx < inreg > outreg其中: COMx代表计算机的串口,可以是COM1、COM2、COM3或COM4;而inreg和outreg代表单片机的串口。
对于只有一个串口的普通单片机,即SIN和SOUT;对于有两个或者多个串口的单片机,即SnIN和SnOUT(n=0,1,…即单片机的串口号)。
图1 串口连线示意图例如:ASSIGN COM1 < SIN > SOUT将计算机的串口1绑定到单片机的串口(针对只有一个串口的单片机)。
ASSIGN COM2 < SIN > SOUT将计算机的串口2绑定到单片机的串口0(针对有多个串口的单片机,注意串口号的位置)。
需要注意的是,参数的括号是不能省略的,而outreg则是没有括号的。
2 MODE命令设置被绑定计算机串口的参数。
基本使用方式为:MODE COMx baudrate, parity, databits, stopbits其中: COMx(x = 1,2,…)代表计算机的串口号;baudrate代表串口的波特率;parity代表校验方式;databits代表数据位长度;stopbits代表停止位长度。
Keil软件串口调试实用技巧

Keil软件的串口调试技巧[ 来源:| 更新日期:2007-6-4 22:47:08 | 评论0 条| 我要投稿]引言在单片机系统中,串口(UART,通用异步收发接口)是一个非常重要的组成部分。
通常使用单片机串口通过RS232/RS485电平转换芯片与上位机连接,以进行上位机与下位机的数据交换、参数设置、组成网络以及各种外部设备的连接等。
RS232/RS485串行接口总线具有成本低、简单可靠、容易使用等特点,加上其历史悠久,所以目前应用仍然非常广泛;特别对于数据量不是很大的场合,串口通信仍然是很好的选择,有着广阔的使用前景。
在单片机编程中,串口占了很重要的地位。
传统方式串口程序的调试,往往是利用专用的单片机硬件仿真器。
在编写好程序后,利用仿真器来设置断点,观察变量和程序的流程,逐步对程序进行调试,修正错误。
使用硬件仿真器的确是很有效的方法,但是也有一些缺点:◆很多仿真器不能做到完全硬件仿真,因而会造成仿真时正常,而实际运行时出现错误的情况;也有仿真不能通过,但是实际运行正常的情况。
◆对于一些较新的芯片或者是表面贴装的芯片,要么没有合适的仿真器或仿真头;要么就是硬件仿真器非常昂贵,且不容易买到。
◆有时由于设备内部结构空间的限制,仿真头不方便接入。
◆有的仿真器属于简单的在线仿真型,仿真时有很多限制。
例如速度不高,实时性或稳定性不好,对断点有限制等,造成仿真起来不太方便。
1 调试前的准备工作下面介绍一种利用Keil的软件仿真功能来实现51单片机串口调试用户程序的方法。
使用这种方法,无需任何硬件仿真器,甚至都不需要用户电路板。
所需的只是:①硬件。
1台普通计算机(需要带有2个标准串口)和1根串口线(两头都是母头,连线关系如图1所示)。
②串口软件可以是自己编写的专用调试或上下位机通信软件,也可以是通用的串口软件(如串口助手、串口调试等),主要用来收发数据。
如果没有合适的串口调试软件,则可使用笔者编写的一个免费的串口小工具TurboCom。
KeilC简明教程2_debug的使用

KeilC简明教程2_debug的使用KeilC的debug使用这部分将使用KeilC自带的debug调试串口,显示串口发送的数据。
首先,建立一个KEILC工程(上一节已经说明),输入如下代码#include#includeunsigned char key_s, key_v, tmp;char code str[] = "this is a test of serial \n\r";void send_int(void);void send_str();void delayms(unsigned char ms);void send_char(unsigned char txd);main(){send_int();TR1 = 1; // 启动定时器1while(1){send_str(); // 传送字串}}void send_int(void){ TMOD = 0x20; // 定时器1工作于8位自动重载模式, 用于产生波特率TH1 = 0xF3; // 波特率2400TL1 = 0xF3;SCON = 0x50; // 设定串行口工作方式PCON&= 0xef; // 波特率不倍增IE = 0x0; // 禁止任何中断}void send_str()// 传送字串{unsigned char i = 0;while(str[i] != '\0'){SBUF = str[i];while(!TI); // 等特数据传送TI = 0; // 清除数据传送标志i++; // 下一个字符}}点击debug按钮,进入调试界面,如下图所示调试界面选择点击串口选择下拉菜单,选择第一个调试界面操作如下图所示。
可以看到串口显示界面出现了你发送的数据“this is a test of serial”至此,KEILC的串口调试方法已经结束。
读者可以根据自己的需要,在程序中使用串口来查看程序运行情况。
keil ARM与虚拟串口联调设置及解决办法

Keil ARM 与虚拟串口联调设置第一步:创建虚拟串口使用工具:Configure Virtual Serial Port Driver记住自己创建的两个虚拟串口第二步:创建debug.ini 命令执行文件Mode COM2 9600,0,8,1assign com2 <S2IN> S2OUT注意:1:串口选择与虚拟串口相同2:串口工作波特率,校验方式,数据长度,停止位assign com2 <输入寄存器> 输出寄存器串口工作方式对应9600,0,8,19600,1,8,19600,2,8,1第三步:环境设置第四步:全部编译进入调试:开启仿真,打开串口调试助手。
虚拟串口驱动显示工作方式其他:命令行也可以直接写命令在命令栏中,操作如下:点击进入仿真模式,在命令行将debug.ini命令输入错误解决办法:*** error 30, line 2: undefined name of virtual register问题描述:虚拟寄存器没有定义问题原因:命令assign com2 <S2IN> S2OUT中<S2IN> S2OUT是没有定义的。
可以通过dir vtreg命令查看可以寄存器对将对应串口寄存器写入对应命令中*** error 65: access violation at 0x40021000 : no 'read' permission驱动没有调用正确*** error 127, line 2: Com channel not opened, use MODE command first 命令:Mode COM4 9600,0,8,1assign com4 <S2IN> S2OUT中的串口选择错误,要确保与虚拟串口一致。
keilc51串口仿真

Keil 的串口仿真————怎么用?Keil 的串口仿真————怎么用?C51软件仿真有个串口仿真,试了一下不太成功。
在调试窗口中的SBUF处输入值0x68,但仿真时就是进不了'*'号那行.观察rec_buf的变化,发现其值没有改变.不知为何?void com_rcv(void) interrupt 4 using 2{if ( RI != 1 ){return;}RI = 0;rec_buf = SBUF;if ( flag == 0 ) //flag初始化为0,仿真时本句可以进入{if ( rec_buf == 0x68 ){check_sum = rec_buf;//****************}else{return;}}}2楼:>>参与讨论作者:computer00于2006-8-2 9:37:00 发布:keil有直接输入串口数据的地方就是工具栏那本字典样的东东.你直接在里面用键盘敲 h 键就可以了(它的ASCII码就是0x68).你也可以把数据发到串口,然后它就会在这显示了。
3楼:>>参与讨论作者:ye83241905于2006-8-2 9:54:00 发布:楼上说的也是调试工具?麻烦说得详细些.具体是那个工具,这个也可以调试串口?4楼:>>参与讨论作者:computer00于2006-8-2 10:19:00 发布:我说的是keil自带的.参考: /more.asp?NAME=computer00&id=95015楼:>>参与讨论作者:ye83241905于2006-8-2 11:30:00 发布:serial windows是串口调试工具吧?谢谢,serial windows这个可以输入串口数据.只是还想问问Peripherals--serial这个窗口如何用呢,通过它可以进入中断,就是数据不能输入,不知什么地方有问题?6楼:>>参与讨论作者:开发过程于2006-8-2 14:58:00 发布:呵那本字典?7楼:>>参与讨论作者:computer00于2006-8-2 15:35:00 发布:Peripherals--serial那个只能看到你程序写到SBUF的东东而你往里面写个值,并不会导致串口接收到数据.serial windows,你可以按住alt键,然后再用小键盘直接输入十进制数.例如你上面的0x68,你只要按住alt键,再用小键盘输入104,放开alt,就OK了~~~~~~~~~~8楼:>>参与讨论作者:ye83241905于2006-8-2 16:22:00 发布:原来只是一个观察窗口?谢谢,楼上.原来它只用作观察SBUF寄存器的状态.不过若在窗口中改变SBUF的值,在MEMORY Windows中观察发现相应地址的状态也改变,就是不作为串口收到的数据用,有些容易迷惑人.9楼:>>参与讨论作者:rlstudio于2006-8-4 22:38:00 发布:能不能仿真与PC的通信啊?好像有个仿真器的吧?不知怎样用,或者与一些串口调试助手之类的结合使用。
KEIL开发环境与虚拟串口屏绑定调试V1.0

Keil开发环境与虚拟串口屏绑定调试版本:V1.0Keil开发环境与虚拟串口屏绑定调试1.1 概述在实际调试过程中,若我们手头上没有硬件实物或每次修改工程图片又得重新下载而浪费时间,此时我们就可以直接将Keil开发环境与虚拟串口屏连接起来。
用户使用Keil程序Debug仿真时,虚拟串口屏显示也会跟着一起变化。
由于虚拟串口屏跟真实的串口屏功能一模一样,这样的调试模式无异给开发者带了莫大的方便,如图0.1所示。
图0.1 Keil开发环境与虚拟串口屏绑定调试1.2 操作流程任何初学者,只要按照以下流程操作,即可快速完成Keil与虚拟串口屏的绑定。
1.2.1 软件工具准备1.虚拟串口VSPXD软件,在我司官网进行下载。
2.VisualTFT软件。
3.Keil开发软件。
1.2.2 安装虚拟串口VSPXD软件首先,我们必须现在电脑上安装1对虚拟串口,通过这对虚拟串口连接Keil和虚拟串口屏。
若您电脑上已经安装了虚拟串口VSPXD,此章节可以跳过。
安装步骤如下:1.解压“虚拟串口VSPXD软件”,运行可执行文件“VSPDXP.exe”,如图0.2所示。
图0.2 VSPXD安装程序2.选择默认安装路径,点击下一步,直至安装完成,如图0.3所示。
打开桌面虚拟串口软件“VSPD XP 5”,如图0.5所示。
图0.5 打开VSPD软件physical ports目录下表示当前电脑物理硬件串口,物理硬件串口无法与虚拟串口通道进行匹配。
建立并绑定1对虚拟串口。
如图0.6所示,在First菜单中选择COM3,Second 选择COM4,然后点击Add pair,此时Virtual ports目录下会出现这1对被绑定的串口,如图0.6图0.7所示。
图0.7 虚拟串口对生成如何删除虚拟串口通道。
若需要删除虚拟串口,只需选中对应虚拟串口,然后点击Delete pari,即可删除,如所示。
这一步暂时不需要操作。
图0.8 删除虚拟串口4.查看虚拟串口。
Keil软件仿真的串口调试技巧

Keil软件仿真的串口调试技巧
邵子扬;黄保明;刘海涛
【期刊名称】《单片机与嵌入式系统应用》
【年(卷),期】2006(000)007
【摘要】@@ 引言rn在单片机系统中,串口(UART,通用异步收发接口)是一个非常重要的组成部分.通常使用单片机串口通过RS232/RS485电平转换芯片与上位机连接,以进行上位机与下位机的数据交换、参数设置、组成网络以及各种外部设备的连接等.RS232/RS485串行接口总线具有成本低、简单可靠、容易使用等特点,加上其历史悠久,所以目前应用仍然非常广泛;特别对于数据量不是很大的场合,串口通信仍然是很好的选择,有着广阔的使用前景.
【总页数】3页(P76-78)
【作者】邵子扬;黄保明;刘海涛
【作者单位】武汉邮电科学院虹信公司;武汉邮电科学院虹信公司;武汉邮电科学院虹信公司
【正文语种】中文
【中图分类】TP3
【相关文献】
1.单片机Keil软件仿真与调试技巧 [J], 鲁杰爽
2.Keil与VSPD软件仿真的智能仪表串口通信调试方法 [J], 阳世荣
3.Proteus软件仿真与Keil的单片机系统设计 [J], 张军;吴教育;朱海兵
4.浅谈Keil C的常用技巧 [J], 刘佩;苗文斌;李森
5.基于Keil与VSPD软件仿真的串口通信调试技术 [J], 阳世荣
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
KEIL中如何用虚拟串口调试串口程序
发表于2008/5/7 15:30:22
以前没接触过串口,一直都以为串口很复杂。
最近在做一个新项目,用单片机控制GSM模块。
单片机和GSM模块接口就是串口。
调试完后觉得串口其实很简单。
“不过如此”。
这可能是工程师做完一个项目后的共同心态吧。
下面详细介绍下如何用虚拟串口调试串口发送接收程序。
需要用到三个软件:KEIL,VSPD XP5(virtual serial ports driver xp5.1虚拟串口软件),串口调试助手。
1、首先在KEIL里编译写好的程序。
2、打开VSPD,界面如下图所示:
左边栏最上面的是电脑自带的物理串口。
点右边的add pair,可以添加成对的串口。
一对串口已经虚拟互联了,如果添加的是COM3、COM4,用COM3发送数据,COM4就可以接收数据,反过来也可以。
3、接下来的一步很关键。
把KEIL和虚拟出来的串口绑定。
现在把COM3和KEIL 绑定。
在KEIL中进入DEBUG模式。
在最下面的COMMAND命令行,输入MODE COM3 4800,0,8,1(设置串口3的波特率、奇偶校验位、数据位、停止位,打开COM3串口,注意设置的波特率和程序里设置的波特率应该一样,命令要用英文模式输入,中文不行)
ASSIGN COM3 <SIN> SOUT(把单片机的串口和COM3绑定到一起。
因为我用的单片机是AT892051,只有一个串口,所以用SIN,SOUT,如果单片机有几个串口,可以选择S0IN,S0OUT,S1IN,S1OUT。
)
4、打开串口调试助手
可以看到虚拟出来的串口COM3、COM4,选择COM4,设置为波特率4800,无校验位、8位数据位,1位停止位(和COM3、程序里的设置一样)。
打开COM4。
现在就可以开始调试串口发送接收程序了。
可以通过KEIL发送数据,在串口调试助手中就可以显示出来。
也可以通过串口调试助手发送数据,在KEIL中接收。
这种方法的好处是不用硬件就可以调试。
这是网上一篇文章介绍的方法,联系我实际的使用做了整理。
有用的着的人就不用继续摸索了。