“常用公式”在线计算,“设计手册”在线查询
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 支持支持 反对反对

共 1 个关于本帖的回复 最后回复于 2013-3-12 17:42

沙发
小强 新来的 发表于 2013-3-12 17:42:28 | 只看该作者
研发埠培训中心
以下是三个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;}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注我们

360网站安全检测平台