久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

51單片機串口通信例子

作者:佚名   來源:不詳   點擊數:  更新時間:2014年08月17日   【字體:

     小記:本例子是在別人的版本修改而來的,因本人沒有11.0592MHz的晶振,進而采用12MHz的,經過波特率的調整發現在波特率為1200時,定時器工作在方式二,穿口工作在模式二,且SMOD=1.此時定時器的TH1=TL1=0xCC,此時調試串口沒有錯誤。

 
發送例子:
 
#include<reg52.h>
#include<stdio.h>
 
void delay(unsigned int i);
 
char code message[]="welcome";
unsigned char a;
void main(void)
{
 SCON=0x50; //REN=1 ,串口工作模式2;
 TMOD=0x20; //定時器工作方式2;
 PCON=0x80;
 TH1=0xCC;
 TL1=0xCC;
 
 TR1=1;//啟動定時器
 ES=1; //串行中斷允許
 EA=1;//開總終端
 while(1)
 {
  a=0;
  while(message[a]!='\0')
  {
   SBUF=message[a];
   while(!TI)  //等待一幀數據(一個字符)發完,TI置1,
    TI=0;    //讓TI為0就繼續接收,直至跳出while。
    a++;    //接收下一字符
   delay(1000);
  }
 }
 
}
void delay(unsigned int i)
{
 unsigned char j;
 for(i;i>0;i--)
  for(j=200;j>200;j--);
 
}
 
接收例子:
 
#include<reg52.h>
#include<stdio.h>
 
sbit BEEP=P1^4;
unsigned char b;
void main(void)
{
 .................
 
 BEEP=1;
 while(1)
 {
  if(RI==1)  //如果一幀數據接收完畢
  {
   RI=0;    //RI清零;繼續接收下一幀數據
   P1=SBUF; //數據送P1口
  }
 }         //如果P1^4為0或1,可驅動蜂鳴器發聲
 
}          //即發送的數據bit4為0或1
 
發送加接收例子:
 
#include<reg52.h>
 
bit flag;
unsigned int redata,sendata;
 
void main(void)
{
 
..................
 while(1)
 {
  if(flag==1)
  {
   SBUF=sendata; //發送數據
   while(TI==0);//等待發送完畢
   TI=0;        //發送完畢,TI=0
   flag=0;     //flag清零
  }
 }
  
}
void ser_int(void) interrupt 4  using 1
{
 if(RI==1)  //數據接收完畢
 {
  RI=0;     //等待接收下一幀數據
  redata=SBUF;
  sendata=redata; //將接收的數據發回
  flag=1;  //flag置1,發回接收數據
 
 }
}
關閉窗口
主站蜘蛛池模板: 亚洲国产精品久久久 | 黄瓜av| av色站 | 欧美多人在线 | 欧美一级电影免费观看 | 欧美日韩一二三区 | 亚洲看片网站 | 免费激情 | 日本不卡免费新一二三区 | 欧美大片一区二区 | 天天拍天天操 | 日本一区二区不卡 | 日日夜夜精品免费视频 | 免费看a| 亚洲国产成人精品一区二区 | 欧美综合色 | 久久1区 | 天天色av | 久久精品国产久精国产 | 三级黄色大片网站 | 国产福利视频导航 | 国产视频中文字幕在线观看 | 国产精品视频久久久久 | 日韩二区| 日本黄色免费视频 | 日韩在线看片 | 久久毛片| 一区二区三区精品视频 | 欧美在线看片 | aaa一区| 日韩在线免费 | 久久久一区二区三区四区 | 久久久久久看片 | 精品欧美一区二区精品久久久 | 日韩精品一区二区三区视频播放 | 欧洲av在线 | 影音先锋成人资源 | 国产午夜精品久久久久免费视高清 | 九九久久久 | 一区二区国产精品 | 日韩精品三区 |