Paso 2: Programa de prueba
Debemos primero escribir un programa de prueba rápida para asegurarse de que la configuración está haciendo lo que queremos.
;************************************ ; written by: 1o_o7 ; date: <2014|11|03> ; version: 1.0 ; file saved as: analyzer.asm ; for AVR: atmega328p ; clock frequency: 16MHz ;************************************
; Program funcion:---------------------- ; analyzes the bits stored in a register ;---------------------------------------
.nolist .include "./m328Pdef.inc" .list
.def temp = r16
.org 0x0000 rjmp Init
Init: ser temp out DDRB,temp out DDRC,temp clr temp out PortB,temp out PortC,temp
main: ldi r20,0b11111111 ; register to analyze ; ldi r20,0b10101010 ; ldi r20,0b01010101 rcall analyze rjmp main
analyze: clr temp out portb,temp out portc,temp sbrc r20,7 sbi portb,1 sbrc r20,6 sbi portb,2 sbrc r20,5 sbi portb,3 sbrc r20,4 sbi portb,4 sbrc r20,3 sbi portc,1 sbrc r20,2 sbi portc,2 sbrc r20,1 sbi portc,3 sbrc r20,0 sbi portc,4 ret
Como se puede ver, simplemente estamos probando los LEDs aquí: que todos trabajan y que están conectados correctamente. He cargado 3 diferentes patrones de bits en el registro r20 y luego de salida a los LEDs para asegurarse de que los LEDs representan correctamente el byte que se encuentra en dicho registro.
Ahora podemos usar este código para analizar el byte almacenado en algún registro que queramos.
Vamos a usar esto para entender cómo los punteros X, Y y Z trabajar pero primero deja hacer un par más pruebas...