ATMEGA32 LED BLINKER Problema con el código de ensamblaje

-1

Probé el siguiente código para un problema simple de parpadeo del led en ATMega32.

INCLUDE "M32DEF.INC"

SBI DDRC,5
LDI R16,0xFF
OUT PORTC,R16

AGAIN:LDI R19,255
LOOP1:LDI R18,255
LOOP2:LDI R20,5
LOOP3:NOP
NOP
NOP
NOP
NOP
DEC R20
BRNE LOOP3
DEC R18
BRNE LOOP2

DEC R19
BRNE LOOP1

COM R16
OUT PORTC,R16

RJMP AGAIN

De acuerdo con el código, la salida se establece en PortC-5. La hoja de datos dice que funciona en el pin 27. La simulación en Proteus funciona bien. Sin embargo, después de grabar el código en el chip, la salida real viene en el pin 28.

El chip que estoy usando es un Atmel ATMEGA32A PU 1527. Algunas de las otras personas que lo intentaron también tenían el mismo pin 29. ¿Por qué está sucediendo? Soy nuevo en este campo, así que ayúdame aquí.

    
pregunta ObnoxiousPerson1

1 respuesta

0
COM R16

Esto complementa el registro completo . Al emitir esto, se voltean todos los 8 bits en PORTC . Considere usar EOR para voltear solo el bit único en el registro en su lugar.

    
respondido por el Ignacio Vazquez-Abrams

Lea otras preguntas en las etiquetas