- ;======================================================================
- ;編寫者:蘭建文 時間:2009-7-24 地點:源點IC嵌入式培訓機構
- ;多功能小車 (小車能尋跡、壁障、無線遙控、電機調速)
- ;使用ATMEL89C2051單片機
- ;P1.7控制后輪前進方向 P1.3----循跡左
- ;P1.6控制后輪后退方向 P1.2----循跡右
- ;P1.5控制前輪左轉方向 P3.1----蜂鳴器
- ;P1.4控制前輪右轉方向 P3.5----左轉指示燈
- ;P3.2壁障紅外檢測 P3.4----右轉指示燈
- ;P3.0無線遙控檢測 P3.3控制555產生38KHZ紅外線
- ;定時器中斷0用于調節電機速度,調節PWM
- ;===========================系統程序===================================
- 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 設定時初值
- MOV TH0,#0FEH
- MOV IE,#82H ;開總中斷與定時器中斷
- SETB TR0 ;開定時器
- MOV R1,#3 ;設置占空比
- SETB F0 ;節拍標志位
- MAIN:
- JNB P1.2,NEXT1 ;判斷是否左轉,光電對管出軌跡,就繼續判斷。
- JNB P1.3,NEXT2 ;判斷是否右轉,光電對管出軌跡,就右轉。
- ;=========================== 小車直走===================================
- NEXT4:
- SETB P1.6 ;二個光電對管都在軌跡內,小車就向前直走。
- 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
- ;=========================== 小車左轉 ==================================
- NEXT3:
- SETB P1.6
- CLR P1.4
- SETB P1.5
- SETB P3.5
- CLR P3.4 ;亮左轉指示燈
- JMP MAIN1
- ;=========================== 小車右轉 ==================================
- NEXT2:
- SETB P1.6
- SETB P1.4
- CLR P1.5
- CLR P3.5 ;亮右轉指示燈
- SETB P3.4
- JMP MAIN1
- ;=============================調節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服務子程序=======================
- ;輸入: TL0、TH0
- ;輸出:無
- ;實現的功能:影響標志位F0
- ;======================================================================
- IN_T1:
- MOV TL0,#0D4H ;定時0.9MS
- MOV TH0,#0FEH
- SETB F0
- RETI
- ;==========================延時子程序==================================
- ;輸入: 無
- ;輸出:無
- ;實現的功能:延時一段時間
- ;======================================================================
- DELAY:
- MOV R7,#200
- L:
- MOV R6,#200
- DJNZ R6,$
- DJNZ R7,L
- RET
- ;===========================程序結束===================================
- END
復制代碼
|