;Hallo Robert, ;Man kann den ASCII-Code für das Alphabet in einer Look Up Tabelle (LUT) ;ablegen und dann auslesen. Die Tabelle kann ganz am Ende des Programms, ;also vor END stehen. Zunächst ist es einfacher, die Tabelle an den Anfang ;einer sogenannten "Page" zu stellen (Der Programmspeicher ist in Pages zu ;je 256 Bytes = 1 page eingeteilt. Nehmen wir mal page 5, welche sicher ;außerhalb des Bereiches liegen wird, in welchem sich Dein auszuführender ;Code befindet. Einen Überblick verschaffst Du Dir mit MPLAB - Menü View - ;- Programm Memory. ;---------------------------------- ORG 0x0500 ;Tabelle beginnt in Page 5 = Registeradresse dez.1280 table_ABC:: dt "ABCDEFGHIJKLMNOPQRSTUVWXYZ" END ;---------------------------------- ;Auslesen der Einzelbuchstaben ;Dazu muss zunächst die Startadresse der Tabelle ermittelt werden. Das ;bereits zu Beginn, im Abschnitt "Init" erfolgen: movlw high Table_ABC ;H-Byte der Adresse des 1.Byte in der ;Tabelle, also von "A" movwf pointer_H ;über das WREG in Zeigervariable kopieren movlw low Table_ABC ;L-Byte der Adresse des 1.Byte in der ;Tabelle, also von "A" movwf pointer_L ;über das WREG in Zeigervariable kopieren ;In der Tasterabfrage hast Du jetzt eine Variabel, sagen wir ; cntBTTN ;Zähler (counter) für Tastendruck, zählt ; ;von 0 = A bis 25=Z ABC_Out movf pointer_H,w ;H-Byte Adresse von "A" (500h) über das WREG movwf PCLATH ;in das H-Byte des Programmzählers kopieren movf pointer_L,w ;L-Byte Adresse von "A" (00h) ins WREG ;angenommen Deine Taste hat zu Programmbeginn = 255. Beim 1. Tastendruck ;läuft cntBTTN nach 0 über. Jeder weitere Tastendruck erhöht cntBTTN+1 ABC_Command: movlw 43h ;DDRAM-Adresse zur Ausgabe in Zeile 2, Digit 2 ;Soll die Adresse änderbar sein ist statt ;des Fixwertes eine Variable zu verwenden. iorlw b'10000000' ;mit Funktion "Set DDRAM-Adresse" verknüpfen CALL LCD_Command ;Adressbefehl ans LCD senden ABC_Data: CALL ABC_Char ;Liest den adressierten Buchstaben aus der ;Tabelle, dessen Asciiwert im WREG zurück- ;gegeben wird. CALL LCD_Data ;Übergabe des Buchstaben im WREG an das Unterprogramm ;zur Ausgabe eines Zeichens im LCD GOTO ABC_Ende ;Ausgabe beendet, aktueller Tastendruck ist ;abgearbeitet. ABC_Char: movf cntBTTN,w ;Tastendruckzählerstand ins WREG addwf pointer_L,w ;Lowbyte-Adresse von "A" addieren movwf PCL ;Ergebnis vom WREG in das Low-Byte des ;Programmzählers kopieren ;Das Programm springt nun zu Adresse PCLATH,PCL, liest dort den ASCII-WERT ;des betreffenden Buchstaben ins WREG ein. ABC_Ende: RETURN