a) 單個按鍵與多個LED燈(位操作—輸入與字節(jié)操作—輸出)—判斷與子程序
此處只是將輸出指令由位指令換成了字節(jié)指令,而輸入判斷仍然是位判斷指令。
ORG 0000H
MAIN:
; CLR C
JNC ZIJIE;JC位累加器—進位位為1轉(zhuǎn)移到ZIJIE ,
JNC位累加器為0轉(zhuǎn)移到ZIJIE,否則順序執(zhí)行。
MOV C,P1.0
ZIJIE:;子程序起始
MOV A ,#00H
RET;子程序結(jié)束并返回調(diào)用處
END
b) 單個按鍵與多個LED燈(位操作—輸入與位、字節(jié)操作—輸出)
l 位輸入控制位或字節(jié)輸出
ORG 0000H
MAIN:
; CLR C
JNC ZIJIE ;JC位累加器—進位位為1轉(zhuǎn)移到ZIJIE ,JNC位累加器為0轉(zhuǎn)移到ZIJIE,否則順序執(zhí)行。
SJMP MAIN ;相對轉(zhuǎn)移時間短,用AJMP絕對轉(zhuǎn)移時間長,RET是用于子程序的返回
ZIJIE:
F1:
l 位輸入控制字節(jié)輸出
c) 單個按鍵與單個電機控制—開環(huán)控制
單“位”—P口1位--單個燈—位輸出,單個按鍵控制—硬控制與軟控制
一個按鍵,一盞照明燈,一個繼電器。硬件接口問題—線路連接、硬件硬驅(qū)動問題(程序稱為軟驅(qū)動)。
一個按鍵,兩盞燈(指示、照明),一個繼電器。硬件接口問題—線路連接、硬件硬驅(qū)動問題。程序稱為軟驅(qū)動:就是利用兩個端口,通過延時或計時器完成轉(zhuǎn)換。
說明:
硬件特性,驅(qū)動與控制信號,程序編寫
由繼電器引出的強電驅(qū)動電器的控制問題,如電動機—交流電機、直流電機、步進電機、伺服電機;單項或多項
1. 單個開關(guān)(按鍵)與多個LED燈→數(shù)碼管→點陣問題—最小系統(tǒng)—輸出擴展
a) 單個按鍵與多個LED燈(位操作—輸入與字節(jié)操作—輸出)
b) 單個按鍵與多個LED燈—數(shù)碼管(位操作—輸入與字節(jié)操作—輸出)—數(shù)組
c) 單個按鍵與多個數(shù)碼管(位操作—輸入與多字節(jié)操作—輸出)—靜態(tài)—數(shù)組
d) 多個按鍵與多個數(shù)碼管(位操作—輸入與字節(jié)操作—輸出)—動態(tài)—掃描函數(shù)
e) 單個按鍵與多個數(shù)碼管—點陣(位操作—輸入與字節(jié)操作—輸出)—靜態(tài)
3.單個開關(guān)(按鍵)與多個LED燈→數(shù)碼管→點陣問題—輸出擴展—最小系統(tǒng)
a) 單個按鍵,多個LED燈(位操作—輸入與字節(jié)操作—輸出)
l 單輸入與多輸出的電子線路—靜態(tài)特性—結(jié)構(gòu)與聯(lián)接
對于多個LED燈(LED數(shù) < 8個)來說(圖4),在硬件連接方面、軟件編寫方面均沒有大的難點。按照單個LED的連接方式增加便可�?刂瞥绦蚓帉懟旧弦彩侵貜�(fù)性工作—用COPY簡單修改即可。
對于LED數(shù)= 8個或是8的倍數(shù)的情況,需要解決兩個方面的問題。一個是硬件的連接方法,一個是控制程序的編寫指令—用詞方法—字節(jié)操作指令。硬件方面可以用單個或多個成組(NET)的LED或總線接口、單個接口擴展等實現(xiàn)。程序編寫則可以使用重復(fù)性工作、可以使用字節(jié)操作指令而摒棄位操作指令,使得程序簡潔、可讀性好、硬件運行效率高。
對于LED數(shù)> 8個且不能被8整除的,仍需要用位操作指令。參見圖5,指令如下:
l 單輸入與多輸出電子線路的控制指令—動態(tài)特性
ORG 0000H
MOV P1 ,A ;P1口的狀態(tài),低電平為關(guān)
MOV C ,0A0H ;按位操作,P2.0口的狀態(tài)—按鍵定,關(guān)為低電平,開為高電平
MOV P1.0 ,C ;P1.0口的狀態(tài),按位高電平顯示燈亮,低電平顯示燈滅
MOV P1.1 ,C
MOV P1.2 ,C
MOV P1.3 ,C ;P1.3口的狀態(tài),
MOV P1.7 ,C
MOV P2.1 ,C
MOV P2.2 ,C
MOV P2.4 ,C
MOV P3.0 ,C
MOV P3.3 ,C
MOV P3.5 ,C
MOV P3.7 ,C
MOV P0.0 ,C
MOV P0.4 ,C
END
對于LED數(shù)> 8個且能被8整除的需要用字節(jié)操作指令。參見圖2所示。
ORG 0000H
START:
MOV P1 ,A
MOV C ,0A0H
JB 0A0H ,GUAN ;按位操作;按P2.0口的狀態(tài)獲得兩種顯示結(jié)果,0跳轉(zhuǎn)
MOV P1 ,#0FFH ;按P2.0口的狀態(tài)為非1時的順序顯示本指令
RET ;返回控制指令
GUAN : ;程序控制指令入口,跳轉(zhuǎn)入口
MOV P2 ,#0FFH ;按P2.0口的狀態(tài)為1時的轉(zhuǎn)移顯示本指令
RET ;子程序返回控制指令
END
程序說明:
每個口用位賦值指令來開關(guān)P1口的各個LED。也可以用字節(jié)賦值指令一次性的開關(guān)8位P1口全部LED。
P1=0; // P1口8位置低電平,點亮8個LED
P1=1; // P1口8位置高電平,關(guān)閉8個LED。圖5為多個LED燈-單個按鍵的運行結(jié)果與匯編語言。
上面的單片機系統(tǒng)和匯編語言控制指令,很容易被更改為多口、多位的單鍵控制系統(tǒng)。圖5為多個LED燈-單個按鍵的運行結(jié)果與匯編語言。圖6中對P2.0口改用雙擲開關(guān),實現(xiàn)P2.0口的兩種電平狀態(tài)。
ORG 0000H
RET
GUAN :