51單片機(jī)教程第6講_串行口通信
STC51單片機(jī)一般帶有1個(gè)串口,有的帶有2個(gè)串口,串口一般用于下載程序和串口通信。串口通信特別適合控制設(shè)備,所以工控機(jī)的電腦上一般都帶有串口。
本文引用地址:http://www.ex-cimer.com/article/201612/341939.htm51單片機(jī)的串口引腳為P3.0引腳與P3.1引腳,分別是RXD和TXD引腳。串口通信可以用于單片機(jī)和其它芯片通信或者單片機(jī)之間通信或者單片機(jī)與電腦通信。串口通信一般都是交叉連接。標(biāo)準(zhǔn)的串口有9個(gè)引腳,我們一般情況下,只用RXD TXD GND,剩下的引腳都是通信控制引腳,在以前用于控制電話機(jī),現(xiàn)在已經(jīng)基本上不用了。所以我們的51單片機(jī)上只保留了RXD和TXD。
串口通信的協(xié)議非常簡單。如果單片機(jī)上的串口不夠用,還可以用任意兩個(gè)引腳模擬串口通信。
一般情況,我們用帶有起始位的8位串口協(xié)議。波特率常用9600,此外還有12002400 4800 115200等。
打開串口的程序如下:
TMOD=0x20;
TH1=0xFD;
TL1=0xFD;
SCON=0X50;
TR1=1;
程序涉及到5個(gè)寄存器的配置。
TMOD是定時(shí)器控制寄存器
TH1和TL1是定時(shí)器1的初值寄存器
SCON是串行口控制寄存器
TR1是TCON寄存器中的bit4,因?yàn)樵摷拇嫫骺梢晕徊僮?/p>
串口發(fā)送數(shù)據(jù)的程序如下所示:
SBUF=55; // 發(fā)送數(shù)據(jù)55
while(!TI);
TI=0;
程序涉及到2個(gè)寄存器
SBUF是串口數(shù)據(jù)寄存器
TI是SCON寄存器中的bit1,位操作
串口接收數(shù)據(jù)的程序如下所示:
if(RI)
{
recebuf=SBUF;
RI=0;
}
程序涉及到2個(gè)寄存器
SBUF是串口數(shù)據(jù)寄存器
RI是SCON寄存器中的bit0,位操作
SBUF既是發(fā)送數(shù)據(jù)寄存器,又是接收數(shù)據(jù)寄存器。
可以把上面的功能模塊封裝成函數(shù),在使用的時(shí)候,直接調(diào)用。
評論