0

私は PIC16F628A を持っていて、その PIC のピンに 2 つのモーターを接続しています。ピン RB0 と RB1 は右側のモーターに接続されています。ピン RB2 と RB3 は左側のモーターに接続されています。.pbp から .hex へのコンパイラとして MPLAB を使用しています。これらのモーターの 1 つ (例: 左のモーター) を動かす PIC BASIC プログラム (.pbp) を書きたいと思います ... このような簡単なコード セグメントを書きました。

TRISB= %11110000

PORTB.2=0 
PORTB.3=0

MAINLOOP:

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

GOTO MAINLOOP

END

コンパイラはそれを正しくコンパイルします.hexファイルを正常に書き込んだ後、豚を配置し、それを開始します.何も見えません...! 私はこのプログラミング言語について本当に素人なので、モーターを実行するために他のコード セグメントを記述する必要があるかどうかを尋ねたいだけです。または、以前にそのようなプロジェクトを行った人はいますか?

4

1 に答える 1

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
于 2014-09-26T02:51:53.343 に答える