- 博客(0)
- 资源 (4)
空空如也
serial.dsn
#include <reg51.h>
#include "LM016L.H"
unsigned char RData[17],j;
unsigned char TData[] = "INT0 Interrupt .";
unsigned char *str;
////////////////// LCD ////////////////////////
//初始化LCD
void LCD_Initial()
{
LCDE = 0;
LCD_Write(LCDCOMMAND,0x38);
LCD_Write(LCDCOMMAND,0x38);
LCD_SetDisplay(LCDSHOW | LCDNOCURSOR);
LCD_Write(LCDCOMMAND,LCDCLEARSCREEN);
LCD_SetInput(LCDACUP | LCDNOMOVE);
}
//内部等待函数
unsigned char LCD_Wait(void)
{
LCDRS = 0;
LCDRW = 1;
_nop_();
LCDE = 1;
_nop_();
//while(LCDDB & 0x80);
LCDE = 0;
return LCDDB;
}
//向LCD写入命令或数据
void LCD_Write(bit style, unsigned char input)
{
LCDE = 0;
LCDRS = style;
LCDRW = 0;
_nop_();
LCDDB = input;
_nop_();
LCDE = 1;
_nop_();
LCDE = 0;
_nop_();
LCD_Wait();
}
//设置显示模式
void LCD_SetDisplay(unsigned char DisplayMode)
{
LCD_Write(LCDCOMMAND,0x08 | DisplayMode);
}
//设置输入模式
void LCD_SetInput(unsigned char InputMode)
{
LCD_Write(LCDCOMMAND,0x04 | InputMode);
}
void GotoXY(unsigned char x, unsigned char y)
{
if(y == 0)
{
LCD_Write(LCDCOMMAND,0x80 | x);
}
if(y == 1)
{
LCD_Write(LCDCOMMAND,0x80 | (x - 0x40));
}
}
void Print(unsigned char *str)
{
while(*str != '\0')
{
LCD_Write(LCDDB,*str);
str++;
}
}
////////////////// 80C51 ////////////////////////
void Serial_Initial()
{
TMOD = 0x20; // 定时器1工作于8位自动重载模式, 用于产生波特率
TH1 = 0xFD; // 波特率9600
TL1 = 0xFD;
SCON = 0x50; // 设定串行口工作方式
PCON &= 0xef; // 波特率不倍增
TR1 = 1; // 启动定时器1
ES = 1; // 允许串口中断中断
EA = 1;
}
void INT0_Initial()
{
EX0 = 1; // INT0中断开
IT0 = 1; // INT0低电平触发(为1则为下降沿触发)
EA = 1;
}
void Serial_interrupt() interrupt 4
{
EA = 0;
RI = 0;
RData[j] = SBUF;
j++;
EA = 1;
}
void INT0_interrupt() interrupt 0
{
EA = 0;
str = TData;
while(*str != '\0')
{
TI = 0;
SBUF = *str;
while(!TI);
TI = 0;
str++;
}
EA = 1;
}
////////////////// main ////////////////////////
void main()
{
LCD_Initial();
Serial_Initial();
INT0_Initial();
while(1)
{
if(j > 15)
{
GotoXY(0,0);
RData[16] = '\0';
Print(RData);
j = 0;
}
}
}
2008-11-23
proteus 串口调试
A51 MACRO ASSEMBLER STARTUP 08/06/2007 09:22:43 PAGE 1
MACRO ASSEMBLER A51 V7.08a
OBJECT MODULE PLACED IN STARTUP.OBJ
ASSEMBLER INVOKED BY: C:\Program Files\Keil2\C51\BIN\A51.EXE STARTUP.A51 SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 $nomod51
2 ;------------------------------------------------------------------------------
3 ; This file is part of the C51 Compiler package
4 ; Copyright (c) 1988-2005 Keil Elektronik GmbH and Keil Software, Inc.
5 ; Version 8.01
6 ;
7 ; *** <<>> ***
8 ;------------------------------------------------------------------------------
9 ; STARTUP.A51: This code is executed after processor reset.
10 ;
11 ; To translate this file use A51 with the following invocation:
12 ;
13 ; A51 STARTUP.A51
14 ;
15 ; To link the modified STARTUP.OBJ file to your application use the following
16 ; Lx51 invocation:
17 ;
18 ; Lx51 your object file list, STARTUP.OBJ controls
19 ;
20 ;------------------------------------------------------------------------------
21 ;
22 ; User-defined Power-On Initialization of Memory
23 ;
24 ; With the following EQU statements the initialization of memory
25 ; at processor reset can be defined:
26 ;
2008-11-23
虚拟串口心得 如何用虚拟串口来实现仿真
虚拟串行驱动程序(VSPD)2008-07-02 18:10虚拟串行驱动程序(VSPD)是一个可在计算机(Windows)下操作的程序,此驱动程序会创造数个“虚拟”的串行埠。 由一般程序看来,这些虚拟的串行端口跟实体的串行端口相同,唯一不同于传统传输的地方是在于程序所送出的信息是透过TCP/IP局域网络送至虚拟串行端口,之后由EM100再将所收到的信息传达至串行设备。 当串行设备要回传信息时,要先将信息传至EM100,而后再藉由局域网络将信息传回至位于计算机端的虚拟串行驱动程序,当虚拟串行驱动程序收到信息后,又会将其传回给程序,就如同传统串行线的传输一般。 所以不论串行设备或计算机程序都无法辨别真实串行与虚拟串行传输的不同
发信人: autoca (=2008,不开心), 信区: Embedded
标 题: 推荐一款虚拟串口创建工具 - VSPD
发信站: 郁金香BBS站 (2008年01月24日23:26:34 星期四), 站内信件
一般嵌入式设备都会用到串口。相信很多人在开发调试的时候都会
用到“串口调试助手”,它能完成数据收发和串口通信参数的设置,
并直观的把监视的数据信息显示出来。
下面推荐的软件工具叫做Virtual Serial Ports Driver XP(VSPD)。
它是做串口应用程序调试的辅助工具。
有时候我们需要把PC机的串口1和串口2(COM1和COM2)用一条
Null Modem连接线连接起来,进行串口应用程序的调试。
如果没有连接线或懒得去接它,
或者如果我们遇到PC串口坏掉或只有一个串口的情况,
那么一个代替的方法就是用
VSPD这个工具创建一对虚拟的、已连接的串口。
要注意的是,通信只能在两个虚拟串口之间进行。
VSPD的最新版本好像是V6.0,
详情可到官方网站www.eltima.com查看。
下载:
Virtual Serial Ports Driver XP V6.0 版
http://www.3ddown.com/soft/31888.htm
V4.0版
http://www.gjwtech.com/curricula/vspd40.rar
KEIL中如何用虚拟串口调试串口程序(转载EDN博客精华文章)2008年06月17日 星期二 09:07
| 2008-05-07
作者:YW912
EDN博客精华文章 作者:YW912
以前没接触过串口,一直都以为串口很复杂。最近在做一个新项目,用单片机控制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中接收。
这种方法的好处是不用硬件就可以调试。这是网上一篇文章介绍的方法,联系我实际的使用做了整理。有用的着的人就不用继续摸索了
2008-11-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人