專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

89s51和89s52不同晶振之間通信實(shí)驗(yàn)

作者:佚名   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2013年11月02日   【字體:


本程序必須由串口到數(shù)據(jù),也就是SBUF得到數(shù)據(jù)才能啟動(dòng)發(fā)送和接收。

本人查表發(fā)現(xiàn)11.0592和12 MHZ通信時(shí),只有2400波特率,T1的時(shí)間設(shè)置才沒(méi)誤差。



89s51接晶振 12 mhz

89s52 接晶振 11.0592 mhz

89s51作為接收端代碼:

#include <reg51.h>
#define LED P1  //LED顯示
void main()
{
  TMOD=0x20;
  TH1=0xf3;
  TL0=0xf3;
  TR1=1;
  SCON=0x50;
 while(1)
 {
 while(RI==0); //確定收到成功判斷
 LED=SBUF;
 RI=0;
 SBUF=LED;
 while(TI==0); //確定發(fā)送成功判斷
 TI=0;

 }
}

89s52作為發(fā)送端代碼:

#include <reg52.h>
#define LED P1   //LED顯示
void main()
{
  TMOD=0x20;
  TH1=0xf4;
  TL0=0xf4;
  TR1=1;
  SCON=0x50;
 while(1)
 {
 while(RI==0);  //接收成功判斷
 LED=SBUF;
 RI=0;
 SBUF=LED;
 while(TI==0); //發(fā)送成功判斷
 TI=0;
 
 }
}

關(guān)閉窗口

相關(guān)文章