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