hola estoy empezando a programar con el avr studio 4 un atmega88pa y para un programa que utiliza lógica booleana a la salida debo tener 3 led que enciendan en diferentes circunstancias ¿hay alguna manera de sacar los datos por un pin especifico del puerto? esto es por que en lugar de que me prendan 2 led al mismo tiempo me prende uno el doble de tiempo
nota: adjunto el programa en .doc
nota: adjunto el programa en .doc
Código:
.include "m88pdef.inc"
.cseg
.org 0
rjmp reset
reset:ldi r16, low(ramend)
out spl, r16 ;configuracion del stack pointer
ldi r16, high(ramend)
out sph, r16
ser r16
out ddrb,r16 ;configuracion del puerto b como salida
ser r16
out ddrc,r16
ldi r16,$0f
out ddrd,r16 ;configuracion del puerto d como entrada
inicio: nop
in r16, pind ;capturar datos
mov r17,r16
mov r18,r16
mov r19,r16
ldi r20,1
and r20,r16
ror r17
ldi r21,1
and r21,r17
ror r18
ror r18
ldi r22,1
and r22,r18
ror r19
ror r19
ror r19
ldi r23,1
and r23,r19
mov r24,r20
mov r25,r21
mov r26,r22
mov r27,r23
com r24
com r25
com r26
com r27
ldi r16,1
and r16,r24
ldi r17,1
and r17,r25
ldi r18,1
and r18,r26
ldi r19,1
and r19,r27
;ldi r28,$02
;out ddrb,r28
mov r0,r19
and r0,r21
and r0,r20
out portb, r0
;rcall tiempo
mov r1,r23
and r1,r18
;ldi r28,4
;out ddrb,r28
out portc, r1
;rcall tiempo
mov r2,r21
and r2,r16
;ldi r28,8
;out ddrb,r28
out portd, r2
;rcall tiempo
rjmp inicio
tiempo: ldi r24,$ff
ldi r25,$ff
ldi r26,$01
aqui: dec r24
brne aqui
dec r25
brne aqui
dec r26
brne aqui
ret
Adjuntos
Última edición por un moderador: