研发埠
标题:
如何利用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[]=&quot;I get &quot;; 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=0
1=~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[]=&quot;I get &quot;; 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
!=&#39;\0&#39;)//注意字符串末尾为&#39;\0&#39;{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=0
1=~P1;flag=1; } /*字符发送方式三*/#define uint unsigned intuchar flag,a,i=0;uchar code table[]=&quot;I get &quot;; 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(&quot;I get %c\n&quot;,a); while(TI==0); TI=0;ES=1;flag=0;}}} void ser() interrupt 4{a=SBUF;RI=0
1=~P1;flag=1;}
欢迎光临 研发埠 (http://bbs.yanfabu.com/)
Powered by Discuz! X3.2