TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: center101 en 02 de Marzo de 2014, 04:26:36
-
.cseg
.org 0
ldi r16,0xff
out DDRB,r16
ldi r16,0x1
lazo:
out PORTB,r16
ldi r17,0x50
ciclo_externo:
ldi r18,0xff
ciclo_interno:
dec r18
cpi r18,0
brne ciclo_interno
dec r17
cpi r17,0
brne ciclo_externo
rol r16
rjmp lazo
Lo que hace el programa en teroía es que va prendiendo el display en 1, 0,1, etc .... sucesivamente, y para que fuera visible se hizo un paro ( un tiempo de interupcion con cilcos anidados) la duda es por que unicamente lo hace una vez, se pone en 1 y luego en 0 y nadamas.
Ya se probo en la tarje Mehenil y solo hace el cambio una vez, al conectar y desconectar la fuente, la pregunta es por que una vez, podrian ayudarme por favor una explicación. De antemano, gracias, y espero y me puedas ayudar.
-
en lugar de hacer rol r16, me parece que podrías hacer una xor entre r16 y el valor inmediato 0x01. Esa es una manera de alternar el valor entre 0 y 1.
Ej:
.cseg
.org 0
ldi r16,0xff
out DDRB,r16
ldi r16,0x1
lazo:
out PORTB,r16
ldi r17,0x50
ciclo_externo:
ldi r18,0xff
ciclo_interno:
dec r18
cpi r18,0
brne ciclo_interno
dec r17
cpi r17,0
brne ciclo_externo
ldi r18,0x01
eor r16,r18
rjmp lazo
Saludos