Autor Tema: Disculpa la interrupción,y bueno desearía pedirte ayuda con este codigo en ensam  (Leído 1650 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado center101

  • PIC10
  • *
  • Mensajes: 4


.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.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
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
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.


 

anything