您当前的位置:五五电子网电子知识单片机-工控设备PIC单片机pic16f874步进电机程序 正文
pic16f874步进电机程序

pic16f874步进电机程序

点击数:7516 次   录入时间:03-04 11:47:25   整理:http://www.55dianzi.com   PIC单片机
loop:
    b        loop


; --==*[ sendByte - ROUTINE ]*==--
sendByte:                    ; send byte (which is stored in W)
sendByte_l0:                    ; wait until new data arrived in txreg
    btfss    PIR1, TXIF            ; (inDICated via transmit interrupt flag bit: txif)
    b        sendByte_l0
sendByte_l1:
    MOVwf    TXREG                ; send new data
    return


; --==*[ INTERRUPT HANDLING ROUTINE ]*==--
int_handler:
    btfsc    RCSTA, OERR            ; overflow error occured, handle it
    b    err_Overflow
    btfsc    RCSTA, FERR            ; framing error occured, handle it
    b    err_Frame
    btfsc    PIR1, RCIF            ; receive interrupt: rcif
    b    int_USART_receive
    btfsc    INTCON, RBIF            ; pin interrupt: rbif
    b    int_RB_change
    btfsc    INTCON, T0IF            ; tmr0 interrupt: t0if
    b    int_timer0_reset
    retfie

int_RB_change:
    incf    tickL, 1            ; increment ticks (low byte)
    btfsc    STATUS, Z
    incf    tickH, 1            ; increment ticks on overflow (high byte)
    incf    winkelL, 1            ; same as tick, but will not be reset (eichungswert)
    btfsc    STATUS, Z
    incf    winkelH, 1
    MOVwf    wtemp1                ; save W
    MOVfw    PORTB
    MOVwf    newb                ; newb = PORTB
    MOVlw    b’00110000’            ; and mask
    andwf    oldb, 1                ; reset all bits except 4 and 5
    andwf    newb, 1                ; reset all bits except 4 and 5
    clrf    quad                ; reset quad value
    clrw                    ; oldb == 00 ?
    subwf    oldb, W
    bz    o00
    MOVlw    b’00010000’            ; oldb == 01 ?
    subwf    oldb, W
    bz    o01
    MOVlw    b’00100000’            ; oldb == 10 ?
    subwf    oldb, W
    bz    o10
    b    o11                ; else, oldb == 11
o00:
    MOVlw    b’00010000’            ; newb == 01 ?
    subwf    newb, W
    bnz    quit
    bsf    quad, 7                ; left
    b    quit
o01:
    MOVlw    b’00110000’            ; newb == 11 ?
    subwf    newb, W
    bnz    quit
    bsf    quad, 7                ; left
    b    quit
o10:
    clrw                    ; newb == 00 ?
    subwf    newb, W
    bnz    quit
    bsf    quad, 7                ; left
    b    quit
o11:
    MOVlw    b’00100000’            ; newb == 10 ?
    subwf    newb, W
    bnz    quit
    bsf    quad, 7                ; left

上一页  [1] [2] [3] [4] [5] [6]  下一页


本文关键字:步进电机  程序  PIC单片机单片机-工控设备 - PIC单片机