我现在用C8051F020的实验板BTF020和PC机进行232通讯,用串口调试助手看结果。我用的是新华龙提供的例程,运行结果应该能在串口调试助手中看到发送的结果。波特率没有问题,用的是16进制显示。但是得到的结果是乱的,并不是我程序发送的。 现在想不出还可能是什么问题? 我把例程改了,也还是不行。 下面是主程序 void main (void) { static unsigned char data1; WDTCN = 0xde; WDTCN = 0xad; //禁止看门狗定时器
SYSCLK_Init (); // 系统时钟初始化 UART0_Init (); PORT_Init (); // 交叉开关和通用I/O口初始化 while(1) { if(TI0==1) { SBUF0=NCDdata[6]; a=SBUF0; TI0=0; } for(x=0;x<5000;x++); LCD_Init(); //LCD初始化 P2 = 0xA0; //准备送数据 for(x=0;x<5000;x++); lcdpoint=&NCDdata; //取地址 for(lcd_data_count=14;lcd_data_count>0;lcd_data_count--)//显示第一行字符 { data1=*lcdpoint; //读出数据 P3 = data1; //写数据到端口 P2 = 0X20; P2 = 0XA0; //控制LCD lcdpoint++; for(x=0;x<5000;x++); } P2 = 0X80; P3 = 0xc0; P2 = 0x00; P2 = 0x80; for(x=0;x<1000;x++); lcdpoint=&Netdata; for(lcd_data_count=14;lcd_data_count>0;lcd_data_count--)//显示第一行字符 { data1=*lcdpoint; P3 = data1; P2 = 0xA0; //修改后的LCD程序 P2 = 0x20; //------------------------------------------------------/ lcdpoint++; for(x=0;x<5000;x++); for(x=0;x<5000;x++); for(x=0;x<5000;x++); for(x=0;x<5000;x++); for(x=0;x<5000;x++); } } }
|