Desplaza una luz en el Puerto B de derecha a izquierda y de izquierda a derecha.
-Comandos de rotación RRF y RLF
-Subrutina de retardo
Esquema de conexión:
Prueba:
Programa en Assembler:
;---------------------------------------------------------
;Autor: LONELY113
; http://lonely113.blogspot.com
;
;Programa para iluminar leds secuencuencialmente
;La luz se desplaza de RB0 a RB7 y viceversa
;Salidas: PUERTOB
;---------------------------------------------------------
include "p16f84a.inc"
list P=16f84a
__CONFIG _WDT_OFF & _XT_OSC
COUNT1 equ 0x0C
COUNT2 equ 0x0D
COUNT3 equ 0x0E
TIMES equ 0x0F
org 0x00 ; Inicio de programa
bsf STATUS,5 ; Inicio de configuracion E/S
clrf PORTA
clrf PORTB ; Puerto B como salida
bcf STATUS,5 ; Fin configuracion E/S
clrf PORTB
bcf STATUS,0
bsf PORTB,0 ; PORTB=00000001
call DELAY ; Llamada a subrutina DELAY
BEGIN: movlw 0x07
movwf TIMES
LEFT: rlf PORTB,1 ; Rota 7 veces a la izquierda
call DELAY
decfsz TIMES
goto LEFT
movlw 0x07
movwf TIMES
RIGHT: rrf PORTB,1 ; Rota 7 veces a la derecha
call DELAY
decfsz TIMES
goto RIGHT
goto BEGIN ; Bucle infinito
;Subrutinas
DELAY movlw 0xFF ; Subrutina de retardo
movwf COUNT1 ; 256x256=65536 cuentas
movwf COUNT2
movlw 0x20
movwf COUNT3
LOOP: decfsz COUNT1,1 ; Decrementa COUNT1
goto LOOP ; Salta si COUNT1=0
movlw 0xFF
movwf COUNT1 ; COUNT1=FF
decfsz COUNT2,1 ; Decrementa COUNT2
goto LOOP ; Salta se COUNT2=0
movlw 0xFF
movwf COUNT1
movwf COUNT2
decfsz COUNT3,1
goto LOOP
return ; Retorno de subrutina
end ; Fin de programa
****Programa en Pic Basic (Microcode)****
'****************************************************************
'* Name : Secuencial.BAS *
'* Author : LONELY113 *
'* Notice : Copyright (c) 2011 LONELY113] *
'* : All Rights Reserved *
'* Date : 12/05/2011 *
'* Version : 1.0 *
'* Notes : PIC16F84a *
'* : Leds en Puerto B *
'****************************************************************
@ __config _HS_OSC & _WDT_OFF
DEFINE OSC 10 '10 MHz
i VAR BYTE
trisb=$00 'Puerto B como salida
loop1:
portb=$01 'PORTB=00000001
PAUSE 1000 'Retardo de 1 segundo
FOR i = 1 TO 7
portb=portb<<1 'Desplazar a la izquierda 7 veces
PAUSE 1000 'Retardo de 1 segundo
NEXT i
FOR i = 1 TO 7 'Desplazar a la derecha 7 veces
portb=portb>>1
PAUSE 1000 'Retardo de 1 segundo
NEXT i
GOTO loop1
END
Archivos .ASM y .HEX:
muy bueno, saludos
ResponderEliminar