So, hier eine auf's Wesentliche reduzierte Assembler-Version eines "LED-reagiert-auf-Knopfdruck-an-RA3-Programms". Das Ganze spielt auf dem "Low pin count demo board" an PICkit2! Der Haken bei "/MCLR" darf nicht gesetzt sein. Das Programm belegt gerade mal 8 Zellen im Programmspeicher.
Es leuchten zwei LEDs. Drückt man auf den Taster, gehen die LEDs aus und zwei andere gehen an. Würde man, wie bei Basti auf die Konfiguration verzichten bzw. "MCLRE_ON" setzen, passiert etwas Anderes: Es gehen alle LEDs aus, weil der µC in den Reset geht.
Bastis Programm würde scheinbar (nicht "anscheinend"!) funktionieren, wenn die LED z.B. immer an ist und auf Knopfdruck ausgehen soll.
| Code : |
#include <p16F690.inc>
__config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)
org 0
Start
bsf STATUS,RP0
clrf TRISC
bcf STATUS,RP0
Loop
movlw 0x0A
btfsc PORTA,3
movlw 0x05
movwf PORTC
goto Loop
end
|
|
Ich habe das
nicht für Basti gemacht (der glaubt mir sowieso nicht), sondern für zufällige Leser die wirklich etwas lernen wollen. Und um zu zeigen, dass der Taster an PICkit2 sehr wohl funktioniert.
Noch etwas:
In meinem Beispielprogramm habe ich bewusst auf Initialisierungen von Port A verzichtet, um zu zeigen wo es wirklich klemmt. Beim Einsatz eines PICs sollte man aber genau nachschauen, wie man einen Port zu initialisieren hat, damit er auf die richtige Funktionsweise eingestellt wird. Hier ist das aber noch eine Ebene tiefer angesiedelt (Reset-Pin).
_________________
„Schreibe nichts der Böswilligkeit zu, was durch Dummheit hinreichend erklärbar ist.“
(Hanlon’s Razor)