基于proteus软件仿真AT89C52的双机串口通信 附工程包
計(jì)算機(jī)與外界的信息交換稱為通信,常用的通信方式有兩種:并行通信和串行通信。 51 單片機(jī)用 4 個接口與外界進(jìn)行數(shù)據(jù)輸入與數(shù)據(jù)輸出就是并行通信,并行通信的特點(diǎn)是傳輸信號的速度快,但所用的信號線較多,成本高,傳輸?shù)木嚯x較近。串行通信的特點(diǎn)是只用兩條信號線(一條信號線,再加一條地線作為信號回路)即可完成通信,成本低,傳輸?shù)木嚯x較遠(yuǎn)。
51 單片機(jī)的串行接口是一個全雙工的接口,它可以作為 UART (通用異步接受和發(fā)送器)用,也可以作為同步移位寄存器用。 51 單片機(jī)串行接口的結(jié)構(gòu)如下:
( 1 )數(shù)據(jù)緩沖器( SBUF )
接受或發(fā)送的數(shù)據(jù)都要先送到 SBUF 緩存。有兩個,一個緩存,另一個接受,用同一直接地址 99H, 發(fā)送時用指令將數(shù)據(jù)送到 SBUF 即可啟動發(fā)送;接收時用指令將 SBUF 中接收到的數(shù)據(jù)取出。
( 2 )串行控制寄存器( PCON )
SCON 用于串行通信方式的選擇,收發(fā)控制及狀態(tài)指示,各位含義如下:
SM0 SM1 SM2 REN TB8 RB8 TI RI
SM0,SM1: 串行接口工作方式選擇位,這兩位組合成 00 , 01 , 10 , 11 對應(yīng)于工作方式 0 、 1 、 2 、 3 。
串行接口工作方式特點(diǎn)見下表
SM0 SM1 工作方式 功能 波特率
0 0 0 8 位同步移位寄存器(用于 I/O 擴(kuò)展)f ORC /12
0 1 1 10 位異步串行通信( UART ) 可變( T1 溢出率 *2 SMOD /32 )
1 0 2 11 位異步串行通信( UART ) f ORC /64 或 f ORC /32
1 1 3 11 位異步串行通信( UART ) 可變( T1 溢出率 *2 SMOD /32 )
SM2 :多機(jī)通信控制位。
REN :接收允許控制位。軟件置 1 允許接收;軟件置 0 禁止接收。
TB8 :方式 2 或 3 時, TB8 為要發(fā)送的第 9 位數(shù)據(jù),根據(jù)需要由軟件置 1 或清 0 。
RB9 :在方式 2 或 3 時, RB8 位接收到的第 9 位數(shù)據(jù),實(shí)際為主機(jī)發(fā)送的第 9 位數(shù)據(jù) TB8 ,使從機(jī)根據(jù)這一位來判斷主機(jī)發(fā)送的時呼叫地址還是要傳送的數(shù)據(jù)。
TI :發(fā)送中斷標(biāo)志。發(fā)送完一幀數(shù)據(jù)后由硬件自動置位,并申請中斷。必須要軟件清零后才能繼續(xù)發(fā)送。
RI :接收中斷標(biāo)志。接收完一幀數(shù)據(jù)后由硬件自動置位,并申請中斷。必須要軟件清零后才能繼續(xù)接收。
( 3 )輸入移位寄存器
接收的數(shù)據(jù)先串行進(jìn)入輸入移位寄存器, 8 位數(shù)據(jù)全移入后,再并行送入接收 SBUF 中。
( 4 )波特率發(fā)生器
波特率發(fā)生器用來控制串行通信的數(shù)據(jù)傳輸速率的, 51 系列單片機(jī)用定時器 T1 作為波特率發(fā)生器, T1 設(shè)置在定時方式。波特率時用來表示串行通信數(shù)據(jù)傳輸快慢程度的物理量,定義為每秒鐘傳送的數(shù)據(jù)位數(shù)。
( 5 )電源控制寄存器 PCON
其最高位為 SMOD 。
( 6 )波特率計(jì)算
當(dāng)定時器 T1 工作在定時方式的時候,定時器 T1 溢出率 = ( T1 計(jì)數(shù)率) / (產(chǎn)生溢出所需機(jī)器周期)。由于是定時方式, T1 計(jì)數(shù)率 = f ORC /12 。產(chǎn)生溢出所需機(jī)器周期數(shù) = 模 M- 計(jì)數(shù)初值 X 。
proteus建立工程如下:
運(yùn)行時的截圖如下:
左邊為主機(jī),主機(jī)代碼為:
右邊為從機(jī),代碼為:
#include <reg51.h>//初始化串行口 void csh(){SM0=0;SM1=1;REN=1;TI=0;RI=0;PCON=0;TH1=0xF3;TL1=0XF3;TMOD=0X20;EA=1;ET1=0;ES=1;TR1=1;}void main(){csh();while(1){;} }void intrr() interrupt 4{char temp;temp=SBUF;P2=temp;RI=0;temp++;if (temp>9)temp=0;ES=0;TI=0;P0=temp;SBUF=temp;while(!TI);TI=0;ES=1;}下載鏈接:https://download.csdn.net/download/qq_40608730/16434518
總結(jié)
以上是生活随笔為你收集整理的基于proteus软件仿真AT89C52的双机串口通信 附工程包的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GE影像下载
- 下一篇: 单声道3W音频功率放大器:8002B