|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
遇到一个串口通讯很奇怪的问题???? |
作者:xiaoniu666 栏目:通信技术 |
我最近在做一个单片机串口通讯的题目,我写了一个串口测试子程序,两机可以正取接收和显示,但把子程序放在总程序中就不行了;我的总程序应该也没有问题,因为我如果不调用这个串口子程序,主程序也能很好的运行。我想了一天也解决不了,还请各位热心的大虾门帮帮解决一下: ~~~~~发送测试程序 #include<reg51.h> #include<absacc.h> #include<math.h> #define uint unsigned int #define uCHAR unsigned CHAR #define pa8255 XBYTE[0xc7ff] //8255PA口 #define pb8255 XBYTE[0xcfff] //8255PB口 #define pc8255 XBYTE[0xd7ff] //8255PC口 #define com8255 XBYTE[0xdfff] //8255控制口 #define VOLTAGE 5 //采集电压为0~5V void sendkey(uCHAR d) //发送一个字节的内容 { SBUF=d; while(TI==0); TI=0; } void sendvalue(uCHAR d) //发送一个采样值 { if(d%16==8) { SBUF=d; while (TI==0); TI=0; } else { SBUF=d+1; while (TI==0); TI=0; } } void delay(uint t) //延时函数延时t*10ms { uint j; for(j=0;j<t;j++) { TH0=-39; TL0=-16; TR0=1; do {} while(TF0!=1); TF0=0; } } main() { uCHAR trdata[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //uCHAR redata[10]; uCHAR i; TMOD=0x21; TH1=0xE6; TL1=0xE6; TR1=1; SCON=0x50; PCON=0x00; TCON=0xc0; IE=0x00; com8255=0x80; pc8255=0xff; while(1) {for(i=0;i<10;i++) { sendvalue(trdata[i]); // while(TI == 0 ); // TI = 0; // while(RI == 0 ); //RI = 0; pb8255=trdata[i]; delay(30); } } } ~~~~接收子程序~~~~ main() {uCHAR trdata[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uCHAR redata[10]; uCHAR i; TMOD=0x21; TH1=0xE6; TL1=0xE6; TR1=1; SCON=0x50; PCON=0x00; TCON=0xc0; IE=0x00; com8255=0x80; pc8255=0xff; pa8255=0xff; while(1) { while(RI == 0 ); RI = 0; pa8255= SBUF-1; delay(30); } } |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |