要設定51系列微控制器串列埠工作於所需工作方式,應是對哪個專用暫存器進行操作

時間 2021-08-31 20:01:19

1樓:匿名使用者

找一個現成的微控制器和pc串列埠通訊程式,對應程式中 tmod scon pcon 及一些控制位tr ea es,對著參考資料看下就會明白的。

void uart_init (void)

2樓:蕭然沁芳

1. 資料緩衝暫存器sbuf

sbuf 是可以直接定址的專用暫存器。物理上,它對應著兩個暫存器,即一個傳送寄存

器一個接收暫存器,cpu 寫sbuf 就是修改傳送暫存器;讀sbuf 就是讀接收暫存器。接

收器是雙緩衝的,以避免在接收下一幀資料之前,cpu 未能及時的響應接收器的中斷,沒

有把上一幀的資料讀走而產生兩幀資料重疊的問題。對於傳送器,為了保持最大的傳輸速率,

一般不需要雙緩衝,因為傳送時cpu 是主動的,不會產生重疊問題。

2. 狀態控制暫存器scon

scon 是一個逐位定義的8 位暫存器,用於控制序列通訊的方式選擇、接收和傳送,指

示串列埠的狀態,scon 即可以位元組定址也可以位定址,位元組地址98h,地址位為98h~9fh。

3. 控制暫存器pcon

控制暫存器pcon 也是一個逐位定義的8 位暫存器,僅最高位smod 與串列埠的控制有關。smod 是序列通訊波特率係數控制位,當串列埠工作在工作方式1、2 時,若使用

t1 作為波特率發生器其smod=1 則波特率加倍 。

初始化示例

void _init(void)

3樓:匿名使用者

控制51微控制器序列口的控制暫存器共有兩個:特殊功能暫存器scon和pcon。下面對這兩個暫存器各個位的功能予以詳細介紹。

1.序列口控制暫存器scon

序列口控制暫存器scon的格式如表4.4:

sm0、sm1:序列口4種工作方式的選擇位。

sm2:允許方式2和3的多機通訊控制位。在方式2或3中,如果sm2置為l,則接收到的第9位資料(rb8)為0時不啟用ri。

在方式1時,如果sm2=1,則只有收到有效的停止位時才會啟用ri。在方式0時,sm2必須清0。

ren:允許序列接收位。由軟體置1或清0。ren=l允許接收,ren=o則禁止接收。

tb8:是工作在方式2和3時,要傳送的第9位資料。需要時由軟體置1或清0。

在許多的通訊協議中該位是奇偶校驗垃。在多機通訊中用來表示是地址幀或是資料幀,tb8=1為地址幀,tb8=0為資料幀。

rb8:當工作在方式2和3時,為接收到的第9位資料。在多機通訊中為地址幀或資料幀的標識位。在方式1,如果sm2=0,rb8是接收到的停止位。在方式0,不使用rb8。

d7 d6 d5 d4 d3 d2 d1 d0

sm0 sm1 sm2 ren tb8 rb8 ti ri

t1:傳送中斷標誌位,在方式o序列傳送第8位資料結束時由硬體置1,或在其它方式序列傳送停止位的開始時置1。ti=1時,申請中斷,cpu響應中斷後,傳送下一幀資料。

ti必須由軟體清0。 表4.4 序列口控制暫存器scon的格式

ri:接收中斷標誌位,在方式o序列接收到第8位資料結束時,由硬體置1。在其它方式中,序列接收到停止位的中間點時置1。

ri=1時申請中斷,要求cpu取走資料。但在方式1中,sm2=1時,若未收到有效的停止位,不會對ri置1。ri必須由軟體清0。

scon的所有位都能由軟體清0。

2.特殊功能暫存器pcon

特殊功能暫存器pcon沒有位定址功能。pcon的格式如表4.5:

表4.5 特殊功能暫存器pcon的格式

d7 d6 d5 d4 d3 d2 d1 d0

smon × × × × × × ×

smod:波特率係數選擇位。

3.序列口工作方式

方式0:8位移位暫存器輸入/輸出方式。在擴充套件i/o埠外接移位暫存器時常用,其波特率固定為fosc/12, fosc為時脈頻率;

方式1:10位非同步通訊方式。其中1個起始位,8個資料位和一個停止位,其波特率計算公式為:波特率=2的smod次方/32*(定時器t1的溢位率);

方式2,3:11位非同步通訊方式,其中一個起始位,8個資料位,1個附加的第9位和1個停止位,方式2和方式3僅只有波特率不同,方式2的波特率=2的smod次方/64*fosc,方式3的波特率=2的smod次方/32*(定時器t1的溢位率)。

此次系統序列口工作方式是:01。

sm0、sm1兩位為01時,序列口以方式1上作,方式1時序列口被控制為波特率可變的8位非同步通訊介面。方式1的波特彩由下式確定:

方式l波特率=2的(smod-5)次方*定時器1的溢位率

式中smod為pcon暫存器的最高位的值(0或1)。

因為序列口用於連線印表機,所以這裡只介紹序列口輸出情況。

序列口以方式1輸出時,資料位由txd端輸出,傳送—幀資訊為10位,1位起始位0,8位資料位(先低位)和1位停止位1,cpu執行一條資料寫傳送緩衝器sbuf的指令,就啟動傳送。當傳送完資料位,置「1」中斷標誌ti。

4樓:

smod

書是要好好看的……

5樓:紫陌陌人

特殊功能暫存器scon,其中高兩位sm0,sm1是工作方式選擇位,共有四種方式可選擇。

控制mcs-51微控制器的序列口工作方式的暫存器是 a、tcon b、pcon c、scon d、tmod

6樓:匿名使用者

ctcon(timer control register)定時器/計數器控制暫存器

pcon電源控制及波特率選擇暫存器

scon-序列口控制暫存器

tmod定時器工作方式暫存器

mcs—51微控制器的序列口有哪幾種工作方式

7樓:東京沒***

1、立即定址:運算元就寫在指令中,和操作碼一起放在程式存貯器中。把「#」號放在立即數前面,以表示該定址方式為立即定址,如mova,#20h。

2、暫存器定址:運算元放在暫存器中,在指令中直接以暫存器的名來表示運算元地址。如mova,r0就屬於暫存器定址,即r0暫存器的內容送到累加器a中。

3、直接定址:運算元放在微控制器的內部ram某單元中,在指令中直接寫出該單元的地址。如前例的adda,70h中的70h。

4、暫存器間接定址:運算元放在ram某個單元中,該單元的地址又放在暫存器r0或r1中。如果ram的地址大於256,則該地址存放在16位暫存器dptr(資料指標)中,此時在暫存器名前加@符號來表示這種間接定址。

如mova,@r0。

5、變址定址:指定的變址暫存器的內容與指令中給出的偏移量相加,所得的結果作為運算元的地址。如movca,@a+dptr。

6、相對定址:由程式計數器中的基地址與指令中提供的偏移量相加,得到的為運算元的地址。如sjmprel。

7、位定址:運算元是二進位制中的某一位,其位地址出現在指令中。如setbbit。

8樓:際風

在通訊中 按傳送方式可分為三種:單工,半雙工,全雙工。

按通訊方式可分為兩種:非同步通訊,同步通訊。

9樓:匿名使用者

四種工作方式啊

1、方式0

序列介面的工作方式0為移位暫存器i/o方式。在序列口外接移位暫存器以擴充套件i/o介面,也可以外接序列同步i/o的裝置。

(1)方式0輸出

序列口以方式0傳送時,資料以rxd端序列輸出,txd端輸出同步訊號。當一個資料寫入序列口傳送緩衝器以後,就啟動序列口傳送器以振盪頻率的十二分之一的波特率,將資料從rxd端序列輸出。

(2)方式0輸入

當序列口定義為方式0並置位ren後,便啟動序列口以方式0接收資料,此時rxd端為資料輸入端,txd端為同步脈衝訊號輸出端。接收器以振盪率的十二分之一的波特率接收rxd端輸入的資料資訊。但接收器接收到8位資料時,置1中斷標誌ri。

2、方式1

序列介面定義為工作方式1時,則被控制為8位的非同步通訊介面,傳送一幀資訊為10位,其中1位為起始位,8位資料位(先低位後高位),1位停止位。

(1)方式1輸出

序列介面以方式1傳送時,資料由txd端輸出。cpu執行一條資料寫入傳送緩衝

器sbuf的指令(例如,mov  sbuf,a),資料位元組寫入sbuf後,便啟動序列口傳送器傳送,傳送完一幀資訊,置1放送中斷標誌ti。

(2)方式1輸入

序列口以方式1接收時,資料從rxd端輸入。在ren置1以後,就允許接收器接收。接收器以所建立的波特率的16倍分頻計數器,以便實現時間同步。

計數器的16個狀態把一位的時間等分成16份,在每位時間的第7、8和9個計數狀態,位檢測器取樣rxd的值,接收的值是3次取樣中取至少二次相同的值,以排除噪聲的干擾。如果在起始接收的值不是0,則起始位無效,復位接收電路。在檢測到另一個1到0的跳變時,再重新啟動接收器。

如果接收到值為0,起始位有效,則開始接收本幀的其餘資訊。當ri=0並且接收到的停止位為1(或sm2=0)時,停止位進入rb8,接收到的8位資料進入接收緩衝器sbuf,置位ri中斷標誌。接著接收便搜尋另一幀資訊的起始位。

3、方式2和方式3

序列介面工作方式2和方式3時,則被定義為9位的非同步通訊介面。傳送一幀資訊為11位,其中1位起始位,8位資料位(從低位至高位),1位是附加的可程控為1或0的第9位資料,1位停止位。

方式2和方式3的差別僅僅在於波特率不一樣,方式2的波特率是固定的,波特率為2smod/64(振盪頻率);方式3的波特率是可變的,波特率=2smod/32(t1的溢位率)。

方式2和方式3在傳送和接收時唯一的區別就是波特率不同。

(1)方式2和方式3傳送

方式2或方式3傳送時,資料由txd端輸出,發出一幀資訊為11位,附加的第9位資料是scon中的tb8,cpu執行一條資料寫入傳送緩衝器sbuf的指令,就啟動傳送器傳送,傳送完一幀資訊,置「1」ti中斷標誌。

(2)方式2和方式3接收

序列口被定義為方式2或方式3接收時,資料從rxd端輸入,置ren=1以後,開始接收過程。當檢測到rxd端從高到低的負跳變時,確認起始位有效,開始接收本幀的其餘資訊。在接收完一幀資訊後,在ri=0、sm2=0時,或接收到第9位資料為「1」時,8位資料裝入接收緩衝器,第9位資料裝入scon中rb8,並置ri=1。

若不滿足上述的兩個條件,接收到的資訊將會丟失,也不置位ri

10樓:匿名使用者

有4種方式:

方式 0 :同步移位暫存器輸出方式

方式1:8位資料非同步通訊方式

方式 2 :可接收或傳送 11 位資料

方式 3 :方式 3 與方式 2 完全類似,唯一的區別是方式 3 的小組特率是可變的。

51微控制器串列埠通訊中斷的問題,51微控制器串列埠通訊問題

肯定不會執行while ti 0 下面的程式的,因為你的中斷開著,程式跳到中斷服務程式裡面了,然後中斷處理結束了之後,ti自動清零了,所以一直在while ti 0 無限迴圈。程式裡面,既然開通了中斷功能,那你就一直使用中斷功能,為什麼你還要使用查詢功能呢?甚至有時把中斷給禁止了,這裡面容易出現問題...

51微控制器,通過串列埠助手向微控制器傳送字串,微控制器將字串逆序傳送回計算機,用C語言程式設計

電腦通過串列埠助手向微控制器傳送字串,微控制器定義一個可以儲存7個字元的陣列,依次儲存接收的字串,當接收到7個字串後,就可以從陣列的最後一個字元向前傳送每一個字元給電腦就可以了。剩下的就是串列埠初始化,串列埠接收和傳送程式了,就比較好寫了。其實,電腦傳送任意的7個字元的字串都可以,微控制器收到後就可...

51微控制器串列埠通訊出現問題,5V微控制器與3 3V微控制器串列埠通訊問題

做而論道 void main 如果是ascii碼,加上引號即可 if sbuf 0 p0 smg 0 通過數碼管顯示接收到的資訊 if sbuf 1 p0 smg 2 通過數碼管顯示接收到的資訊 if sbuf 2 p0 smg 12 通過數碼管顯示接收到的資訊 if sbuf 3 p0 smg 1...