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...