單片機(jī)在赤道式天文望遠(yuǎn)鏡控制系統(tǒng)中的應(yīng)用
2 、下位機(jī)軟件流程圖
3、子程序部分
?。?)鍵盤輸入及顯示部分
在該系統(tǒng)中,我們選用了8279芯片,在程序中查詢鍵值,送入固定單元,如果無鍵按下,則送#0FFH入固定單元,然后查詢此單元,如果為#0FFH,則返回,否則根據(jù)單元的鍵值內(nèi)容轉(zhuǎn)入相應(yīng)的功能子程序;而顯示部分主要把待顯示的數(shù)據(jù)經(jīng)過拆分成7位(本系統(tǒng)采用7位數(shù)碼管顯示),分別送給顯示緩沖區(qū),由查表的方式從表中取出7個(gè)相應(yīng)的字型,送到8279數(shù)據(jù)口實(shí)現(xiàn)動(dòng)態(tài)顯示,8279的鍵盤掃描及顯示方式是通過初始化編程來實(shí)現(xiàn)的,8279初始化部分程序如下:
MOV DPTR, #7FF0H; 8279芯片的狀態(tài)地址
MOV A, #0D1H; 清除命令
MOV @DPTR, A; 命令字送入
LL: MOV A, @DPTR; 讀8279狀態(tài)字
JB ACC.7, LL ; 清除等待
MOV A, #08H; 顯示器左邊輸入外部譯碼,雙鍵互鎖方式
MOV @DPTR, A; 命令字送入
MOV A, #2AH; 時(shí)鐘編程命令
MOV @DPTR,A; 命令字送入
RET; 返回
?。?)MC146818時(shí)鐘部分
MC146818芯片是摩托羅拉公司生產(chǎn)的一種可編程的時(shí)鐘芯片,該系統(tǒng)中用它來讀寫恒星時(shí),其中一些主要的操作就是芯片的初始化,讀時(shí)間操作,寫時(shí)間操作幾大部分,在使用該芯片進(jìn)行執(zhí)行讀/寫時(shí)間操作時(shí),必須得注意,要首先查詢它的狀態(tài)看它是否正在刷新數(shù)據(jù),如果是,必須等刷新數(shù)據(jù)動(dòng)作完成之后再對(duì)芯片進(jìn)行讀/寫操作,否則容易出錯(cuò),MC146818的初始化部分程序如下:
MOV DPTR,#0BFCAH; A寄存器口地址
MOV A,#26H; 命令字
MOVX @DPTR,A
INC DPL; B寄存器口地址
MOV A,#1AH; 命令字
MOVX @DPTR,A
RET; 返回
讀時(shí)間子程序:
MOV DPTR, #0BFCAH
AA: MOVX A, @DPTR; 讀取狀態(tài)字
ANL A, #80H
JNZ AA; 芯片是否正在刷新?否,讀取數(shù)據(jù)
MOV DPTR, #0BFC0H;讀秒單元
MOVX A, @DPTR
MOV @R1, A
INC R1
MOV DPL, #0C2H; 讀分單元
MOVX A, @DPTR
MOV @R1,A
INC R1
MOV DPL, #0C4H; 讀時(shí)單元
MOVX A, @DPTR
MOV @R1, A
RET; 返回
寫時(shí)間的子程序同上類似,不再多述。
?。?)串行通信子程序
W77E58實(shí)現(xiàn)雙串口通信,初始化完畢后進(jìn)入主流程,逐個(gè)查詢串口是否有通信數(shù)據(jù)請(qǐng)求,如果有則進(jìn)入通信子程序執(zhí)行并返回,否則程序直接往下執(zhí)行,把下位機(jī)的數(shù)據(jù)分別發(fā)送給把手盒和工控機(jī),等待接收控制命令。具體的初始化程序如下:
評(píng)論