这是陀螺仪控制单片机模块的串口通讯程序,就是传不到单片机里去,求大神帮忙看看问题在哪 }

51单片机 串口通信 要实现数据双向传输 求大神来帮忙呀_51单片机吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:44,772贴子:
51单片机 串口通信 要实现数据双向传输 求大神来帮忙呀收藏
因为主机从机都有数据发送和接收,所以主机从机用的是同一个程序烧进去以后,数码管亮,但是数据传不了#include &reg52.h&
#define uchar unsigned char#define uint unsigned int sbit dula=P2^6;sbit wela=P2^7;sbit key1=P3^4;sbit key2=P3^5;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void delayms(uint z){uint x,y;for(x=z;x&0;x--)for(y=110;y&0;y--);}void send(uint num){SBUF=while(!TI);RI=0;}void matrixkeyscan(){if(key1==0)delayms(100);{if(key1==0){num=num+1;if(num==1000){num=0;}}}if(key2==0)delayms(100);{if(key2==0){num=num-1;if(num==0){num=1000;}}}send(num); } void display(uint num){uint bai,shi,bai=num/100;shi=num%100/10;ge=num%10;dula=1;P0=table[bai];dula=0;wela=1;P0=0wela=0;delayms(1);dula=1;P0=table[shi];dula=0;P0=0wela=1;P0=0wela=0;delayms(1);dula=1;P0=table[ge];dula=0;P0=0wela=1;P0=0wela=0;delayms(1);}void main(){TMOD=0x20;TH1=0TL1=0TR1=1;SM0=0;SM1=1;REN=1;EA=1;ES=1;while(1){matrixkeyscan();}}void ser() interrupt 4{RI=0;a=SBUF;display(a);}
上海虚谷科技承接各种上海单片机开发和上海单片机开发项目联系电话: 郭先生
我做过这个,加我企鹅
有双向数据传输的饿仿真,要不要?
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或STC12C5A单片机串口1接收数据给数组后,由串2发送,反之也可以,求大神帮忙看看程序为啥不行?-学网-中国IT综合门户网站-提供健康,养生,留学,移民,创业,汽车等信息
> 信息中心 >
STC12C5A单片机串口1接收数据给数组后,由串2发送,反之也可以,求大神帮忙看看程序为啥不行?
来源:互联网 发表时间: 19:11:36 责任编辑:李志喜字体:
为了帮助网友解决“STC12C5A单片机串口1接收数据给数组后,由串2发送,反之也可以,求大神帮忙看看程序为啥不行?”相关的问题,学网通过互联网对“STC12C5A单片机串口1接收数据给数组后,由串2发送,反之也可以,求大神帮忙看看程序为啥不行?”相关的解决方案进行了整理,用户详细问题包括:
#include &STC12C5A.h&
#include &intrins.h&
#include &string.h&
#define uchar unsigned char
#define uint unsigned int
#define S2RI 0x01 //串口2接收中断请求标志位
#define S2TI 0x02 //串口2发送中断请求标志位
uchar xdata Data1_BUF[32],...
Data1_BUF[m]='产生9600bps TL1=0xFD; } void UART1_SendOneByte(uchar c){ SBUF =) { Data1_BUF[m++]=SBUF;
S2CON&=~S2TI,n=0; flag1=flag2=0; Data2_BUF[n]='}void UART_1Interrupt(void) interrupt 4{ if(RI==1) { RI=0; }void UART2_SendOneByte(uchar c){ S2BUF =
TI = 0!(S2CON&S2RI)) { S2CON&=~S2RI,允许接收 BRT=0xFD;
S2CON=0x50; while(;/ m=0;#define uchar unsigned char#define uint unsigned int#define S2RI 0x01 /uchar flag1.h&quot,flag2;
ES=1;\ AUXR=0x10; } } }}void UART_2Interrupt(void) interrupt 8{ if(;工作方式一; if(S2BUF.h&) { Data2_BUF[n++]=S2BUF; for(j=0;/}void UART2_SendString(char *p){ while(* p)
UART2_SendOneByte(*p++);;/ UART1_SendString(Data2_BUF);j++) for(g=0;\串口1工作方式1;0'} else { flag1=1!='0'500;&#92,Data2_BUF[32];500;定时器1为工作方式2 TH1=0xFD;&#47,g;#include &
}void Uart_Init (void){
SCON=0x50;uint m=0;intrins,temp2;STC12C5A;j&lt.h&串口2发送中断请求标志位uchar xdata Data1_BUF[32];/串口2接收中断请求标志位#define S2TI 0x02 /g& while(; / UART2_SendString(Data1_BUF);0' }
} }void main(void){ Uart_Init(); EA=1!(S2CON&S2TI))!TI)!='/g++);
IE2=0x01; /
AUXR1=0x10; &#47,temp1#include &0' if(SBUF;#include & } if(flag2==1) { flag2=0; void delay(void){; /
while(1); }void UART1_SendString(char *p){ while(* p)
UART1_SendOneByte(*p++); n=0; { if(flag1==1) { flag1=0;} else { flag2=1; TR1=1, TMOD=0x20;&#92
,具体解决方案如下:解决方案1:
#include &include.h&
uchar databuff[20];
串口1用于发送系统采集到的数据
串口2用于GPS信号收集,
//串口1用于将系统采集到的信息发送给PC或路由
void uart1_init()
SCON=0X50;//串口方式1,允许接收
TMOD=0X21;//定时器1的方式2,定时器0的方式1
TH1=0X//GPS接受信号波特率4800 //9600
PCON|=0X00;
TR1=1;//启动定时器1
REN=1; // 允许接收
ES=1; //允许串口中断
EA=1; // 开总中断
void uart1_sendbyte(uchar i)
ES=0;//发送数据时关中断
while(TI==0);
void uart1_receive(void) interrupt 4
ES=0;//接收数据时关闭串口中断
uart1_sendbyte(uc);//串口1将数据发给串口2
databuff[pin]=
if(pin&20)
// ES=1; //开串口中断
//串口2用于接收GPS信号
void uart2_init()
S2CON=0X50;//方式2 允许接受
BRT=0XFD;// 设置波特率9600
AUXR|=0X10;//允许波特率发生器运行
AUXR1&=0XEF;//S2_P4=0 将uart2切换到p1口
IE2|=0X...
uchar *p){ if(a==1) { while(*p; } if(a==2) { while(*p;/0'20) pin=0;S2_P4=0 将uart2切换到p1口 IE2|=0X01;/ uint k=0;/&#47!=0X02);0' TR1=1; ES=1;// SBUF=i;/// }/ / S2BUF=i;/ / while(TI==0);启动定时器1 REN=1;发送数据时关中断 TI=0;/}void uart1_receive(void) interrupt 4{/&#47,你看一下这一个; 清0 S2RI}void uart_printf(char a,/ else//串口1用于将系统采集到的信息发送给PC或路由void uart1_init(){ SCON=0X50; if(a==1) { k=S2BUF;/串口2用于接收GPS信号void uart2_init(){ S2CON=0X50; }void uart2_receive(void) interrupt 8{//&#47!='//方式2 允许接受 BRT=0XFD;/ RI=1; pin++;// }//串口方式1;&#47.h&GPS接受信号波特率4800 /开串口中断}/ uart2发送数据 while((S2CON&0X02); ES=1; GPS(k);//*串口1用于发送系统采集到的数据串口2用于GPS信号收集; // uart1_sendbyte(uc);&#47!=' if(RI) { RI=0。; 允许接收 ES=1;//) uart1_sendbyte(*p++); a=S2CON&0X01; 允许串口2中断}void uart2_sendbyte(uchar i){ ES=0; uart1_sendbyte(k);/ S2CON&=0xfe,定时器0的方式1 TH1=0X/ ES=0,允许接收 TMOD=0X21;&#47,*/ ///9600 TL1=0X //定时器1的方式2;// //接收数据时关闭串口中断 uc=SBUF,正在用; S2CON&=~0X02;) uart2_sendbyte(*p++);/ 设置波特率9600 AUXR|=0X10;/将串口接收到的信息交给GPS处理程序 S2CON&=0 开总中断}void uart1_sendbyte(uchar i){ ES=0;允许串口中断 EA=1; / if(pin&//&#47#include & ES=1; S2CON&=0/ }}你好; /串口1将数据发给串口2 databuff[pin]=允许波特率发生器运行 AUXR1&=0XEF;\uchar databuff[20]; TI=0; PCON|=0X00。;&#92,我改的;&#47
解决方案2:
你串口2没设波特率 啊,这怎么接
1个回答1个回答1个回答1个回答1个回答1个回答1个回答1个回答1个回答
相关文章:
最新添加资讯
24小时热门资讯
Copyright © 2004- All Rights Reserved. 学网 版权所有
京ICP备号-1 京公网安备02号

我要回帖

更多关于 单片机串口通信程序 的文章

 

随机推荐