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






