2013-01-06 1 views
0

나는 PIC16F628A를 가지고 있고, 그 PIC의 핀에 2 개의 모터를 연결했다. RB0과 RB1 핀은 오른쪽 모터에 연결됩니다. RB2와 RB3 핀은 왼쪽 모터에 연결됩니다. MPLAB을 .pbp에서 .hex까지 컴파일러로 사용하고 있습니다. 나는이 모터들 중 하나를 움직일 PIC BASIC 프로그램 (.pbp)을 쓰고 싶다. (예 : 왼쪽) : 나는 방금 이런 간단한 코드 세그먼트를 작성했다.PIC16F628A에 연결된 모터를 가동하고 싶습니다.? PIC 기본 코드가 필요합니까?

TRISB= %11110000 

PORTB.2=0 
PORTB.3=0 

MAINLOOP: 

PORTB.2=1 
PAUSE 50 
PORTB.3=1 
PAUSE 50 

GOTO MAINLOOP 

END 

16 진수 파일을 성공적으로 레코딩 한 후 컴파일러에서 올바르게 컴파일 한 다음 돼지를 놓고 시작합니다. 아무 것도 볼 수 없습니다 ...! 저는이 프로그래밍 언어에서 정말 아마추어입니다. 모터를 실행하기 위해 다른 코드 세그먼트를 작성해야합니까? 아니면 전에 그런 종류의 프로젝트를 가진 사람이 있습니까?

+0

가능한 중복 [내가 PIC BASIC 언어와 MPLAB를 사용하여 PIC16F628A에 연결 mototrs를 이동할 수 있는가? (http://stackoverflow.com/questions/14181961/how-can-i-move-mototrs- connected-to-pic16f628a-pic-basic-language-and-mpl) –

+0

동일한 질문을 여러 번 게시하지 마십시오. –

+0

정말 도움이 필요합니다. kavat – Jonah

답변

1
list p=16F628A 
    include <P16F628A.INC> 

    cblock 0x20 
     COUNT1 
     COUNT2 
    endc 

    org 0x00 

init movlw .50 
     movwf COUNT1 
     movwf COUNT2 
     ;;;SET PWM FREQUENCY;;; 
     bank1   ;SELECT BANK 01 
     movlw D'128' ;SET PR2 TO 128 DECIMAL SO THE PWM PERIOD = 2064uS => PWM FREQUENCY = 484Hz 
     movwf PR2 
     bank0   ;SELECT BANK 00 
     clrf CCPR1L ;SET PWM STARTING DUTY CYCLE;;; 
     comf CCPR1L 
     movlw B'00001100' ;SET PWM MODE, BITS 5 AND 4 ARE THE TWO LSBs OF THE 10BIT DUTY CYCLE REGISTER (CCPR1L:CCP1CON<5:4>) 
     movwf CCP1CON  ;SET PWM PIN TO OUTPUT MODE;;; 
     bank1    ;SELECT BANK 01 
     bcf TRISB, 3  ;SET RB3 AS OUTPUT, TO USE FOR PWM 
     bank0    ;SELECT BANK 00 
     movlw B'00000010' ;SET TIMER 2 PRESCALE VALUE;;;PRESCALE = 16 SO THE PWM PERIOD = 2064uS => PWM FREQUENCY = 484Hz 
     movwf T2CON 
     clrf TMR2   ;CLEAR TIMER 2 MODULE;;; 
     bsf T2CON, TMR2ON ;ENABLE TIMER 2 MODULE;;; 

main call DELAY 
     goto main 


DELAY 
loop1  decfsz COUNT1,1 
      goto loop1 
      decfsz COUNT2,1 
      goto loop1 
      return 
      end 
관련 문제