Você está na página 1de 2

#include "p16f628a.

inc"

; CONFIGURAÇÃO
; __config 0x3F1A
__CONFIG _FOSC_INTOSCIO & _WDTE_OFF & _PWRTE_OFF & _MCLRE_OFF & _BOREN_OFF & _LVP_OFF &
_CPD_OFF & _CP_OFF

;CONSTANTES INICIAS

DCounter1 EQU 0X0C


DCounter2 EQU 0X0D

#define _C STATUS,0
#define _Z STATUS,2

ORG 00H

; INICIO

BCF STATUS,RP1
BSF STATUS,RP0 ; TROCAR DE BANCO
MOVLW 0X00
MOVWF TRISA ; LIMPAR TRISA
MOVWF TRISB ; LIMPAR TRISB
MOVWF TRISC ; LIMPAR TRISC
MOVWF TRISD ; LIMPAR TRISD
BCF STATUS,RP0 ; MUDAR DE BANCO

CLRF PORTB ; LIMPAR TODAS AS VARIAVEIS E PORTAS


CLRF PORTD
CLRF COUNTA
CLRF COUNTB
GOTO START ; VOLTAR PRO INICIO DO PROGAMA

START
MOVLW B'00001111' ; INDICAR O COMEÇO DA ROTAÇÃO
MOVWF PORTB
CALL RODAR_DIREITA
MOVLW B'11110000' ; INDICAR FIM DA ROTAÇÃO
MOVWF PORTB
MOVLW B'00001111' ; INDICAR NOVA ROTAÇÃO
MOVWF PORTB
CALL RODAR_ESQUERD
MOVLW B'11110000' ; FINAL DA NOVA ROTAÇÃO
MOVWF PORTB
GOTO START ; LOOP INFINITO

; ROTAÇÃO

MOVLW B'00000100'
MOVWF PORTD
CALL DELAY ; CHAMA DELAY

; SERVO DELAY

MOVLW 0X75
MOVWF DCounter1
MOVLW 0X21
MOVWF DCounter2
LOOP
DECFSZ DCounter1, 1
GOTO LOOP
DECFSZ DCounter2, 1
GOTO LOOP
RETURN

; CONTADOR PARA O DELAY

D0
MOVWF COUNTA
D1
MOVLW B'00100000'
MOVWF COUNTB
DELAY
DECFSZ COUNTB,F
GOTO DELAY
DECFSZ COUNTA,F
GOTO DELAY
RETURN

END

Você também pode gostar