51單片機(jī)管腳說明(二)
2.串行端口的工作方式
①方式0
8位移位寄存器輸入/輸出方式。多用于外接移位寄存器以擴(kuò)展I/O端口。波特率固定為fosc/12。其中,fosc為時(shí)鐘頻率。
在方式0中,串行端口作為輸出時(shí),只要向串行緩沖器SBUF寫入一字節(jié)數(shù)據(jù)后,串行端口就把此8位數(shù)據(jù)以等的波特率,從RXD引腳逐位輸出(從低位到高位);此時(shí),TXD輸出頻率為fosc/12的同步移位脈沖。數(shù)據(jù)發(fā)送前,僅管不使用中斷,中斷標(biāo)志TI還必須清零,8位數(shù)據(jù)發(fā)送完后,TI自動(dòng)置1。如要再發(fā)送,必須用軟件將TI清零。
串行端口作為輸入時(shí),RXD為數(shù)據(jù)輸入端,TXD仍為同步信號(hào)輸出端,輸出頻率為fosc/12的同步移位脈沖,使外部數(shù)據(jù)逐位移入RxD。當(dāng)接收到8位數(shù)據(jù)(一幀)后,中斷標(biāo)志RI自動(dòng)置。如果再接收,必須用軟件先將RI清零。
串行方式0發(fā)送和接收的時(shí)序過程見下圖。
②方式1
10位異步通信方式。其中,1個(gè)起始位(0),8個(gè)數(shù)據(jù)位(由低位到高位)和1個(gè)停止位(1)。波特率由定時(shí)器T1的溢出率和SMOD位的狀態(tài)確定。
一條寫SBUF指令就可啟動(dòng)數(shù)據(jù)發(fā)送過程。在發(fā)送移位時(shí)鐘(由波特率確定)的同步下,從TxD先送出起始位,然后是8位數(shù)據(jù)位,最后是停止位。這樣的一幀10位數(shù)據(jù)發(fā)送完后,中斷標(biāo)志TI置位。
在允許接收的條件下(REN=1),當(dāng)RXD出現(xiàn)由1到O的負(fù)跳變時(shí),即被當(dāng)成是串行發(fā)送來的一幀數(shù)據(jù)的起始位,從而啟動(dòng)一次接收過程。當(dāng)8位數(shù)據(jù)接收完,并檢測到高電乎停止位后,即把接收到的8位數(shù)據(jù)裝入SBUF,置位RI,一幀數(shù)據(jù)的接收過程就完成了。
方式1的數(shù)據(jù)傳送波特率可以編程設(shè)置,使用范圍寬,其計(jì)算式為:
波特率=2SMOD/32×(定時(shí)器T1的溢出率)
其中,SMOD是控制寄存器PCON中的一位程控位,其取值有0和l兩種狀態(tài)。顯然,當(dāng)SMOD=0時(shí),波特率=1/32(定時(shí)器Tl溢出率),而當(dāng)SMOD=1時(shí),波特率=1/16(定時(shí)器T1溢出率)。所謂定時(shí)器的溢出率,就是指定時(shí)器一秒鐘內(nèi)的溢出次數(shù)。波特率的算法,以及要求一定波特率時(shí)定時(shí)器定時(shí)初值的求法,后面將詳細(xì)討論。 ·
串行方式1的發(fā)送和接收過程的時(shí)序見下圖。
③方式2,3
11位異步通信方式。其中,1個(gè)起始位(0),8個(gè)數(shù)據(jù)位(由低位到高位),1個(gè)附加的第9位和1個(gè)停止住(1)。方式2和方式3除波特率不同外,其它性能完全相同。方式2,3的發(fā)送、接收時(shí)序見下圖。
由圖可見,方式2和方式3與方式l的操作過程基本相同,主要差別在于方式2,3有第9位數(shù)據(jù)。
發(fā)送時(shí),發(fā)送機(jī)的這第9位數(shù)據(jù)來自該機(jī)SCON中的TB8,而接收機(jī)將接收到的這第9位數(shù)據(jù)送入本機(jī)SCON中的RB8。這個(gè)第9位數(shù)據(jù)通常用作數(shù)據(jù)的奇偶檢驗(yàn)位,或在多機(jī)通信中作為地址/數(shù)據(jù)的特征位。
方式2和方式3的波特率計(jì)算式如下:
方式2的波特率=2SMOD/64×fosc
方式3的波特率=2SMOD/32×定時(shí)器T1的溢出率
由此可見,在晶振時(shí)鐘頻率一定的條件下,方式2只有兩種波特率,而方式3可通過編程設(shè)置成多種波特率,這正是這兩種方式的差別所在。
評(píng)論