|
電梯控制系統(tǒng)匯編語(yǔ)言程序
單片機(jī)源程序如下:
- ORG 0000H
- AJMP START
- ORG 000BH
- AJMP TIME
- ORG 001BH
- AJMP TIME1
- ;*********START啟動(dòng)程序***********
- START: MOV TMOD,#11H
- MOV IE,#8AH
- MOV TH0,#3CH ;定時(shí)100ms
- MOV TL0,#0B0H
- MOV TH1,#0ECH ;定時(shí)10ms
- MOV TL1,#78H
- SETB TR0
- MOV SP,#6FH
- ;*********STOP停止程序***********
- STOP: CLR P0.6
- CLR P0.7
- MOV R3,#0
- MOV DPTR,#06H ;數(shù)碼管顯示“1”
- JB P1.7,$ ;等待開始工作指令
- CLR P2.4
- CLR P2.5 ;電動(dòng)機(jī)制動(dòng)
- SETB P0.6
- SETB P2.7 ;蜂鳴器報(bào)警
- SETB TR1 ;啟動(dòng)T1
- ;10ms一次讀取按鍵
- ;*********一樓上升按鍵選擇程序***********
- UP1: MOV A,20H ;目前在1樓
- ORL A,21H ;取得>1樓請(qǐng)求情況
- ORL A,22H
- ANL A,#0EH
- JZ UP1 ;無(wú)請(qǐng)求,則等待
- CLR P0.7 ;上升指示燈亮
- SETB P2.5
- SETB P2.7 ;電動(dòng)機(jī)正轉(zhuǎn)上升
- ;*********二樓上升按鍵選擇程序***********
- UP2: MOV DPTR,#5BH ;到達(dá)2樓,數(shù)碼管顯示“2”
- JB 20H.1,UP21 ;是2樓電梯間的上升請(qǐng)求,轉(zhuǎn)UP21
- JB 22H.1,UP21 ;是電梯內(nèi)目標(biāo)2樓請(qǐng)求,轉(zhuǎn)UP21
- SJMP UP22
- UP21: CLR 20H.1 ;清二樓電梯間上升請(qǐng)求標(biāo)志位
- CLR 22H.1 ;清電梯內(nèi)目標(biāo)2樓請(qǐng)求標(biāo)志位
- SETB P0.7 ;上升指示燈滅
- SETB P2.4
- SETB P2.6 ;電機(jī)正轉(zhuǎn)電梯門開
- MOV R2,#0 ;5s定時(shí)開始
- CJNE R2,#50,$ ;等待5s延時(shí)
- CLR P2.6 ;門關(guān)
- SETB P2.5
- SETB P2.7 ;電動(dòng)機(jī)正轉(zhuǎn)上升
- UP22: MOV A,20H
- ORL A,21H
- ORL A,22H
- ANL A,#0CH ;取得>2樓請(qǐng)求情況
- JNZ UP23
- AJMP DOWN22 ;>2樓無(wú)請(qǐng)求,轉(zhuǎn)2樓下降
- UP23: CLR P0.7 ;上升指示燈亮
- SETB P2.5
- SETB P2.7 ;電動(dòng)機(jī)正轉(zhuǎn)上升
-
- ;*********三樓上升按鍵選擇程序***********
- UP3: MOV DPTR,#4FH ;到達(dá)3樓,數(shù)碼管顯示“3”
- JB 20H.2,UP31 ;是3樓電梯間的上升請(qǐng)求,轉(zhuǎn)UP31
- JB 22H.2,UP31 ;是電梯內(nèi)目標(biāo)3樓請(qǐng)求,轉(zhuǎn)UP31
- SJMP UP32
- UP31: CLR 20H.1 ;清3樓電梯間上升請(qǐng)求標(biāo)志位
- CLR 22H.1 ;清電梯內(nèi)目標(biāo)3樓請(qǐng)求標(biāo)志位
- SETB P0.7 ;上升指示燈滅
- SETB P2.4
- SETB P2.6 ;門開
- MOV R2,#0 ;5s定時(shí)開始
- CJNE R2,#50,$ ;等待5s延時(shí)
- CLR P2.6 ;門關(guān)
- SETB P2.5
- SETB P2.7 ;電動(dòng)機(jī)正轉(zhuǎn)上升
-
- UP32: MOV A,20H
- ORL A,21H
- ORL A,22H
- ANL A,#08H ;取得>3樓請(qǐng)求情況
- JNZ UP33
- AJMP DOWN32 ;>3樓無(wú)請(qǐng)求,轉(zhuǎn)3樓下降
- UP33: CLR P0.7 ;上升指示燈亮
- SETB P2.5
- SETB P2.7 ;電動(dòng)機(jī)正轉(zhuǎn)上升
- UP34: MOV DPTR,#66H ;到達(dá)4樓,數(shù)碼管顯示“4”
- ;*********四樓下降按鍵選擇程序***********
- UP41: CLR 20H.3 ;清4樓電梯間下降請(qǐng)求標(biāo)志位
- CLR 22H.3 ;清電梯內(nèi)目標(biāo)4樓請(qǐng)求標(biāo)志位
- SETB P0.7 ;上升指示燈滅
- SETB P2.4
- SETB P2.6 ;門開
- MOV R2,#0 ;5s定時(shí)開始
- CJNE R2,#50,$ ;等待5s延時(shí)
- CLR P2.6 ;門關(guān)
- SETB P2.5
- SETB P2.7 ;電動(dòng)機(jī)正轉(zhuǎn)上升
- UD4: MOV A,50H
- ORL A,21H
- ORL A,22H
- ANL A,#07H ;取得<4樓的請(qǐng)求情況
- JNZ DOWN4
- AJMP UD4
- DOWN4: CLR P0.6 ;下降指示燈亮
- SETB P2.5
- CLR P2.7 ;下降
-
- ;*********三樓下降按鍵選擇程序***********
- DOWN3: MOV DPTR,#4FH ;到達(dá)3樓,數(shù)碼管顯示“3”
- JB 21H.2,DOWN31 ;是3樓電梯間的下降請(qǐng)求,轉(zhuǎn)DOWN31
- JB 22H.2,DOWN31 ;是電梯內(nèi)目標(biāo)3樓請(qǐng)求,轉(zhuǎn)DOWN31
- SJMP DOWN32
- DOWN31:CLR 21H.2 ;清3樓電梯間下降請(qǐng)求標(biāo)志位
- CLR 22H.2 ;清電梯內(nèi)目標(biāo)3樓請(qǐng)求標(biāo)志位
- SETB P0.6 ;下降指示燈滅
- SETB P2.4
- SETB P2.6 ;門開
- MOV R2,#0 ;5s定時(shí)開始
- CJNE R2,#50,$ ;等待5s延時(shí)
- CLR P2.6 ;門關(guān)
- SETB P2.5
- CLR P2.7 ;下降
- DOWN32:MOV A,20H
- ORL A,21H
- ORL A,22H
- ANL A,#03H ;取得<3樓的請(qǐng)求情況
- JNZ DOWN33
- AJMP UP32 ;<3無(wú)樓請(qǐng)求,轉(zhuǎn)3樓上升
- DOWN33:CLR P0.6 ;下降指示燈亮
- SETB P2.5
- CLR P2.7 ;下降
- ;*********二樓下降按鍵選擇程序***********
- DOWN2: MOV DPTR,#5BH ;到達(dá)2樓,數(shù)碼管顯示“2”
- JB 21H.1,DOWN21 ;是2電梯間的下降請(qǐng)求,轉(zhuǎn)DOWN21
- JB 22H.1,DOWN2 ;是電梯內(nèi)目標(biāo)3樓請(qǐng)求,轉(zhuǎn)DOWN21
- SJMP DOWN22
- DOWN21:CLR 21H.1 ;清2樓電梯間下降請(qǐng)求標(biāo)志位
- CLR 22H.1 ;清電梯內(nèi)目標(biāo)2樓請(qǐng)求標(biāo)志位
- SETB P0.6 ;下降指示燈滅
- SETB P2.4
- SETB P2.6 ;門開
- MOV R2,#0 ;5s定時(shí)開始
- CJNE R2,#50,$ ;等待5s延時(shí)
- CLR P2.6 ;門關(guān)
- SETB P2.5
- CLR P2.7 ;下降
- DOWN22:MOV A,20H
- ORL A,21H
- ORL A,22H
- ANL A,#02H ;取得<2的請(qǐng)求情況
- JNZ DOWN23
- AJMP UP22 ;<2樓請(qǐng)求,轉(zhuǎn)2樓上升
- DOWN23:CLR P0.6 ;下降指示燈亮
- SETB P2.5
- CLR P2.7 ;下降
- DOWN1: MOV DPTR,#06H ;到達(dá)1,數(shù)碼管顯示“1”
- DOWN11:CLR 21H.0 ;清電梯內(nèi)目標(biāo)1請(qǐng)求標(biāo)志位
- SETB P0.6 ;下降指示燈滅
- SETB P2.4
- SETB P2.6 ;門開
- MOV R2,#0 ;5s定時(shí)開始
- CJNE R2,#50,$ ;等待5s延時(shí)
- CLR P2.6 ;門關(guān)
- SETB P2.5
- CLR P2.7 ;下降
- CJNE R3,#0,DOWN12 ;Stop鍵是否按下過(guò)
- AJMP UP1
- DOWN12:CLR P0.6 ;若Stop鍵按下過(guò),轉(zhuǎn)S1停止工作
- CLR P0.7
- AJMP STOP
- ;定時(shí)器T0中斷服務(wù)程序:5s計(jì)時(shí)
- TIME: MOV TH0,#3CH
- MOV TL0,#0B0H
- INC R2 ;R2計(jì)數(shù)器
- RETI
- ;********* T1中斷服務(wù)程序:按鍵狀態(tài)檢查***********
- TIME1: MOV TH1,#0ECH ;每10s檢查一次按鍵
- MOV TL1,#78H
- MOV 6EH,A
- MOV 30H,P1 ;讀入所有按鍵狀態(tài)
- MOV 31H,P3
- JB P1.6,TIME11 ;若Stop鍵未按下,則正常運(yùn)行
- MOV R3,#0FFH ;Stop鍵按下,標(biāo)志R3置非0數(shù)
- MOV 20H,#0 ;清除全部電梯間上升請(qǐng)求
- MOV 21H,#0 ;清除全部電梯間下降請(qǐng)求
- MOV 22H,#0 ;清除全部電梯內(nèi)目標(biāo)樓層請(qǐng)求
- MOV 30H,#0FFH ;修改讀入的按鍵狀態(tài),使之為
- MOV 31H,#0FEH ;電梯內(nèi)目標(biāo)為一樓
- CLR TR1 ;并關(guān)閉T1,不再讀取按鍵
- TIME11: MOV A,30H
- CPL A
- ANL A,#07H ;取得電梯間上升請(qǐng)求
- ORL 20H,A
- MOV A,20H ;取得上升指示燈狀態(tài)
- CPL A
- ANL A,#07H
- MOV 32H,A
- MOV A,30H
- CPL A
- ANL A,#38H ;取得電梯間下降請(qǐng)求
- RR A
- RR A
- ORL 21H,A
- MOV A,21H
- CPL A
- ANL A,#0EH
- RL A
- RL A
- ORL 32H,A
- MOV A,P0
- ANL A,#0C0H
- ORL A,32H
- MOV P0,A ;刷新上升、下降請(qǐng)求指示燈
- MOV A,31H
- ANL A,#0FH ;取得電梯內(nèi)目標(biāo)樓層請(qǐng)求
- ORL 22H,A
- MOV A,22H
- CPL A
- MOV P2,A ;刷新電梯內(nèi)目標(biāo)樓層指示燈
- TIME12: MOV A,6EH
- RETI
- ;********* 2s延時(shí)程序***********
- DLY: MOV R5,#20
- DLY1: MOV R6,#100
- DLY2: MOV R7,#250
- DJNZ R7,$
- DJNZ R6,DLY2
- DJNZ R5,DLY1
- RET
- END
- ;**************** PWM控制電梯門開關(guān)程序 ************************
- ORG 0000H
- LMP START
- ORG 000EH
- LMP ZDCX
- ORG 0100H
- START:MOV SP,#30H ;系統(tǒng)初始化,定時(shí)值為0.1
- MOV DPTR,#TAB
- MOV TL0,#9CH
- MOV TH0,#9CH
- MOV TMOD,#02H ;定時(shí)器T0工作方式2
- MOV IE,#82H
- SETB TR0
- LCALL QUZHI ;取第一個(gè)R0的值
- MOV R0,#A
- CLR P2.4
- LP: JNB 20H,LP ;輸出PWM波形
- CLR 20H
- DJNZ R0,LP
- CPL P2.4
- LCALL QUZHI;
- CNE #55H,LP1 ;當(dāng)所取的數(shù)是結(jié)束標(biāo)志55時(shí),
- ;程序重新開始
- LMP START
- LP1:MOV R0,A
- LMP LP
- QUZHI:MOV A,#00H ;取值子程序
- MOVC A,@+DPTR
- INC DPTR
- RET
- ZDCX:SETB 20H
- RETI
- TAB:DB 7,6,15,12,24,6,30,6,24,12,15,6,7,55 ;55為結(jié)束標(biāo)志
- END
- ;*************PWM控制電梯上升與下降程序*************
- ORG 0000H
- LMP START
- ORG 000EH
- LMP ZDCX
- ORG 0100H
- START:MOV SP,#30H
- MOV DPTR,#TAB
- MOV TL0,#9CH
- MOV TH0,#9CH
- MOV TMOD,#02H
- MOV IE,#82H
- SETB TR0
- LCALL QUZHI
- MOV R0,#A
- CLR P2.5
- LP: JNB 20H,LP
- CLR 20H
- DJNZ R0,LP
- CPL P2.5
- LCALL QUZHI;
- CNE #55H,LP1
- LMP START
- LP1:MOV R0,A
- LMP LP
- QUZHI:MOV A,#00H
- MOVC A,@+DPTR
- INC DPTR
- RET
- ZDCX:SETB 20H
- RETI
- TAB:DB 5,10,15,20,5,10,15,5,5,10,15,20,5,10,5,55
- END
復(fù)制代碼
|
-
-
單片機(jī).doc
2018-4-27 17:15 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
296.05 KB, 下載次數(shù): 17, 下載積分: 黑幣 -5
電梯控制系統(tǒng)匯編語(yǔ)言程序
|