|
電路原理圖如下:
1112.jpg (130.53 KB, 下載次數(shù): 73)
下載附件
這是小車的protus仿真原理圖
2019-1-13 11:45 上傳
;----------------------------------------------------
INCLUDE"F:\MPASM Suite\P16F877A.INC"
TMR0B EQU 029H ;10MS
;-------------------------------------------------
;主程序
;--------------------------------------------------
ORG 0000H
NOP
BSF STATUS,RP0
MOVLW 00H
MOVWF TRISC
MOVLW B'11110000' ;定義RD口的高4位為前置四個(gè)紅外光反信號(hào)的輸入,低四位作為輸出控制電機(jī)IN1/IN2/IN3/IN4
MOVWF TRISD
MOVLW 07H ;TMR0定時(shí)器分頻比為1:256
MOVWF OPTION_REG
GOTO ST
;--------------------------------------------
;初始化PWM1、2
;--------------------------------------------
ST BSF STATUS,RP0
MOVLW 0FFH
MOVWF PR2
BCF STATUS,RP0
MOVLW 4DH
MOVWF CCPR1L
MOVWF CCPR2L
CALL WIDTH3030
MOVLW 0CH
MOVWF CCP1CON ;CCPxX、CCPxY置零
MOVWF CCP2CON
;CLRF T2CON ;定義定時(shí)器TMR2工作方式為1:1分頻
MOVLW B'00000011' ;定義定時(shí)器TMR2工作方式 1:16分頻
MOVWF T2CON
BSF T2CON,TMR2ON ;啟動(dòng)TMR2定時(shí)
CALL TEST1
GOTO $-1
; MOVLW 0FFH
; MOVWF PR2
; MOVLW 0CH
; MOVWF CCP1CON
; MOVWF CCP2CON
; MOVLW B'00000011' ;定義定時(shí)器TMR2工作方式 1:16分頻
; MOVWF T2CON
;CALL WIDTH3030 ;設(shè)置脈寬為30 30
;BSF T2CON,TMR2ON
; CALL TEST1
; GOTO $-1
;----------------------------------------------
;脈寬控制調(diào)制
;---------------------------------------------
WIDTH3030 MOVLW 30H ;CCP1設(shè)置為30%占空比
MOVWF CCPR1L
MOVLW 28H ;CCP2設(shè)置為30%占空比
MOVWF CCPR2L
RETURN
WIDTH2040 MOVLW 7H ;CCP1設(shè)置為20%占空比
MOVWF CCPR1L
MOVLW 48H ;CCP2設(shè)置為40%占空比
MOVWF CCPR2L
RETURN
WIDTH4020 MOVLW 51H ;CCP1設(shè)置為40%占空比
MOVWF CCPR1L
MOVLW 7H ;CCP2設(shè)置為20%占空比
MOVWF CCPR2L
RETURN
;---------------------------------------------
; 光反數(shù)據(jù)放入26H
;--------------------------------------------
TEST1 BCF STATUS,RP0 ;返回體0
MOVF PORTD,W
MOVWF 25H ;將檢測(cè)信息放入25H
MOVF 25H,W
MOVWF 26H ;將檢測(cè)信息轉(zhuǎn)至中間變量
SWAPF 26H,F
;----------------------------------------------------------
;檢驗(yàn)光反,控制轉(zhuǎn)向
;--------------------------------------------------------
BTFSC 26H,2
GOTO DET2 ;左側(cè)廣反輸出為1時(shí),未檢測(cè)到黑線,轉(zhuǎn)而檢測(cè)右側(cè)輸出
GOTO DET1 ;左側(cè)廣反輸出為0時(shí),檢測(cè)到黑線,轉(zhuǎn)而檢測(cè)右側(cè)輸出
DET1 BTFSC 26H,1
GOTO RIGHT111 ;0X1: 右拐
GOTO RUN111 ;0X0:停止
DET2 BTFSC 26H,1
GOTO RUN111 ;1X1時(shí),直行
GOTO LEFT111 ;1X0時(shí),左拐
;----------------
;直行子程序
;---------------
RUN111 BCF STATUS,RP0
BCF PORTC,6 ;直行,兩燈都不亮
BCF PORTC,7
CALL WIDTH3030
MOVF PORTD
MOVWF 27H
MOVLW 0F0H
ANDWF 27H,F
MOVLW B'00001010' ;IN1:1 IN2:0 IN4:1 IN3:0 : 直行
ADDWF 27H,W
MOVWF PORTD
GOTO LEGEND1
;---------------------------
;停止子程序
;---------------------------
STOP111 BCF STATUS,RP0
BSF PORTC,6 ;直行停止,兩燈都滅
BSF PORTC,7
MOVF PORTD
MOVWF 27H
MOVLW 0F0H
ANDWF 27H,F
MOVLW B'00000000' ;IN1:0 IN2:0 IN4:0 IN3:0 : 停止
ADDWF 27H,W
MOVWF PORTD
GOTO LEGEND1
;--------------------------------
;左拐子程序
;--------------------------------
LEFT111 BCF STATUS,RP0
BSF PORTC,7 ; 右拐,亮右轉(zhuǎn)向燈
BCF PORTD,6
CALL WIDTH2040
MOVF PORTD
MOVWF 27H
MOVLW 0F0H
ANDWF 27H,F
MOVLW B'00001010' ;IN1:0 IN2:0 IN4:1 IN3:0 : 左拐
ADDWF 27H,W
MOVWF PORTD
GOTO LEGEND1
;---------------------------------
;右拐子程序
;---------------------------------
RIGHT111 BCF STATUS,RP0
BSF PORTC,6 ; 右拐,亮右轉(zhuǎn)向燈
BCF PORTD,7
CALL WIDTH4020
MOVF PORTD
MOVWF 27H
MOVLW 0F0H
ANDWF 27H,F
MOVLW B'00001010' ;IN1:1 IN2:0 IN3:0 IN4:0 : 右拐
ADDWF 27H,W
MOVWF PORTD
LEGEND1 RETURN
;---------------------------------------
;延時(shí)子程序
;---------------------------------------
DELAY10MS BCF INTCON,T0IF
MOVLW TMR0B
MOVWF TMR0
LP1 BTFSS INTCON,T0IF
GOTO LP1
RETURN
;------------------------------------------------------
END
;---------------------------------------------------
|
評(píng)分
-
查看全部評(píng)分
|