;############################################################################################# ; AFFICHAGE SUR UN LCD (ici 2*40) ; ;(c)Gilou-F4HLA 2002 ;############################################################################################# LIST P=16F84, R=DEC ; 16F84 a 4 MHz errorlevel 0,-305 INCLUDE "p16f84.inc" ;############################################################################################# ;# RAM ;############################################################################################# ; Register Usage ; LCD CBLOCK 0x00C ; Start Registers at End of the Values val1:2 ; Valeur pr l'affichage 16bit Hi-Lo dixmil:1 mille:1 cent:1 dix:1 un:1 btmp:1 ; Valeur pr l'afichage en binaire sur 8 bits btmp1:1 ENDC ;############################################################################################# ;# SOUS ROUTINES ;############################################################################################# ;----------------------- ; affichage d'un nombre sur 16 bits contenu dans val(HI), val+1(LO) bcd5 swapf val1,w ; affichage octet --> decimal 5 digits ( de 0 a 65535 ) iorlw 0xf0 movwf mille addwf mille,f addlw 0xE2 movwf cent addlw 0x32 movwf un movf val1,w andlw 0x0F addwf cent,f addwf cent,f addwf un,f addlw 0xE9 movwf dix addwf dix,f addwf dix,f swapf val1+1,w andlw 0x0F addwf dix,f addwf un,f rlf dix,f rlf un,f comf un,f rlf un,f movf val1+1,w andlw 0x0F addwf un,f rlf mille,f movlw 0x07 movwf dixmil movlw 0x0A Lb1: addwf un,f decf dix,f btfss STATUS,C goto Lb1 Lb2: addwf dix,f decf cent,f btfss STATUS,C goto Lb2 Lb3: addwf cent,f decf mille,f btfss STATUS,C goto Lb3 Lb4: addwf mille,f decf dixmil,f btfss STATUS,C goto Lb4 movf dixmil,w addlw '0' call SendCHAR movf mille,w addlw '0' call SendCHAR movf cent,w addlw '0' call SendCHAR movf dix,w addlw '0' call SendCHAR movf un,w addlw '0' call SendCHAR return ;----------------------- ;affichage d'un nombre binaire sur 1octet bin8 movwf btmp ; affichage octet --> binaire 8 digits movlw 8 ; nombre de digits a afficher movwf btmp1 bin81 movlw '0' rlf btmp,f btfsc STATUS,C addlw 1 call SendCHAR decf btmp1,f btfsc STATUS,Z return goto bin81 ;----------------------- ; fin end