在此先感谢大家帮助,感谢大家的积极关注! 现在将原来的程序彻底推翻,重新进行编写,已经在实验板上测试成功。但还有以下几个问题: 1:输出的问题 目前的输出是: TW GX45 MA200000 L000000000 BV40 CIS SK530 FD5000 而我想要的结果是: CIS SK530 FD5000 TW GX45 MA200000 L000000000 BV40。 但在复位后是可以的,即输出“CIS SK530 FD5000 TW GX45 MA200000 L000000000 BV40。”// 2:这个循环如何跳出去?这个问题已经解决了。在后面有注释的。 3:这个程序加了一段发送回车键0x0D的程序, void SendEndChar(void) { SBUF=0x0D; while(TI==0){ } TI=0; } 现在可以发送数据了,但为什么驱动那边还是不识别呢? 请高手指点一下。因为驱动器和上位机通讯用的是ASIC码。
/************************************************************************************/ /* */ /* 晶振:11.0592MHZ CPU型号:AT89S52 */ /* */ /* */ /* 功能描述: 通过串口间隔一定时间输出一系列的指令 */ /* CIS SK530 FD5000 TW GX45 MA200000 L000000000 BV40。 */ /* */ /************************************************************************************/
#include <reg52.h> #define uint unsigned int #define uchar unsigned char
uchar a[3]={'C','I','S'}; uchar b[5]={'S','K','5','3','0'}; uchar c[6]={'F','D','5','0','0','0'}; uchar d[2]={'T','W'}; uchar e[4]={'G','X','4','5'}; uchar f[8]={'M','A','2','0','0','0','0','0'}; uchar g[10]={'L','0','0','0','0','0','0','0','0','0'}; uchar h[4]={'B','V','4','0'}; /************************************************************************************* 延时函数
**************************************************************************************/ void delay(uint i) { uint k; while(i--) for(k=0;k <1200;k++){;} } /************************************************************************************** //串口初始化过程
****************************************************************************************/ void uini() { TMOD=0x20; TH1=0xfd;//波特率为9600 TL1=0xfd; TR1=1; SCON=0x50; } /************************************************************************************** //主程序
**************************************************************************************/ void main() { uini(); while(1) { uint i; for(i=0;i <3;i++) //发送第1个字符串 { SBUF=a; while(!TI); TI=0; } delay(1200); //延迟1200ms for(i=0;i <5;i++) //发送第2个字符串 { SBUF=b; while(!TI); TI=0; } for(i=0;i <6;i++) //发送第3个字符串 { SBUF=c; while(!TI); TI=0; } delay(1200); //延迟1200ms for(i=0;i <2;i++) //发送第4个字符串 { SBUF=d; while(!TI); TI=0; } delay(1200); //延迟1200ms for(i=0;i <4;i++) //发送第5个字符串 { SBUF=e; while(!TI); TI=0; } delay(1200); //延迟1200ms for(i=0;i <8;i++) //发送第6个字符串 { SBUF=f; while(!TI); TI=0; } delay(1200); //延迟1200ms for(i=0;i <10;i++) //发送第7个字符串 { SBUF=g; while(!TI); TI=0; } delay(3600); //延迟1200ms for(i=0;i <4;i++) //发送第8个字符串 { SBUF=h; while(!TI); TI=0; } delay(1200); //延迟1200ms while(1);程序死在这个地方了。 } } |