序列口應用程式設計例項

2022-11-19 06:42:03 字數 2098 閱讀 6265

1. 串列埠方式0應用程式設計 8051微控制器序列口方式0為移位暫存器方式,外接乙個串入並出的移位暫存器,就可以擴充套件乙個並行口。

例:用8051序列口外接cd4094擴充套件8位並行輸出口,如圖所示,8位並行口的各位都接乙個發光二極體,要求發光管呈流水燈狀態。 序列口方式0的資料傳送可採用中斷方式,也可採用查詢方式,無論哪種方式,都要借助於ti或ri標誌。

序列傳送時,可以靠ti置位(發完一幀資料後)引起中斷申請,在中斷服務程式中傳送下一幀資料,或者通過查詢ti的狀態,只要ti為0就繼續查詢,ti為1就結束查詢,傳送下一幀資料。在序列接收時,則由ri引起中斷或對ri查詢來確定何時接收下一幀資料。無論採用什麼方式,在開始通訊之前,都要先對控制暫存器scon進行初始化。

在方式0中將,將00h送scon就可以了。

org 2000h

start: mov scon,#00h ;置序列口工作方式0

mov a,#80h ;最高位燈先亮

clr p1.0 ;關閉並行輸出(避象傳輸過程中,各led的"暗紅"象) out0: mov sbuf,a ;開始序列輸出

out1: jnb ti,out1 ;輸出完否

clr ti ;完了,清ti標誌,以備下次傳送

setb p1.0 ;開啟並行口輸出

acall delay ;延時一段時間

rr a ;迴圈右移

clr p1.0 ;關閉並行輸出

jmp out0 ;迴圈

說明:delay延時子程式可以用前面我們講p1口流水燈時用的延時子程式,這裡就不給出了。

二、非同步通訊

org 0000h

ajmp start

org 30h

start:

mov sp,#5fh ;

mov tmod,#20h ;t1: 工作模式2

mov pcon,#80h ;smod=1

mov th1,#0fdh ;初始化波特率(參見表)

mov scon,#50h ;standard uart settings

mov r0,#0aah ;準備送出的數

setb ren ;允許接收

setb tr1 ;t1開始工作

wait:

mov a,r0

cpl a

mov r0,a

mov sbuf,a

lcall delay

jbc ti,wait1 ;如果ti等於1,則清ti並轉wait1

ajmp wait

wait1: jbc ri,read ;如果ri等於1,則清ri並轉read

ajmp wait1

read:

mov a,sbuf ;將取得的數送p1口

mov p1,a

ljmp wait

delay: ;延時子程式

mov r7,#0ffh

djnz r7,$

retend

將程式編譯通過,寫入晶元,插入實驗板,用通讀電纜將實驗板與主機的串列埠相連就可以實驗了。上面的程式功能很簡單,就是每隔一段時間向主機輪流送數55h和aah,並把主機送去的數送到p1口。可以在pc端用串列埠精靈來做實驗。

串列埠精靈在我主頁上有**。

三、上述程式的中斷版本

org 0000h

ajmp start

org 0023h

ajmp serial ;

org 30h

start:

mov sp,#5fh ;

mov tmod,#20h ;t1: 工作模式2

mov pcon,#80h ;smod=1

mov th1,#0fdh ;初始化波特率(參見表)

mov scon,#50h ;standard uart settings

mov r0,#0aah ;準備送出的數

setb ren ;允許接收

setb tr1 ;t1開始工作

setb ea ;開總中斷

setb es ;開串列埠中斷

sjmp $

serial:

mov a,sbuf

mov p1,a

clr ri

reti

end本程式沒有寫入傳送程式,大家可以自行新增。

應用程式設計報告

大作業題目 班級 學號 學生姓名 其他組員 作業成績 應用程式設計基礎 1 設計報告 1 目錄 2 大作業設計報告內容 2 一 需求分析 2 二 功能概要 3 三 模組組織 3 四 功能實現 4 1 計數模組 4 2 顏色模組 5 3 定時模組 6 4 新建儲存列印模組 7 5.幫助 10 五 製作...

Android應用程式設計基礎

android應用程式設計基礎第28篇 android四大元件 前篇我們已經介紹了activity以及其生命週期,我想大家已經有所了解了。今天我們就來講講四大元件中的service。service作為android中四大元件之一,擁有重要的地位。service具有和activity一樣的級別,ser...

android應用程式設計規範

示例 public void exa,mpl e if if else if else void examplefun public class exampleclass 示例 if filename null new file logthpath filename length progrpm c...