¿Cómo se relaciona el código C con la salida hexadecimal en términos de asignación de pines para ATmega16?

0

Así que escribí un código que interconecta un LCD gráfico con ATmega16 y muestra algunos caracteres personalizados en él. Este es un tema que estoy haciendo en mi universidad. Me gustaría compartir el código con mis compañeros pero no quiero compartir mi código (quiero que aprendan por sí mismos). Lo que pensé era compartirles mis archivos hex que podrían grabar en su microcontrolador usando avrstudio. Solo tendrían que cambiar una asignación de pin para que el mensaje se muestre en sus LCD (y sabrían si su hardware funciona).

Ahora tengo un poco de conocimiento sobre el uso del taller hexadecimal para editar archivos hex para PSP y me preguntaba si podría hacerlo utilizando ese método. Así que empecé a buscar valles hexagonales para ese pin en particular.

Mi selección de chip LCD (en mi PCB) es PB2 y quiero que otros solo cambien esta asignación. Intenté compilar varias versiones del código en formatos hexadecimales para encontrar las variaciones en el código y descubrí tres líneas que se modificaron.

PB3
:1000E000A398A5980895C398C19A0E945B00C79AE7
:1000F000C39A81E090E00895C398C1980E945B0084
:10010000C79AC39A81E090E0089582EE0E947C0035

PB2
:1000E000A398A5980895C298C19A0E945B00C79AE8
:1000F000C29A81E090E00895C298C1980E945B0086
:10010000C79AC29A81E090E0089582EE0E947C0036

PB1
:1000E000A398A5980895C198C19A0E945B00C79AE9
:1000F000C19A81E090E00895C198C1980E945B0088
:10010000C79AC19A81E090E0089582EE0E947C0037

PC2
:1000E000A398A5980895AA98C19A0E945B00C79A00
:1000F000AA9A81E090E00895AA98C1980E945B00B6
:10010000C79AAA9A81E090E0089582EE0E947C004E

Me preguntaba cómo AVRStudio asigna las direcciones de pin (o algo en esos términos) al convertir el código. Cualquier ayuda en este asunto sería muy apreciada. Además, esta es la primera vez que utilizo Stackexchange, espero que lo esté haciendo de la manera correcta.

Gracias! Sahil

    
pregunta Sahil Khanna

1 respuesta

1

Como se explica en la hoja de datos, la salida se realiza estableciendo las posiciones de los bits en DDRx y cambiando los bits en PORTx al valor deseado. Como se indica en la hoja de datos, DDRB es el registro 0x17, DDRC es 0x14, PORTB es 0x18 y PORTC es 0x15. Uso de esa información junto con el manual de instrucciones AVR y un desmontaje de El archivo .elf compilado le ayudará a encontrar qué bytes cambiar a qué valores.

    
respondido por el Ignacio Vazquez-Abrams

Lea otras preguntas en las etiquetas