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

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

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

  一、利用8031串行口控制鍵盤(pán)和顯示器

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

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

  下面給出更新顯示器顯示的子程序和鍵盤(pán)掃描子程序的清單及其簡(jiǎn)單說(shuō)明。

  顯示子程序:

  DIR: SETB P3.3 l開(kāi)放顯示器傳送控制

  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 ;再取下一個(gè)數(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”

  鍵盤(pán)掃描子程序

  KEY: MOV A.#OOH ;向164輸出OOH,對(duì)鍵盤(pán)掃描

  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 ;是否抖動(dòng)引起

  JB P3.5.KL1 ;不是抖動(dòng)引起

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

  MOV R6,# OFEH

  MOV R3,# ODH

  KL5: MOV A,R6

  MOV SBUF,A ;對(duì)列線逐個(gè)掃描

  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 ;完了,開(kāi)始下一個(gè)掃描周期

  Dl0: MOV R7,#OAH ;延時(shí)10ms子程序

  DL: MOV R6,# OFFH

  DL6: DJNZ R6,DL6

  DJNZ R7,DL

  RET

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

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

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

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

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

  1.主機(jī)

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

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

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

  2.從機(jī)

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

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

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

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

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

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

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

  ORG OOOOH

  LJMP MAIN

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

  SJMP SERVE

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

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

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

  MOV TLl,# 0F3H

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

  SETB TR1 ;啟動(dòng)Tl

  'SET EA ;開(kāi)中斷

  CLR ES ;禁止串行口中斷

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

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

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

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

  CLRRl

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

  JNZ START

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

  SETB ES ;允許串行口中斷

  MOV 2FH,# 31H

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

  RET ;子程序返回

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

  PUSH A ;現(xiàn)場(chǎng)保護(hù)

  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)場(chǎng)

  MOV RO,A

  POP A

  RETI ;中斷返回

  MAIN, NOP 注程序(未給出)

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

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

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

  下;

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

  SJMP SERVE.

  ORG 0040H ;初始化程序入日

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

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

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

  SETB TR1 ;啟動(dòng)T1

  SETB EA ;開(kāi)中斷

  SETB ES ;允許串行口中斷

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

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

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

  PUSH A ;現(xiàn)場(chǎng)保護(hù)

  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 ;是地址,判斷與本機(jī)地址是否相等

  JNZ RETUNE ;不相等返回

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

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

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

  MOV 2FH,#30H

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

  CLR T1

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

  MOV RO,A

  POP A

  RETI ;中斷返回

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

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

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

  2.通訊協(xié)議

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

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

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

  b.具體規(guī)定;

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

  3.軟件設(shè)計(jì)

  a.對(duì)lBM-PC通訊程序的要求

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

  b.8031機(jī)通訊程序

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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