當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]   8031單片微機因具有體積小,資源豐富,性能價格比優(yōu)等特點,近十年來在我國獲得了極其廣泛的應(yīng)用。它內(nèi)部的可編程全雙工串行通訊口具有軟件編程方便,使用可靠的特點?! ≡跀?shù)據(jù)傳送和數(shù)據(jù)通訊中受

  8031單片微機因具有體積小,資源豐富,性能價格比優(yōu)等特點,近十年來在我國獲得了極其廣泛的應(yīng)用。它內(nèi)部的可編程全雙工串行通訊口具有軟件編程方便,使用可靠的特點。

  在數(shù)據(jù)傳送和數(shù)據(jù)通訊中受到用戶的親睞。本文就8031串行口的應(yīng)用作一介紹。

  一、利用8031串行口控制鍵盤和顯示器

  8031串行口的方式0(移位寄存器輸入/輸出方式)可用于鍵盤和顯示器控制,其硬件結(jié)構(gòu)如圖1所示。

  圖中外接8片8位串入/并出移位寄存器74LS164作為8位LED顯示器的靜態(tài)控制端口。由于顯示器工作是靜態(tài)的,因而主程序可不必掃描顯示器,從而使CPU有更多的時間處理其它事務(wù)。這類應(yīng)用常見于小型測量儀表的顯示中。

  下面給出更新顯示器顯示的子程序和鍵盤掃描子程序的清單及其簡單說明。

  顯示子程序:

  DIR: SETB P3.3 l開放顯示器傳送控制

  MOV R7,# 08H

  MOV RO.#5FH ;5FH~58H為顯示緩沖器

  DLO: MOVA,@RO ;取出要顯示的數(shù)據(jù)

  ADD A,#ODH ;加上偏移量

  MOVC A,@A+PC ;取出字形

  MOV SBUF,A ;送出顯示

  DLI: JNB TI,DL1 ;輸出完否?

  CLR TI ;完,清中斷標(biāo)志

  DEC RO ;再取下一個數(shù)

  DJNZ R7,DLO ;8位顯示數(shù)據(jù)輸出完否?

  CLR P3.3 ;輸出完,關(guān)閉顯示器傳送

  RET ;返回

  SEGTAB;co“O” ;字形代碼表

  F9 “1"

  A4“2”

  BD “3”

  99“4”

  92“5”

  82 “6”

  F8 “7”

  80 “8”

  90 “9”

  88 “A”

  83 “B”

  C6“C”

  Al“D”

  86 “E”

  8F “F”

  BF“一”

  8C “P”

  9l “Y”

  鍵盤掃描子程序

  KEY: MOV A.#OOH ;向164輸出OOH,對鍵盤掃描

  MOV SBUF,A

  KLO:JNB T1,KLO ;輸出完否?

  CLRTI ;清0中斷標(biāo)志

  KL1: JNB P3.4,PK1 ;第一捧鍵中有鍵閉合否?

  JB P3.5,KLI ;第二排鍵中有鍵閉合否?

  PKl: ACALLDI0 ;有鍵按下

  JNB P3.4,PK2 ;是否抖動引起

  JB P3.5.KL1 ;不是抖動引起

  PK2: MOV R7,#08H ;判斷那一個健被按下

  MOV R6,# OFEH

  MOV R3,# ODH

  KL5: MOV A,R6

  MOV SBUF,A ;對列線逐個掃描

  KL2: JNB TI,KL2

  CLR TI

  LNBP3.4.PKONE ;是第一捧某鍵杏?

  JB P3.5,NEXT ;是第二排某鍵否?

  MOV R4,#08H ;是第二排中有鍵被接下

  AJMP PK3

  PKONE: MOV R4,#OOH ;是第一排中有鍵被按下

  PK3: MOV A,#OOH ;等待鍵釋放

  MOV SUBF,A

  KL3: JNB TI,KL3

  CLR TI

  KL4: JNBP3.4,KL4JNBP3.5,KL4

  MOV A,R4 ;鍵釋放,取出鍵碼

  ADD A,R3

  RET ;返回

  NEXT: MOV A,R6 ;判下一列是否按下

  RLA

  MOV R6,A

  INC R3

  DJNZ R7,KL5 ;八列鍵都檢查完否?

  AJMP KEY ;完了,開始下一個掃描周期

  Dl0: MOV R7,#OAH ;延時10ms子程序

  DL: MOV R6,# OFFH

  DL6: DJNZ R6,DL6

  DJNZ R7,DL

  RET

  二、利用8031串行口實現(xiàn)主從機通訊

  8031串行口工作方式3(或方式2)可用于實現(xiàn)單片機之

  間的主從機通訊,具體電路結(jié)構(gòu)如圖2。方式2和方式3都是

  被定義為9位異步通訊接口,只是波特率選取有所不同。

  利用串行口方式3實現(xiàn)多機通訊的軟件“協(xié)議”如下:

  1.主機

  設(shè)置為串行口工作方式3,允許接收,第一次發(fā)送時設(shè)置

  TB8=1,以后發(fā)送時設(shè)置TB8=0。TB8=1(圭機發(fā)送的第九

  位數(shù)據(jù))表示這組數(shù)是地址,TB8-o表示這組數(shù)是數(shù)據(jù)。

  2.從機

  設(shè)置為串行口工作方式3,允許接收。第一次接收設(shè)置

  SM2-1,只有當(dāng)接收到的第九位數(shù)據(jù)RB8=1時才產(chǎn)生接收

  中斷,這時接收到的這組數(shù)是地址。在程序中置位PSW. 1=1

  表示接收的是地址,PSW. 1=0表示接收的是數(shù)據(jù)。

  下面給出主從機之間通信的程序和說明。主機要發(fā)送的

  數(shù)據(jù)或控制命令放在片內(nèi)RAM中,數(shù)據(jù)塊首址為31H, 30H

  中的內(nèi)容為數(shù)據(jù)塊長度。

  ORG OOOOH

  LJMP MAIN

  ORG 0023H ;串行口中斷程序入口

  SJMP SERVE

  ORG 0040H ;發(fā)送子程序人口

  TRANSFER: MOV TMOD,#20H ;設(shè)置T1為定時方式2

  MOV TH1,#0F3H ;Tl置初值,產(chǎn)生1200波特率

  MOV TLl,# 0F3H

  MOV SCON,#OD8H ;設(shè)置串行日工作方式3允許接收,TB8=1

  SETB TR1 ;啟動Tl

  'SET EA ;開中斷

  CLR ES ;禁止串行口中斷

  START: MOV SBUF,#OOH .發(fā)0#從機地址

  WAIT1: JNB TI,WAITI ;等待發(fā)送完畢

  CIR TI ;完畢清發(fā)送中斷標(biāo)志T1

  WAIT2': JNB R1,WAlTZ ;等待0#從機應(yīng)答

  CLRRl

  MOV A,SBUF ;判斷是否為O#從機的應(yīng)答信號

  JNZ START

  CIR TB8 ;是應(yīng)答信號,清TB8表示以后是效據(jù)

  SETB ES ;允許串行口中斷

  MOV 2FH,# 31H

  MOV SBUF,30H .發(fā)送數(shù)據(jù)塊長度

  RET ;子程序返回

  SERVE: CLR TI ;清發(fā)迭中斷標(biāo)志T1

  PUSH A ;現(xiàn)場保護

  MOV A,RO

  PUSH A

  DJNZ 30H.TRAN; ;數(shù)據(jù)發(fā)送完否?

  CLR ES ;完畢,關(guān)串行口中斷

  CLR TR1 ;關(guān)T1

  SJMP RETUNE

  TRAN: MOV RO,2FH ;取數(shù)據(jù)地址

  MOV SBUF.@RO ;發(fā)送數(shù)據(jù)

  INC 2FH ;數(shù)據(jù)地址加1

  RETUNE:POP A ;恢復(fù)現(xiàn)場

  MOV RO,A

  POP A

  RETI ;中斷返回

  MAIN, NOP 注程序(未給出)

  0#從機首先接收主機發(fā)來的數(shù)據(jù)塊長度,并將它存入片

  內(nèi)RAM30H單元中,然后接收數(shù)據(jù)或控制命令,并將它們存

  放到片內(nèi)RAM中,起始地址為30H。0#從機接收程序清單如

  下;

  ORG 0023H ;串行口中斷程序入口

  SJMP SERVE.

  ORG 0040H ;初始化程序入日

  RECEIVE:MOV TMOD.#20H ;設(shè)置T1為定時方式2

  MOV TH1,# OF3H ;T1置初值,產(chǎn)生1200波特率

  MOV SCON,#OFOH ;設(shè)置串行口工作方式3,允許接收且SM2=1

  SETB TR1 ;啟動T1

  SETB EA ;開中斷

  SETB ES ;允許串行口中斷

  SETB PSW.1 ;PSW.1=1是地址

  LJMP MAIN ;轉(zhuǎn)主程序(未給出)等待串行口中斷

  SERVE: CLR RI ;清串行口發(fā)送標(biāo)志Rl

  PUSH A ;現(xiàn)場保護

  MOV A,RO

  PUSH A

  HOV A,R0

  PUSHA

  JBPSW.1,HELLO ;是地址否?

  DATA: MOV R0,2FH ;是數(shù)據(jù),建立數(shù)據(jù)地址指針

  MOV A,SBUF ;取接收到的數(shù)據(jù)

  MOV @RO,A ;轉(zhuǎn)存到存貯器中

  INC 2FH ;數(shù)據(jù)地址加1

  DJNZ 30H,RETUNE ;躺數(shù)據(jù)接收完否?

  SETB PSW.1 ;置位PSW.1,表示接收

  SJMP RETUNE ;數(shù)據(jù)完畢

  HELLO: MOV A,SBUF ;是地址,判斷與本機地址是否相等

  JNZ RETUNE ;不相等返回

  MOV SBUF,# OOH .相符,發(fā)本機地址作為應(yīng)答

  CLR PSW.1 ;清PSW.1表示以后為數(shù)據(jù) ’

  CLR SM2 ;清SM2準(zhǔn)備接收數(shù)據(jù).

  MOV 2FH,#30H

  WAIT: JNBTI,WAIT ;等待應(yīng)答信號發(fā)送完畢

  CLR T1

  RETUNE, POP A ;恢復(fù)現(xiàn)場

  MOV RO,A

  POP A

  RETI ;中斷返回

  三、8031串行口與IBM-PC機組成二級通訊系統(tǒng) IBM-PC機的串行通訊適配器是采用可編程通訊用異步收發(fā)器UART8250芯片。我們可以使用宏匯編語言設(shè)計程序直接操作UART各寄存器,以中斷方式與8031串行口進行通訊。

  1.硬件結(jié)構(gòu)

  IBM-PC機的串行通訊適配器與8031的串行口組成的兩級系統(tǒng)如圖3所示。由于串行輸出芯片1488無高阻態(tài),必須經(jīng)二極管隔離后再并聯(lián)。

  2.通訊協(xié)議

  a.?dāng)?shù)據(jù)代碼程和功能代碼

  數(shù)據(jù)代碼是通訊過程必須傳送的目的代碼,功能代碼是通訊過程中的應(yīng)答信號,以及表征數(shù)據(jù)特征和數(shù)量的代碼。

  每組數(shù)據(jù)的結(jié)構(gòu)見表l,協(xié)議規(guī)定數(shù)據(jù)的數(shù)量和特征代碼放在數(shù)據(jù)代碼的前端,代碼和字節(jié)提供給對方檢驗通訊過程是否有誤碼。

  b.具體規(guī)定;

  我們規(guī)定通訊過程為PC機發(fā)出“向8031發(fā)數(shù)”的發(fā)數(shù)令牌(該令牌中包含某- 8031的地址)。收到應(yīng)答碼后開始發(fā)送過程,并由8031機回送“是否誤碼”的代碼。PC機發(fā)出“允許8031機發(fā)效的收數(shù)令牌(該令牌包含某- 8031的地址),收數(shù)令牌按機號順序定時發(fā)出,使每臺8031有平等的發(fā)數(shù)機會。令牌中的地址和機號相同的8031機取得通訊權(quán)。為使發(fā)數(shù)比收數(shù)有更高的優(yōu)先權(quán),只在無數(shù)據(jù)發(fā)送時才發(fā)“收數(shù)令牌”。

  3.軟件設(shè)計

  a.對lBM-PC通訊程序的要求

  為使IBM-PC機和多臺8031機的通訊有條不紊的進行,IBM-PC機應(yīng)有完善的調(diào)度能力,我們可以編制一段調(diào)度程序,它的功能是;①處理數(shù)據(jù)輸入和輸出緩沖區(qū);②進行串行口資源調(diào)度,確定是收數(shù)還是發(fā)數(shù);③能使串行中斷服務(wù)程序執(zhí)行發(fā)數(shù)任務(wù)和收數(shù)任務(wù)。發(fā)數(shù)任務(wù)和收數(shù)任務(wù)分別由各自的中斷服務(wù)程序來完成;④調(diào)度程序以令牌方式分配通訊權(quán)。只有取得通訊權(quán)的某臺8031才能接收和發(fā)送數(shù)據(jù)(程序從略)。

  b.8031機通訊程序

  8031機系統(tǒng)主程序完成串行口初始化,準(zhǔn)備輸出數(shù)據(jù)和處理輸入數(shù)據(jù)等與通訊有關(guān)的工作。它定義串行口為工作方式3,允許串行中斷,允許接收,置位多機通訊位及設(shè)置與PC機UART(異步通訊收發(fā)器)相同的波特率等。

8031機與PC機的數(shù)據(jù)通訊串行中斷服務(wù)程序框圖見圖d。該中斷服務(wù)程序由“令牌激活”,在一次中斷服務(wù)過程中完成整組數(shù)據(jù)的接

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉