找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4054|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

基于pic單片機(jī)的循跡小車設(shè)計(jì)(匯編語(yǔ)言)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
電路原理圖如下:


;----------------------------------------------------
                         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)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表