研发埠

标题: 如何利用51单片机串口通信发送字符? [打印本页]

作者: 萌萌教主    时间: 2013-3-12 17:41
标题: 如何利用51单片机串口通信发送字符?

作者: 小强    时间: 2013-3-12 17:42
以下是三个51单片机串口通信字符发送程序:/*字符发送方式一*/#include<reg52.h>#define uchar unsigned char#define uint unsigned intuchar flag,a,i;uchar code table[]="I get "; void init(){TMOD=0x20;TH1=0xfd;TL1=0xfd;TR1=1;SM0=0;SM1=1;REN=1;//TI=1;EA=1;ES=1; } void main(){ init();while(1){ if(flag==1) {ES=0;for(i=0;i<6;i++){SBUF=table;    while(TI==0);    TI=0;} SBUF=a;    while(TI==0);    TI=0;ES=1;flag=0;}}} void ser() interrupt 4{a=SBUF;RI=01=~P1;flag=1; } /*字符发送方式二*/#include<reg52.h>#include<stdio.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intuchar flag,a,i=0;uchar code table[]="I get "; void init(){TMOD=0x20;TH1=0xfd;TL1=0xfd;TR1=1;SM0=0;SM1=1;REN=1;//TI=1;EA=1;ES=1; } void main(){ init();while(1){ if(flag==1) {ES=0;while(table!='\0')//注意字符串末尾为'\0'{SBUF=table;    while(TI==0);    TI=0;i++;}i=0;//用完了i记得清零SBUF=a;    while(TI==0);    TI=0;ES=1;flag=0;}}} void ser() interrupt 4{a=SBUF;RI=01=~P1;flag=1; } /*字符发送方式三*/#define uint unsigned intuchar flag,a,i=0;uchar code table[]="I get "; void init(){TMOD=0x20;TH1=0xfd;TL1=0xfd;TR1=1;SM0=0;SM1=1;REN=1;//TI=1;EA=1;ES=1; } void main(){ init();while(1){ if(flag==1) {ES=0;TI=1;//用printf,puchar,_getkey等函数要先进行初始化串行口//该函数在头文件中的定义如下//while(!TI);// TI=0;// return(SBUF=a);//所以用打印函数时如果没有将TI设置为1,执行到该句会进入死循环printf("I get %c\n",a);    while(TI==0);    TI=0;ES=1;flag=0;}}} void ser() interrupt 4{a=SBUF;RI=01=~P1;flag=1;}




欢迎光临 研发埠 (http://bbs.yanfabu.com/) Powered by Discuz! X3.2