Desplaza una luz en el Puerto B de derecha a izquierda y de izquierda a derecha.
-Comandos de rotación LSL y LSR
-Subrutina de retardo
-Calibrado para cristal interno de 8 MHZ
Esquema de conexión:
Programa en Assembler:
;----------------------------------------------------------- ;Autor: LONELY113 ; http://lonely113.blogspot.com ; ;Programa para desplazamiento de luz en el puerto B ;Desplazamiento cada 1 s (Para oscilador interno de 8 MHz). ;Salidas: Puerto B (PB0-PB7) ;----------------------------------------------------------- ;Para reloj interno de 8 MHz .nolist .include "m8def.inc" .list .device atmega8 .org 0x0000 .def COUNT1=r20 .def COUNT2=r21 .def COUNT3=r22 .def NUMBER=r4 .def TEMP=r17 ; Inicializacion de stack ldi r16,LOW(RAMEND) out SPL,r16 ldi r16,HIGH(RAMEND) out SPH,r16 ; Fin inicializacion de stack ; Inicio de programa ldi r16,0xFF ; Puerto B como salida out DDRB,r16 clr r16 out PORTB,r16 ; Borrar PORTB ldi r16,0x07 mov NUMBER,r16 ; Desplazar 7 posiciones ldi TEMP,0x01 ; '00000001'b out PORTB,TEMP FIRST: rcall DELAY lsl TEMP out PORTB,TEMP dec NUMBER brne FIRST ; Desplaza 7 veces a la izquierda ldi r16,0x07 mov NUMBER,r16 SECOND: rcall DELAY lsr TEMP out PORTB,TEMP dec NUMBER brne SECOND ; Desplaza 7 veces a la derecha ldi r16,0x07 mov NUMBER,r16 rjmp FIRST ; Bucle infinito ; Subrutinas DELAY: ldi COUNT1,0xFF ; Retardo de 1 segundo ldi COUNT2,0xFF ldi COUNT3,0x29 LOOP: dec COUNT1 brne LOOP ldi COUNT1,0xFF dec COUNT2 brne LOOP ldi COUNT1,0xFF ldi COUNT2,0xFF dec COUNT3 brne LOOP ret
Archivos de programa:
Descargar
No hay comentarios:
Publicar un comentario