; LE 13/02/1999 ; Edité avec PFE and assemblé avec MPASM ; Indicatif F1CJN ; Email: Tristan@Club-Internet.fr ; Copyright: Alain FORT et Association Nationale de Télevision Amateur (ANTA) ; TITLE "PICOSD" ; PIC On Screen Display ; LIST P=16F84 _CP_ON EQU H'000F' _CP_OFF EQU H'3FFF' _PWRTE_ON EQU H'3FF7' _PWRTE_OFF EQU H'3FFF' _WDT_ON EQU H'3FFF' _WDT_OFF EQU H'3FFB' _LP_OSC EQU H'3FFC' _XT_OSC EQU H'3FFD' _HS_OSC EQU H'3FFE' _RC_OSC EQU H'3FFF' __CONFIG _RC_OSC & _PWRTE_ON & _WDT_OFF & _CP_OFF ; ; #Define W 0 #Define F 1 ; ; PIC16C84 defines cblock 0x00 INDF,RTCC,PCL,STATUS,FSR,PORTA,PORTB endc cblock 0x08 EEData,EEAdr,PClath,INTCON endc ; Status bits cblock 0x00 C,DC,Z,PD,TO,RP0,RP1,IRP endc ; ; Page 1 registers Roption EQU 01H TrisA EQU 05H TrisB EQU 06H RAMbase EQU 0CH ; EEPROM Definitionen EEDATA SET 0X08 EEADR SET 0X09 EECON1 SET 0X08 EECON2 SET 0X09 EEPGD SET 0X07 RD SET 0X00 WREN SET 0X02 WR SET 0X01 ;EEWriteData equ 0x51 #define INTER1 PORTB,5 ; Eingang RB5 (PIN 11) Scrolling message 60 Sec #define INTER2 PORTB,6 ; Eingang RB6 (PIN 12) Text1 #define INTER3 PORTB,7 ; Eingang RB7 (PIN 13) Text2 #define SZEILE PORTA,3 ; Ausgang RA3 (PIN 2) #define VSync PORTA,2 ; Eingang VSync an RA2 (PIN 1) #define tiefer PORTA,1 ; Eingang RA1 (PIN 18) #define rechts PORTA,0 ; Eingang RA1 (PIN 17) ; DNOP - Double NOP. Delai de 2 cycles, mais ne prend qu'une instruction DNOP MACRO LOCAL Label Label GOTO Label+1 ENDM ; Delay3W - Delay 3 * W cycles, trois instructions Delay3W MACRO LOCAL Label MOVWF Delay ; 1  \ Label DECFSZ Delay,1 ; n+1 } 3n GOTO Label ; 2n-2/ ENDM ;STATUS macro instruction SKIPCC MACRO BTFSC STATUS,C ENDM LIST CBLOCK RAMbase Delay,EEWDat,ZEILE,RASTER,TNB,TNB1,TEMP,HOCH,LINKS ; 6 CA0,CA1,CA2,CA3,CA4,CA5,CA6,CA7,CA8,CA9,CA10 ; 11 Pointeurs de caracteres Ta0,Ta1,Ta2,Ta3,Ta4,Ta5,Ta6,Ta7,Ta8,Ta9,Ta10 ; 11 Pointeurs de la ZEILE du caractere PTRTXT,Scroll,COUNTER,ADRESULT,INTER ; 4 ENDC ;voreingestellte Daten für den EEPROM ab der Zelle 00h org H'2130' ; Adresse des EEPROM für den Brenner de D'14' ; 0 Adresse 0 = LINKS de D'250' ; 0 ADRESSE 1 = HOCH ORG 0 GOTO INIT ORG 4 RETFIE Table ADDWF PCL,F Tbase equ $ Car0 equ $-Tbase CarO equ $-Tbase RETLW B'00001110' ; ....***. RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00001110' ; ....***. Carr equ $-Tbase RETLW B'00011111' ; ....***. RETLW B'00011111' ; ...*...* RETLW B'00001110' ; ...*...* RETLW B'00000100' ; ...*...* RETLW B'00000000' ; ...*...* RETLW B'00001110' ; ...*...* RETLW B'00001110' ; ....***. Car_ equ $-Tbase RETLW B'00000001' ; .......* RETLW B'00000001' ; ....**.. RETLW B'00000010' ; .....*.. RETLW B'00000100' ; .....*.. RETLW B'00001000' ; .....*.. RETLW B'00010000' ; .....*.. RETLW B'00010000' ; ....***. Car1 equ $-Tbase RETLW B'00000100' ; .....*.. RETLW B'00001100' ; ....**.. RETLW B'00000100' ; .....*.. RETLW B'00000100' ; .....*.. RETLW B'00000100' ; .....*.. RETLW B'00000100' ; .....*.. RETLW B'00011110' ; ....***. Car2 equ $-Tbase RETLW B'00001110' ; ....***. RETLW B'00010001' ; ...*...* RETLW B'00000001' ; .......* RETLW B'00000010' ; ......*. RETLW B'00000100' ; .....*.. RETLW B'00001000' ; ....*... RETLW B'00011111' ; ...***** Car3 equ $-Tbase RETLW B'00001110' ; ....***. RETLW B'00010001' ;....*...* RETLW B'00000001' ; .......* RETLW B'00000110' ; .....**. RETLW B'00000001' ; .......* RETLW B'00010001' ; ...*...* RETLW B'00001110' ; ....***. Car4 equ $-Tbase RETLW B'00000010' ; ......*. RETLW B'00000110' ; .....**. RETLW B'00001010' ; ....*.*. RETLW B'00010010' ; ...*..*. RETLW B'00011111' ; ...***** RETLW B'00000010' ; ......*. RETLW B'00000010' ; ......*. Car5 equ $-Tbase RETLW B'00011111' ; ...***** RETLW B'00010000' ; ...*.... RETLW B'00011110' ; ...****. RETLW B'00000001' ; .......* RETLW B'00000001' ; .......* RETLW B'00010001' ; ...*...* RETLW B'00001110' ; ....***. Car6 equ $-Tbase RETLW B'00001110' ; ....***. RETLW B'00010001' ; ...*...* RETLW B'00010000' ; ...*.... RETLW B'00001110' ; ....***. RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00001110' ; ....***. Car7 equ $-Tbase RETLW B'00011111' ; ...***** RETLW B'00000001' ; .......* RETLW B'00000001' ; .......* RETLW B'00000010' ; ......*. RETLW B'00000010' ; ......*. RETLW B'00000100' ; .....*.. RETLW B'00000100' ; .....*.. Car8 equ $-Tbase RETLW B'00001110' ; ....***. RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00001110' ; ....***. RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00001110' ; ....***. Car9 equ $-Tbase RETLW B'00001110' ; ....***. RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00001111' ; ....**** RETLW B'00000001' ; .......* RETLW B'00010001' ; ...*...* RETLW B'00001110' ; ....***. Car. equ $-Tbase RETLW B'00000000' ; ........ RETLW B'00000000' ; ........ RETLW B'00000000' ; ........ RETLW B'00000000' ; ........ RETLW B'00000000' ; ........ RETLW B'00000000' ; ........ RETLW B'00000100' ; .....*.. SP equ $-Tbase RETLW B'00000000' ; ........ RETLW B'00000000' ; ........ RETLW B'00000000' ; ........ RETLW B'00000000' ; ........ RETLW B'00000000' ; ........ RETLW B'00000000' ; ........ RETLW B'00000000' ; ........ CarA equ $-Tbase RETLW B'00001110' ; ....***. RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00011111' ; ...***** CarH equ $-Tbase RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00011111' ; ...***** CarU equ $-Tbase RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00001110' ;.....***. CarD equ $-Tbase RETLW B'00011110' ; ...****. RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* CarB equ $-Tbase RETLW B'00011110' ; ...****. RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* CarP equ $-Tbase RETLW B'00011110' ; ...****. RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00011110' ; ...****. CarL equ $-Tbase RETLW B'00010000' ; ...*.... RETLW B'00010000' ; ...*.... RETLW B'00010000' ; ...*.... RETLW B'00010000' ; ...*.... RETLW B'00010000' ; ...*.... RETLW B'00010000' ; ...*.... CarE equ $-Tbase RETLW B'00011111' ; ...***** RETLW B'00010000' ; ...*.... RETLW B'00010000' ; ...*.... RETLW B'00011100' ; ...***.. RETLW B'00010000' ; ...*.... RETLW B'00010000' ; ...*.... CarF equ $-Tbase RETLW B'00011111' ; ...***** RETLW B'00010000' ; ...*.... RETLW B'00010000' ; ...*.... RETLW B'00011110' ; ...***.. RETLW B'00010000' ; ...*.... RETLW B'00010000' ; ...*.... RETLW B'00010000' ; ...*.... CarJ equ $-Tbase RETLW B'00000001' ; .......* RETLW B'00000001' ; .......* RETLW B'00000001' ; .......* RETLW B'00000001' ; .......* RETLW B'00000001' ; .......* RETLW B'00010001' ; ...*...* CarG equ $-Tbase RETLW B'00001110' ; ....***. RETLW B'00010001' ; ...*...* RETLW B'00010000' ; ...*.... RETLW B'00010011' ; ...*..** RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* CarQ equ $-Tbase RETLW B'00001110' ; ....***. RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010101' ; ...*.*.* RETLW B'00010011' ; ...*..** CarS equ $-Tbase RETLW B'00001110' ; ....***. RETLW B'00010001' ; ...*...* RETLW B'00010000' ; ...*.... RETLW B'00001110' ; ....***. RETLW B'00000001' ; .......* RETLW B'00010001' ; ...*...* CarC equ $-Tbase RETLW B'00001110' ; ....***. RETLW B'00010001' ; ...*...* RETLW B'00010000' ; ...*.... RETLW B'00010000' ; ...*.... RETLW B'00010000' ; ...*.... RETLW B'00010001' ; ...*...* CarI equ $-Tbase RETLW B'00001110' ; ....***. RETLW B'00000100' ; .....*.. RETLW B'00000100' ; .....*.. RETLW B'00000100' ; .....*.. RETLW B'00000100' ; .....*.. RETLW B'00000100' ; .....*.. RETLW B'00001110' ; ....***. CarK equ $-Tbase RETLW B'00010001' ; ...*...* RETLW B'00010010' ; ...*..*. RETLW B'00010100' ; ...*.*.. RETLW B'00011000' ; ...**... RETLW B'00010100' ; ...*.*.. RETLW B'00010010' ; ...*..*. CarM equ $-Tbase RETLW B'00010001' ; ...*...* RETLW B'00011011' ; ...**.** RETLW B'00010101' ; ...*.*.* RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* CarN equ $-Tbase RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00011001' ; ...**..* RETLW B'00010101' ; ...*.*.* RETLW B'00010011' ; ...*..** CarY equ $-Tbase RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00001010' ; ....*.*. RETLW B'00000100' ; .....*.. RETLW B'00000100' ; .....*.. RETLW B'00000100' ; .....*.. CarR equ $-Tbase RETLW B'00011110' ; ...****. RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00011110' ; ...****. CarV equ $-Tbase RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* CarX equ $-Tbase RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00001010' ; ....*.*. RETLW B'00000100' ; .....*.. RETLW B'00001010' ; ....*.*. CarW equ $-Tbase RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010101' ; ...*.*.* RETLW B'00011011' ; ...**.** RETLW B'00010001' ; ...*...* CarZ equ $-Tbase RETLW B'00011111' ; ...***** RETLW B'00000001' ; ...... * RETLW B'00000010' ; ..... *. RETLW B'00000100' ; .... *.. RETLW B'00001000' ; ....*... RETLW B'00010000' ; ...*.... CarT equ $-Tbase RETLW B'00011111' ; ...***** RETLW B'00000100' ; .....*.. RETLW B'00000100' ; .....*.. RETLW B'00000100' ; .....*.. RETLW B'00000100' ; .....*.. RETLW B'00000100' ; .....*.. RETLW B'00000100' ; .....*.. INIT CLRW MOVWF ZEILE BSF STATUS,RP0 ; on adresse le bank 1 des registres MOVLW B'10111' MOVWF TrisA ; RA3 =S RA2=E RA1=E RA0=E MOVLW B'11100000' ; RB7 et RB6 en entrée, les autres en sortie MOVWF TrisB BCF Roption,7 ; les entrées avec pull-up movlw D'0' movwf INTCON BCF STATUS,RP0 ; on adresse le bank 0 pour la suite du programme CLRF PTRTXT MOVLW H'31' ;31' call eeread; MOVWF HOCH MOVLW H'30' ;30' call eeread MOVWF LINKS ;BCF INTER1 ;BCF INTER2 ;BSF INTER3 ;***************************************************************************************** ;* PROGRAMME PRINCIPAL * ;***************************************************************************************** MAIN NOP M2 BTFSC VSync ; VSync = 0 ? GOTO M2 ; non on boucle M3 BTFSS VSync ; VSync = 1 ? GOTO M3 ; non on boucle BSF SZEILE ; arret Horloge BCF SZEILE ; marche horloge MOVLW D'9' ; delai=30 microsecondes environ (9) Delay3W ; BTFSC rechts ; Taste für H-Verschiebung GOTO tie ; wenn nicht gedrückt dann weida (0V) DECFSZ LINKS,F ; -1 GOTO atie ; wenn wenn 0 dann wieder auf 10 setzen MOVLW D'25' ; MOVWF LINKS atie MOVF LINKS,W ; MOVWF EEWDat MOVLW H'30' CALL eepromwrite tie BTFSC tiefer ; Taste für V-Verschiebung GOTO wei ; wenn nicht gedrückt dann weida (0V) DECFSZ HOCH,F ; -1 GOTO awei ; wenn wenn 0 dann wieder auf 10 setzen MOVLW D'255' ; MOVWF HOCH awei MOVF HOCH,W ; MOVWF EEWDat MOVLW H'31' CALL eepromwrite wei INCF RASTER,1 ; increment du compteur de Raster BSF SZEILE ; arret horloge BCF SZEILE ; on met SZEILE à 0 en debut horloge point CALL PRETXT1 BSF SZEILE ;arret de l'horloge BCF SZEILE ;on met SZEILE à 0 en debut horloge point CALL PRETXT2 BSF SZEILE ;arret de l'horloge BCF SZEILE ;start CALL DLIGNE1 ; LIGNES NOIRES1 BSF SZEILE ;stop MOVF HOCH,W MOVWF TEMP Nom BCF SZEILE ;start CALL DLIGNE1 ; LIGNES NOIRES1 BSF SZEILE ;stop DECFSZ TEMP,F GOTO Nom BCF SZEILE CALL DISTXT ; Einblendung TEXTE BSF SZEILE GOTO M2 ; Zurück zum Anfang (detection V-Rahmen) ;***************************************************************************************** ;* SOUS PROGRAMME DE COMPTAGE DES LIGNES NON AFFICHEES * ;***************************************************************************************** DLIGNE1 BSF SZEILE ; stop DNOP BCF SZEILE ;on met SZEILE à 0 en debut horloge point INCF ZEILE,1 DNOP DNOP MOVF ZEILE,W ADDLW -D'1' ; 10 Zeilen vor Texteinblendung von 50 auf 1 geändertr SKIPCC GOTO DEnde ; Dunkle Zeile beenden GOTO DLIGNE1 ; non on retourne attente ligne DEnde CLRF ZEILE ; raz du compteur de lignes RETURN ;***************************************************************************************** ;* Subroutine Text-Einblendung * ;***************************************************************************************** DISTXT BCF SZEILE ; 7 debut h 1 CALL INCLINE CALL INCLINE2 BSF SZEILE ; stop BCF SZEILE ; 1 debut h CALL SHOWLINE BSF SZEILE ; stop BCF SZEILE ; 2 debut h CALL SHOWLINE BCF SZEILE ; 7 debut h 2 CALL INCLINE CALL INCLINE2 BSF SZEILE ; stop BCF SZEILE ; 1 debut h CALL SHOWLINE BSF SZEILE ; stop BCF SZEILE ; 2 debut h CALL SHOWLINE BSF SZEILE ; stop BCF SZEILE ; 1 debut h BCF SZEILE ; 7 debut h 3 CALL INCLINE CALL INCLINE2 BSF SZEILE ; stop BCF SZEILE ; 1 debut h CALL SHOWLINE BSF SZEILE ; stop BCF SZEILE ; 2 debut h CALL SHOWLINE BSF SZEILE ; stop BCF SZEILE ; 1 debut h BCF SZEILE ; 7 debut h 4 CALL INCLINE CALL INCLINE2 BSF SZEILE ; stop BCF SZEILE ; 1 debut h CALL SHOWLINE BSF SZEILE ; stop BCF SZEILE ; 2 debut h CALL SHOWLINE BSF SZEILE ; stop BCF SZEILE ; 1 debut h BCF SZEILE ; 7 debut h 5 CALL INCLINE CALL INCLINE2 BSF SZEILE ; stop BCF SZEILE ; 1 debut h CALL SHOWLINE BSF SZEILE ; stop BCF SZEILE ; 2 debut h CALL SHOWLINE BSF SZEILE ; stop BCF SZEILE ; 3 debut h BCF SZEILE ; 7 debut h 6 CALL INCLINE CALL INCLINE2 BSF SZEILE ; stop BCF SZEILE ; 1 debut h CALL SHOWLINE BSF SZEILE ; stop BCF SZEILE ; 2 debut h CALL SHOWLINE BSF SZEILE ; stop BCF SZEILE ; 1 debut h BCF SZEILE ; 7 debut h 7 CALL INCLINE CALL INCLINE2 BSF SZEILE ; stop BCF SZEILE ; 1 debut h CALL SHOWLINE BSF SZEILE ; stop BCF SZEILE ; 2 debut h CALL SHOWLINE BSF SZEILE ; stop BCF SZEILE ; 1 debut h RETURN ; ;***************************************************************************************** ;* SOUS PROGRAMME D'Einblendung D'UNE LIGNE * ;***************************************************************************************** SHOWLINE MOVF LINKS,W ; Verschieben nach rechts: delai=30 microsecondes environ (9) Delay3W MOVF TNB1,W ; 1 ancien TNB (without plus one) ADDWF CA0,W ; 2 Incease line (Folge) CALL Table ; 8 Calcul de Ta0, resultat dans W DNOP DNOP DNOP DNOP MOVWF PORTB RLF PORTB,F RLF PORTB,F RLF PORTB,F RLF PORTB,F CLRF PORTB MOVF Ta1,W ;Carac 2 ADDWF PORTB RLF PORTB,F RLF PORTB,F RLF PORTB,F RLF PORTB,F CLRF PORTB MOVF Ta2,W ;Carac 3 ADDWF PORTB RLF PORTB,F RLF PORTB,F RLF PORTB,F RLF PORTB,F CLRF PORTB MOVF Ta3,W ;Carac 4 ADDWF PORTB RLF PORTB,F RLF PORTB,F RLF PORTB,F RLF PORTB,F CLRF PORTB MOVF Ta4,W ;Carac 5 ADDWF PORTB RLF PORTB,F RLF PORTB,F RLF PORTB,F RLF PORTB,F CLRF PORTB MOVF Ta5,W ;Carac 6 ADDWF PORTB RLF PORTB,F RLF PORTB,F RLF PORTB,F RLF PORTB,F CLRF PORTB MOVF Ta6,W ;Carac 7 ADDWF PORTB RLF PORTB,F RLF PORTB,F RLF PORTB,F RLF PORTB,F CLRF PORTB MOVF Ta7,W ;Carac 8 ADDWF PORTB RLF PORTB,F RLF PORTB,F RLF PORTB,F RLF PORTB,F CLRF PORTB MOVF Ta8,W ;Carac 9 ADDWF PORTB RLF PORTB,F RLF PORTB,F RLF PORTB,F RLF PORTB,F CLRF PORTB MOVF Ta9,W ;Carac 10 ADDWF PORTB RLF PORTB,F RLF PORTB,F RLF PORTB,F RLF PORTB,F CLRF PORTB MOVF Ta10,W ;Carac 11 ADDWF PORTB RLF PORTB,F RLF PORTB,F RLF PORTB,F RLF PORTB,F CLRF PORTB RETURN INCLINE MOVF TNB,W ; MOVWF TNB1 ADDWF CA6,W ; Addition de TNB au resultat CALL Table ; Appel dela ZEILE line nombre NB MOVWF Ta6 ; Table TA0 MOVF TNB,W ADDWF CA1,W CALL Table MOVWF Ta1 MOVF TNB,W ADDWF CA2,W CALL Table MOVWF Ta2 MOVF TNB,W ADDWF CA3,W CALL Table MOVWF Ta3 MOVF TNB,W ADDWF CA4,W CALL Table MOVWF Ta4 RETURN INCLINE2 MOVF TNB,W ADDWF CA5,W CALL Table MOVWF Ta5 MOVF TNB,W ADDWF CA6,W CALL Table MOVWF Ta6 MOVF TNB,W ADDWF CA7,W CALL Table MOVWF Ta7 MOVF TNB,W ADDWF CA8,W CALL Table MOVWF Ta8 MOVF TNB,W ADDWF CA9,W CALL Table MOVWF Ta9 MOVF TNB,W ADDWF CA10,W CALL Table MOVWF Ta10 INCF TNB,1 ; On incremente le pointeur vertical RETURN ; ;***************************************************************************************** ;* SOUS PROGRAMME DE PREPARATION D'Einblendung * ;***************************************************************************************** PRETXT1 BTFSC INTER1 ; test interrupteur RB5 si = 0 pas de scroll GOTO PRS ; RB5=1 Scroll Texte1 BTFSC INTER2 ; test interrupteur RB6 si = 0 GOTO PR3 ; RB6=1 BTFSC INTER3 ; test interrupteur RB7 si = 0 pas de scroll GOTO PR1 ; RB7=1 Texte1 fixe GOTO PR0 ; RB7=0 Texte fixe (espaces sur l'ecran) PRS BTFSS RASTER,4 ; Scrolling sur test de compteur Raster CRAWL-Tempo GOTO GT5 ; on attend INCF PTRTXT,1 ; scrolling on se deplace d'un cran CLRF RASTER ; RAZ compteur de temps GOTO GT5 PR3 BTFSC INTER3 ; test interrupteur RB7 si = 0 Texte 2 GOTO PR2 ; Texte2 fixe MOVLW D'95' ; on pointe sur Texte3-1 fixe MOVWF PTRTXT GOTO GT5 PR2 MOVLW D'79' ; on pointe sur Texte2-1 fixe MOVWF PTRTXT GOTO GT5 PR1 MOVLW D'63' ; on pointe sur Texte1-1 fixe MOVWF PTRTXT GOTO GT5 PR0 MOVLW D'00' ; Texte fixe (rien sur l'ecran) on pointe sur texte MOVWF PTRTXT GT5 MOVLW HIGH Texte ; 17 prepare to read the text page at 300 (HIGH) MOVWF PClath ; 18 MOVF PTRTXT,W ; 19 first caracter CALL Texte ; 25 MOVWF CA0 ; 26 INCF PTRTXT,1 ; 27 MOVF PTRTXT,W ; 28 Second caracter CALL Texte ; 34 MOVWF CA1 ; 35 INCF PTRTXT,1 ; 36 MOVF PTRTXT,W ; 37 3e caractère CALL Texte ; 43 MOVWF CA2 ; 44 INCF PTRTXT,1 ; 45 MOVF PTRTXT,W ; 46 4e caractère CALL Texte ; 52 MOVWF CA3 ; 53 INCF PTRTXT,1 ; 54 RETURN ; 55 PRETXT2 MOVF PTRTXT,W ; 7 5e caractère CALL Texte ;13 MOVWF CA4 ;14 INCF PTRTXT,1 ;15 MOVF PTRTXT,W ;16 6e caractère CALL Texte ;22 MOVWF CA5 ;23 INCF PTRTXT,1 ;24 MOVF PTRTXT,W ;25 7e caractère CALL Texte ;31 MOVWF CA6 ;32 INCF PTRTXT,1 ;24 MOVF PTRTXT,W ;25 8e caractère CALL Texte ;31 MOVWF CA7 ;32 INCF PTRTXT,1 ;24 MOVF PTRTXT,W ;25 9e caratère CALL Texte ;31 MOVWF CA8 ;32 INCF PTRTXT,1 ;24 MOVF PTRTXT,W ;25 10e caratère CALL Texte ;31 MOVWF CA9 ;32 INCF PTRTXT,1 ;24 MOVF PTRTXT,W ;25 11e caractère CALL Texte ;31 MOVWF CA10 ;32 MOVLW -D'10' ; 55 10 pour un décalage de 11 caracteres ADDWF PTRTXT,1 ; 56 voila MOVF PTRTXT,W ; 57 ADDLW -(FTexte-DTexte); 58 comparaison à la longueur du texte SKIPCC ; 59 CLRF PTRTXT ; 60 RAZ pointeur à la fin du scrolling CLRF PClath ; 61 RAZ PClath pour pouvoir lire table caracteres en page 0 CLRF TNB ; 62 TNB initialisation RETURN ; 64 eepromwrite MOVWF EEADR MOVFW EEWDat MOVWF EEDATA BSF STATUS, RP0 BSF EECON1, 2;WREN ; nun ist Schreiben erlaubt MOVLW H'55' MOVWF EECON2 ; schreibe 55h nach EECON2 MOVLW H'AA' MOVWF EECON2 ; schreibe AAh nach EECON2 BSF EECON1, 1;WR ; starte den Schreibzyklus EEWrite1 ; warten das write fertig ist btfss EECON1, 4;WR goto EEWrite1 BCF STATUS, RP0 ; Bank 0 return eeread MOVWF EEADR ; schreibe die Adresse in EEADR BSF STATUS, RP0 ; EEADR liegt in der Bank 1 BSF EECON1, 0 ;RD ; EEPROM Leseprozeß starten BCF STATUS, RP0 ; Bank 0 MOVF EEDATA, W ; Die Daten der EEPROM Zelle nach W kopieren return include "Datei.txt" END