

Kod: Markera allt
calc_m
banksel eeadr ; Change to right bank
;
movlw high meter0 ; Bit 8-15 of address to the start of the table
movwf eeadrh
movlw low meter0 ; Bit 0-7 of address to the start of the table
movwf eeadr
movfw PRESSURE_M
addwf eeadr, f
btfsc status,c
incf eeadrh, f
call get_value ; Get "meters under surface" value from table
banksel porta ; Change bank
;
return
get_value
banksel eecon1
bsf eecon1, eepgd ; Read flash
bsf eecon1, rd ; Set readflag
nop ; Wait for reading to finish up
nop
banksel eedat
movf eedat, w ; Put value into W-reg
return
Kod: Markera allt
METER_TABLE CODE
; Table with the "meter under surface" values
meter0 data d'0'
data d'0'
data d'0'
data d'0'
....
...
Kod: Markera allt
CALL Check_ascii ; Anropa Check_ascii
movwf portb ; Lägg retunerat värde på PortB
CALL send_to_display ;Skicka till display
;****************************************************
;Rutin för att konvertera ascii till 7 segment
;****************************************************
Check_ascii
;
banksel eeadr ; Byt till rätt bank
;
movlw high ascii0 ; Bit 8-15 av adressen att starta i tabellen.
movwf eeadrh
movlw low ascii0 ; Bit 0-7 av adressen att starta i tabellen.
movwf eeadr
;
movf chk_ascii, w ; Hämta ascii värdet från chk_ascii
addwf eeadr, f
btfsc status,c
incf eeadrh, f
;
call Get_value ; Hämta värde
;
banksel portb ; Byt till rätt bank
return
;
Get_value
banksel eecon1
bsf eecon1, eepgd ; Läs från flash
bsf eecon1, rd ; Sätt läs-flagga
nop ; Vänta
nop
banksel eedat
movf eedat, w ; Lägg värdet i "w" registret
return
Kod: Markera allt
ASCII_TABLE CODE ; Table med ASCII värden
ascii0
data h'00' ;0
data h'00' ;1
data h'00' ;2
data h'00' ;3
data h'00' ;4
data h'00' ;5
data h'00' ;6
data h'00' ;7
data h'00' ;8
data h'00' ;9
data h'00' ;10
data h'00' ;11
data h'00' ;12
data h'00' ;13
data h'00' ;14
data h'00' ;15
data h'00' ;16
data h'00' ;17
data h'00' ;18
data h'00' ;19
data h'00' ;20
data h'00' ;21
data h'00' ;22
data h'00' ;23
data h'00' ;24
data h'00' ;25
data h'00' ;26
data h'00' ;27
data h'00' ;28
data h'00' ;29
data h'00' ;30
data h'00' ;31
data h'00' ;32
data h'00' ;33
data h'00' ;34
data h'00' ;35
data h'00' ;36
data h'00' ;37
data h'00' ;38
data h'00' ;39
data h'00' ;40
data h'00' ;41
data h'00' ;42
data h'00' ;43
data h'00' ;44
data h'00' ;45
data h'00' ;46
data h'00' ;47
data h'3f' ;48
data h'06' ;49
data h'5b' ;50
data h'4f' ;51
data h'66' ;52
data h'6d' ;52
data h'7d' ;54
data h'07' ;55
data h'7f' ;56
data h'6f' ;57
Kod: Markera allt
movf chk_ascii, w ; Hämta ascii värdet från chk_ascii
addwf eeadr, f
btfsc status,c
incf eeadrh, f
Kod: Markera allt
movlw d'48'
subwf chk_ascii, w ; Hämta ascii värdet från chk_ascii, och minska med 48.
addwf eeadr, f
btfsc status,c
incf eeadrh, f
Kod: Markera allt
ASCII_TABLE CODE ; Table med ASCII värden
ascii0
data h'3f' ; "0"
data h'06' ; "1"
data h'5b' ; "2"
data h'4f' ; "3"
data h'66' ; "4"
data h'6d' ; "5"
data h'7d' ; "6"
data h'07' ; "7"
data h'7f' ; "8"
data h'6f' ; "9"
Kod: Markera allt
movf chk_ascii, w ; Hämta ascii värdet från chk_ascii
Kod: Markera allt
movlw h'35' ; Test att konvertera en 5:a