欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 基于pic單片機的循跡小車設計(匯編語言) [打印本頁]

作者: wangcongliang    時間: 2019-1-13 11:46
標題: 基于pic單片機的循跡小車設計(匯編語言)
電路原理圖如下:


;----------------------------------------------------
                         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位為前置四個紅外光反信號的輸入,低四位作為輸出控制電機IN1/IN2/IN3/IN4
                                                MOVWF TRISD
                       MOVLW 07H     ;TMR0定時器分頻比為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                         ;定義定時器TMR2工作方式為1:1分頻
                        MOVLW B'00000011'                ;定義定時器TMR2工作方式        1:16分頻
                                           MOVWF T2CON
                                                 BSF T2CON,TMR2ON        ;啟動TMR2定時
                        CALL TEST1
                        GOTO $-1

                       ; MOVLW 0FFH
                      ;  MOVWF PR2
                       ; MOVLW 0CH
                      ;  MOVWF CCP1CON
                       ; MOVWF CCP2CON
                           ; MOVLW B'00000011'                ;定義定時器TMR2工作方式        1:16分頻
                                   ;        MOVWF T2CON
                                        ;CALL WIDTH3030           ;設置脈寬為30 30         
                        ;BSF T2CON,TMR2ON  
                      ;  CALL TEST1
                      ;  GOTO $-1
;----------------------------------------------
;脈寬控制調制
;---------------------------------------------
WIDTH3030                            MOVLW 30H                ;CCP1設置為30%占空比
                        MOVWF CCPR1L  
                                            MOVLW 28H                 ;CCP2設置為30%占空比
                        MOVWF CCPR2L  
                        RETURN
WIDTH2040               MOVLW 7H                ;CCP1設置為20%占空比
                        MOVWF CCPR1L  
                                            MOVLW 48H                 ;CCP2設置為40%占空比
                        MOVWF CCPR2L  
                        RETURN
WIDTH4020               MOVLW 51H                ;CCP1設置為40%占空比
                        MOVWF CCPR1L  
                                            MOVLW 7H                 ;CCP2設置為20%占空比
                        MOVWF CCPR2L  
                        RETURN

;---------------------------------------------
;  光反數據放入26H  
;--------------------------------------------
TEST1                    BCF STATUS,RP0      ;返回體0
                                         MOVF PORTD,W                 
                         MOVWF 25H         ;將檢測信息放入25H
                         MOVF 25H,W
                                             MOVWF 26H                   ;將檢測信息轉至中間變量
                                             SWAPF 26H,F
;----------------------------------------------------------
;檢驗光反,控制轉向
;--------------------------------------------------------
                         BTFSC 26H,2
                                                 GOTO DET2          ;左側廣反輸出為1時,未檢測到黑線,轉而檢測右側輸出
                                             GOTO DET1                        ;左側廣反輸出為0時,檢測到黑線,轉而檢測右側輸出
DET1                                     BTFSC 26H,1
                                                 GOTO RIGHT111                 ;0X1: 右拐               
                             GOTO RUN111                ;0X0:停止                                          
DET2                             BTFSC 26H,1                 
                                             GOTO RUN111                  ;1X1時,直行
                         GOTO LEFT111                        ;1X0時,左拐
                              
;----------------
;直行子程序
;---------------
                 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                ; 右拐,亮右轉向燈
                        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                       ; 右拐,亮右轉向燈
                        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
;---------------------------------------
;延時子程序
;---------------------------------------
DELAY10MS             BCF INTCON,T0IF
                    MOVLW TMR0B
                    MOVWF TMR0
                LP1 BTFSS INTCON,T0IF
                    GOTO LP1
                   RETURN
;------------------------------------------------------
                      END   
;---------------------------------------------------   






歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1