|
- ;======================================================================
- ;編寫者:蘭建文 時間:2009-7-24 地點(diǎn):源點(diǎn)IC嵌入式培訓(xùn)機(jī)構(gòu)
- ;多功能小車 (小車能尋跡、壁障、無線遙控、電機(jī)調(diào)速)
- ;使用ATMEL89C2051單片機(jī)
- ;P1.7控制后輪前進(jìn)方向 P1.3----循跡左
- ;P1.6控制后輪后退方向 P1.2----循跡右
- ;P1.5控制前輪左轉(zhuǎn)方向 P3.1----蜂鳴器
- ;P1.4控制前輪右轉(zhuǎn)方向 P3.5----左轉(zhuǎn)指示燈
- ;P3.2壁障紅外檢測 P3.4----右轉(zhuǎn)指示燈
- ;P3.0無線遙控檢測 P3.3控制555產(chǎn)生38KHZ紅外線
- ;定時器中斷0用于調(diào)節(jié)電機(jī)速度,調(diào)節(jié)PWM
- ;===========================系統(tǒng)程序===================================
- ORG 0000H
- JMP START
- ORG 000BH
- JMP IN_T1
- ORG 0030H
- ;===========================程序開始===================================
- START:
- MOV P1,#0FFH ;端口初始化
- MOV P3,#0FFH
- MOV TMOD,#01H ;定時器0工作方式1
- MOV TL0,#0D4H ;定時0.9ms 設(shè)定時初值
- MOV TH0,#0FEH
- MOV IE,#82H ;開總中斷與定時器中斷
- SETB TR0 ;開定時器
- MOV R1,#3 ;設(shè)置占空比
- SETB F0 ;節(jié)拍標(biāo)志位
- MAIN:
- JNB P1.2,NEXT1 ;判斷是否左轉(zhuǎn),光電對管出軌跡,就繼續(xù)判斷。
- JNB P1.3,NEXT2 ;判斷是否右轉(zhuǎn),光電對管出軌跡,就右轉(zhuǎn)。
- ;=========================== 小車直走===================================
- NEXT4:
- SETB P1.6 ;二個光電對管都在軌跡內(nèi),小車就向前直走。
- SETB P1.5
- SETB P1.4
- SETB P3.5
- SETB P3.4
- JMP MAIN1
-
- NEXT1:
- JB P1.3,NEXT3
- ;=========================== 小車后退===================================
- SETB P1.7 ;兩個光電對管都出了軌跡就后退。
- CLR P1.6
- SETB P1.5
- SETB P1.4
- CLR P3.5 ;亮后退指示燈
- CLR P3.4
- ;=========================== 小車左轉(zhuǎn) ==================================
- NEXT3:
- SETB P1.6
- CLR P1.4
- SETB P1.5
- SETB P3.5
- CLR P3.4 ;亮左轉(zhuǎn)指示燈
- JMP MAIN1
- ;=========================== 小車右轉(zhuǎn) ==================================
- NEXT2:
- SETB P1.6
- SETB P1.4
- CLR P1.5
- CLR P3.5 ;亮右轉(zhuǎn)指示燈
- SETB P3.4
- JMP MAIN1
- ;=============================調(diào)節(jié)PWM==================================
- MAIN1:
- JNB F0,MAIN
- CLR F0
- DJNZ R1,LL
- MOV R1,#3
- SETB P1.7
- SETB P1.6
- JMP MAIN
- LL:
- CLR P1.7
- SETB P1.6
- JMP MAIN
- ;==========================定時器中斷0服務(wù)子程序=======================
- ;輸入: TL0、TH0
- ;輸出:無
- ;實(shí)現(xiàn)的功能:影響標(biāo)志位F0
- ;======================================================================
- IN_T1:
- MOV TL0,#0D4H ;定時0.9MS
- MOV TH0,#0FEH
- SETB F0
- RETI
- ;==========================延時子程序==================================
- ;輸入: 無
- ;輸出:無
- ;實(shí)現(xiàn)的功能:延時一段時間
- ;======================================================================
- DELAY:
- MOV R7,#200
- L:
- MOV R6,#200
- DJNZ R6,$
- DJNZ R7,L
- RET
- ;===========================程序結(jié)束===================================
- END
復(fù)制代碼
|
|