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