Paso 5: Puntos de interrupción, los locales y registros
Por lo tanto, echemos un vistazo a la función 'setLEDs'. O bien, es recibir el valor incorrecto o recibir el valor correcto pero mostrando el valor incorrecto (o alguna extraña combinación de ambos).
Desplácese hacia abajo hasta la primera línea de la función setLEDs (línea 22, ver imagen 1). Haga clic derecho en cualquier parte de la línea y selecciona "Toggle Breakpoint (código)". ¿Observa el punto rojo a la izquierda de esa línea de código? Puede hacer doble clic en ese margen a set/unset puntos de interrupción, así. (imagen 2) Un punto de interrupción es un punto de la en el código donde interrumpirá la ejecución del programa que permite depurar.
Con el sistema de punto de interrupción, presione el "Reset" (
Por ahora, simplemente entender, que si un punto de interrupción se establece cuando se inicia el código, va a tomar un segundo extra o dos para llegar a la principal.
¡ UF... bien. ¿La flecha verde está en la primera línea principal ahora (línea 50, ver imagen 3)? Genial, ahora nos podríamos solo paso (es decir, "Paso en" (
Casi inmediatamente, la flecha verde se desplaza a la línea de 22. Para tener una mejor idea acerca de lo que está haciendo esta función, seleccione "Ver"→"locales" en el menú. (imagen 4) En la ventana que surge, la variable local "valor" se muestra con... err... su valor, "0x1e". Clic derecho sobre la variable en la ventana locales le permite cambiar la notación de la base del valor. Cambiarlo a decimal y aviso ahora que la función de hecho pasan el número correcto (30).
Puesto que esta función sólo se ocupa de una sola variable y sabemos que es correcto, vamos a cerrar la ventana de "locales". Ahora seleccione "Ver" → "registrarse" del menú. En la ventana "registro", cambiar el cuadro de lista desplegable para mostrar "puerto 1/2". Expanda el árbol de "P1OUT". (imagen 5)
P.0 y pág. 7 pueden tener valores aleatorios pero P.1, P.6 deben ser todos cero. Pulsa "Paso en" (
Tenga en cuenta que el valor sólo se ilumina en rojo si el registro cambia, así que después de ejecutar la línea 45, el registro es de color rojo y está mostrando un 1 en lugar del esperado 0. Hemos encontrado nuestro error! Parece invertir los operadores binarios. (imagen 6)