串行通信的帮助!

P

piscaroy

Guest
嗨,
我遇到了和我的串行通信的问题时做了一些景致发送和接收...当我使用串行COM工具(高级串行端口监视器- ASPM)将数据发送到我的PIC18f452,它工作正常(这意味着它可以接收并显示在液晶显示器),但是当我换了另一个我的项目,该项目是使用Visual Basic(mscom编码部分)计划将数据发送到我的知情同意,知情同意这一次只能识别com端口的串行数据,但无法在LCD上显示的数据...我已经测试了VB的代码..我用VB的发送发送通过COM端口1和使用数据的ASPM监视港口..,并能捕获数据显示在窗口...我奥索试图改变波特率
, 但仍然doesn't工作..怎么会喜欢逸??暂帮助...非常感谢

我的代码...

代码:

#包括<p18f452.h>

#包括<usart.h>

#包括<stdlib.h>

#包括<delays.h>

#包括<xlcd.h>

#包括<string.h>#定义BUFF_SIZE 20

15#定义Return回页首

#定义MAX_CHAR 15/ /辅助函数

无效readFrmEEPROM(廉政报告,廉政字节字符* tempStr);

无效writeStr2EEPROM(廉政报告,烧焦*海峡);/************************************************* ***********************/

/*******************子程序***********************/

/************************************************* ***********************//********************************************/

/**********液晶显示子程序***************/

/********************************************// / I / O配置

(无效无效InitializePORTS)



TRISC = 0xE0;

)/ /液晶初始化

无效DelayPORXLCD()



Delay1KTCYx(15)/ /在15毫秒延迟)

无效DelayXLCD(无效)



Delay1KTCYx(5);



无效DelayFor18TCY(无效)



NOP产品向导();

NOP产品向导();

NOP产品向导();

NOP产品向导();

NOP产品向导();

NOP产品向导();

NOP产品向导();

NOP产品向导();

NOP产品向导();

NOP产品向导();

NOP产品向导();

NOP产品向导();

NOP产品向导();

NOP产品向导();

NOP产品向导();

NOP产品向导();

返回;)

无效LCDinit(无效)(门= 0x00;ADCON1 = 0x0E;OpenXLCD(0x28); / /初始化液晶显示器4位接口下半字节,

/ /多行DelayXLCD();


无效LCDclr(无效)(

WriteCmdXLCD状态(0x01);

DelayXLCD();



/********************液晶年底rountine ************************* ** /(无效)无效Delay5s(

Delay10KTCYx(250);

Delay10KTCYx(250);

)/************************************************* *** /

/********** EEPROM的子程序***************/

/************************************************* *** /

/ / EEPROM的初始化

无效EEpromInit(无效)(

EECON1 = 0x00;EECON1bits.WREN = 1; / / EECON章允许写周期设置)无符号字符ReadEEPROM(无符号字符地址)

(EEADR =地址;EECON1bits.EEPGD = 0; / /获取数据EEPROM

EECON1bits.CFGS = 0; / /访问闪存程序/数据EEPROM存储器EECON1bits.RD = 1; / /使读取

返回EEDATA; / /数据存储在这里


无效WriteEEPROM(无符号字符地址,字符数据)

(EEADR =地址; / /

EEDATA =数据; / /

EECON1bits.EEPGD = 0;

EECON1bits.CFGS = 0;

EECON1bits.WREN = 1;INTCONbits.GIEH = 0; / /禁用中断

INTCONbits.GIEL = 0;EECON2 = 0x55;

EECON2 =包含0xAA;EECON1bits.WR = 1;

而(EECON1bits.WR); / /等待铁必须清楚

EECON1bits.WREN = 0; / /禁用写就写完整)

/************************************************* ******/

/ *函数写字符串的EEPROM提供的地址* /

/************************************************* ******/无效writeStr2EEPROM(廉政报告,烧焦*海峡)(

廉政len;

= 0整合酶;长度= strlen(海峡);/ /循环写入EEPROM的每个字符

为(1 = 0;“MAX_CHAR,我 )(

WriteEEPROM(地址 我,海峡[一]);

/ /测试= readEERPOM(EEADR 1);



)/************************************************* ******/

/ *函数来读取EEPROM的X字节给予地址* /

/ * X字节必须最多15个字符* /

/************************************************* ******/

无效readFrmEEPROM(廉政报告,廉政字节字符* tempStr)(

= 0整合酶;如果(字节“= MAX_CHAR)(

为(1 = 0;“字节,我 )(

tempStr [我] = ReadEEPROM(地址 1);





tempStr [字节] ='\ 0';



/***********************完例行******************/的EEPROM
/************************************************* *************/

/ *主程序* /

/************************************************* *************// /主programm

无效的main()(

廉政writeAdd,readAdd;

字符recData [15];

字符tempRead [15];

字符计数器;

字符counter1;InitializePORTS();

EEpromInit();

LCDinit();
/ /配置的USART

OpenUSART(USART_TX_INT_OFF&

USART_RX_INT_OFF&

USART_ASYNCH_MODE&

USART_EIGHT_BIT&

USART_CONT_RX&

USART_BRGH_HIGH,

25);Delay10KTCYx(50); / /延迟0.5秒而(1)(而(!DataRdyUSART()); / /检查数据是否接收和使用getsUSART(recData,17); / /从串行COM端口17个字符

计数器= 0;做(

WriteEEPROM(柜台,recData [计数器]);

反 ;)在(反“16);putrsXLCD(“等待...");Delay10KTCYx(100); / /延迟1秒WriteCmdXLCD状态(0x01); / / CLR的液晶显示器计数器= 0;做(

tempRead [计数器] = ReadEEPROM(柜台);

反 ;

)在(反“16);putsXLCD(tempRead);Delay10KTCYx(200); / /延迟2秒WriteCmdXLCD状态(0x01); / / CLR的显示器))
 

Welcome to EDABoard.com

Sponsor

Back
Top