Saturday, September 3, 2016
MPPT Circuit using PIC16F88 Code and HEX
MPPT Circuit using PIC16F88 Code and HEX
The earlier article comprehensively described the circuit details of an MPPT using PIC16F88 microcontroller, here we get the access to the source code for programming the PIC and the HEX file format for the same.
This data was donated by: Mr. hisham bahaa-aldeen (hisham2630@gmail.com)
Programming source code for the proposed 12V/24V solar MPPT circuit using PIC16F88
; 100W Solar Charger
; upgraded with a supplementary bulk charge restart feature after a 4hr break when sunlight returns to panel
; Option set when RB0 low
; Supplementary bulk restart anytime power demanded for float charging. Option set when RB1 low
; Added switch to float mode if bulk charging takes less than 60s. ie if the battery is fully charged
list P=16F88
#include p16f88.inc
ERRORLEVEL -302
ERRORLEVEL -306
;Program Configuration Register 1
__CONFIG _CONFIG1, _CP_ALL & _CCP1_RB3 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_ON & _MCLR_ON & _PWRTE_ON & _WDT_OFF & _INTRC_IO
;Program Configuration Register 2
__CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF
; Bank 0 RAM
DIGITAL equ H20 ; storage
FIRST equ H21 ; first run
CUT_M equ H22 ; cutout voltage high byte
CUT_L equ H23 ; cutout voltage low byte
FLOAT_H equ H24 ; float voltage high byte
FLOAT_L equ H25 ; float voltage low byte
COMP equ H26 ; compensation (temperature)
BATT_HI equ H27 ; battery volts high byte
BATT_LO equ H28 ; battery low byte
DELCNT equ H29 ; delay counter
FLASHER equ H2A ; LED flasher timer
TEMPERATURE equ H2B ; temperature reading deg C
THERMISTOR equ H2C ; thermistor flag for LED
CUT_COMP_M equ H2D ; cutout temp. compensated voltage high byte
CUT_COMP_L equ H2E ; cutout temp. compensated voltage low byte
FLOAT_COMP_M equ H2F ; float temp. compensated voltage high byte
FLOAT_COMP_L equ H30 ; float temp. compensated voltage low byte
NEGATIVE equ H31 ; subtract negative flag
VALUE_1 equ H32 ; delay counter
VALUE_2 equ H33 ; delay counter
HOUR0 equ H34 ; hour counter
HOUR1 equ H35 ; 14 seconds counter for hour counter (256 x 14s=1hour)
SENSOR_COUNT equ H36 ; sensor counter for periodic checking
SENSOR_COUNT1 equ H37 ; sensor counter for periodic checking
CELL_LO equ H38 ; solar cell voltage ls byte
CELL_HI equ H39 ; solar cell voltage ms byte
CELL_I_LO equ H3A ; solar cell current ls byte
CELL_I_HI equ H3B ; solar cell current ms byte
CHARGE_STATE equ H3C ; 0 charge, 1 float
CHARGE_FLAG equ H3D ; flag for charge
CHRG_RATE equ H3E ; charge change rate
CELL_V equ H3F ; solar cell voltage 8-bit
CELL_I equ H40 ; solar cell current 8-bit
PERIOD equ H41 ; power calculation rate
CCPR1_STORE equ H42 ; CCPR1L storage value
POWERH equ H43 ; power ms byte
POWERL equ H44 ; power ls byte
VALUE1 equ H45 ; temporary value
VALUE2 equ H46 ; temporary value
VALUE3 equ H47 ; temporary value
VALUE4 equ H48 ; temporary value
EQ_FLAG equ H49 ; equalisation flag
EQ_LO equ H4A ; ls byte EQ battery voltage
EQ_HI equ H4B ; ms byte EQ battery voltage
EQ_LO_COMP equ H4C ; ls byte temp. compensated EQ battery voltage
EQ_HI_COMP equ H4D ; ms byte temp. compensated EQ battery voltage
EQ_LEVEL equ H4E ; equalisation input (RB4) level store
BATT_IND equ H4F ; battery indicator flag when error
BURST_FLG equ H50 ; burst flag
HOUR3 equ H51 ; 4 hour counter
HOUR2 equ H52 ; 56 seconds counter for hour counter (256 x 56s=1hour)
BULK_TIMER equ H53 ; bulk charge timer (60s)
BULK_TIMER_END equ H54 ; bulk timer ended flag
; math routines
TEMP1 equ H5C
TEMPB0 equ H5D
TEMPB1 equ H5E
TEMPB2 equ H5F
TEMP equ H60
REMB3 equ H61
REMB2 equ H62
REMB1 equ H63
REMB0 equ H64
AARGB5 equ H65
AARGB4 equ H66
AARGB3 equ H67
AARGB2 equ H68
AARGB1 equ H69
AARGB0 equ H6A ; most significant byte of argument A
BARGB3 equ H6B
BARGB2 equ H6C
BARGB1 equ H6D
BARGB0 equ H6E ; most significant byte of argument B
LOOPCOUNT equ H6F ; division counter
; All Banks RAM
; Interrupt store registers
W_TMP equ H70 ; storage of w before interrupt
STATUS_TMP equ H71 ; status storage before interrupt
; start at memory 0
org 0
goto SETUP
org 4
goto INTERRUPT
; position the lookup table at start to avoid a 256 bit boundary
TEMP_CONV ; convert A/D values to deg C based on thermistor R=Ae**(B/T) where (T is in K ie deg C plus 273)
; A =0.01058 and B is 4100
addwf PCL,f ; add value to program counter
; 60 deg C max
retlw D60 ; 60deg C for A/D D49 (8-bit)
retlw D59 ; deg C for A/D D50(8-bit)
retlw D58 ; deg C for A/D D51(8-bit)
retlw D58 ; deg C for A/D D52(8-bit)
retlw D57 ; deg C for A/D D53(8-bit)
retlw D57 ; deg C for A/D D54(8-bit)
retlw D56 ; deg C for A/D D55(8-bit)
retlw D56 ; deg C for A/D D56(8-bit)
retlw D55 ; deg C for A/D D57(8-bit)
retlw D54 ; deg C for A/D D58(8-bit)
retlw D54 ; 54 deg C for A/D D59(8-bit)
retlw D53 ; deg C for A/D D60(8-bit)
retlw D53 ; deg C for A/D D61(8-bit)
retlw D52 ; deg C for A/D D62(8-bit)
retlw D52 ; deg C for A/D D63(8-bit)
retlw D51 ; deg C for A/D D64(8-bit)
retlw D50 ; deg C for A/D D65(8-bit)
retlw D50 ; deg C for A/D D66(8-bit)
retlw D50 ; deg C for A/D D67(8-bit)
retlw D49 ; deg C for A/D D68(8-bit)
retlw D49 ; deg C for A/D D69(8-bit)
retlw D48 ; 48 deg C for A/D D70(8-bit)
retlw D48 ; deg C for A/D D71(8-bit)
retlw D47 ; deg C for A/D D72(8-bit)
retlw D47 ; deg C for A/D D73(8-bit)
retlw D46 ; deg C for A/D D74(8-bit)
retlw D46 ; deg C for A/D D75(8-bit)
retlw D45 ; deg C for A/D D76(8-bit)
retlw D45 ; deg C for A/D D77(8-bit)
retlw D44 ; deg C for A/D D78(8-bit)
retlw D44 ; deg C for A/D D79(8-bit)
retlw D43 ; deg C for A/D D80(8-bit)
retlw D43 ; deg C for A/D D81(8-bit)
retlw D43 ; deg C for A/D D82(8-bit)
retlw D42 ; deg C for A/D D83(8-bit)
retlw D42 ; deg C for A/D D84(8-bit)
retlw D41 ; deg C for A/D D85(8-bit)
retlw D41 ; deg C for A/D D86(8-bit)
retlw D40 ; deg C for A/D D87(8-bit)
retlw D40 ; deg C for A/D D88(8-bit)
retlw D40 ; 40 deg C for A/D D89(8-bit)
retlw D39 ; deg C for A/D D90(8-bit)
retlw D39 ; deg C for A/D D91(8-bit)
retlw D38 ; deg C for A/D D92(8-bit)
retlw D38 ; deg C for A/D D93(8-bit)
retlw D38 ; deg C for A/D D94(8-bit)
retlw D37 ; deg C for A/D D95(8-bit)
retlw D37 ; deg C for A/D D96(8-bit)
retlw D36 ; deg C for A/D D97(8-bit)
retlw D36 ; deg C for A/D D98(8-bit)
retlw D36 ; deg C for A/D D99(8-bit)
retlw D35 ; deg C for A/D D100(8-bit)
retlw D35 ; deg C for A/D D101(8-bit)
retlw D34 ; deg C for A/D D102(8-bit)
retlw D34 ; deg C for A/D D103(8-bit)
retlw D34 ; deg C for A/D D104(8-bit)
retlw D33 ; deg C for A/D D105(8-bit)
retlw D33 ; deg C for A/D D106(8-bit)
retlw D33 ; deg C for A/D D107(8-bit)
retlw D32 ; deg C for A/D D108(8-bit)
retlw D32 ; 32 deg C for A/D D109(8-bit)
retlw D32 ; deg C for A/D D110(8-bit)
retlw D31 ; deg C for A/D D111(8-bit)
retlw D31 ; deg C for A/D D112(8-bit)
retlw D30 ; deg C for A/D D113(8-bit)
retlw D30 ; deg C for A/D D114(8-bit)
retlw D30 ; deg C for A/D D115(8-bit)
retlw D29 ; deg C for A/D D116(8-bit)
retlw D29 ; deg C for A/D D117(8-bit)
retlw D29 ; deg C for A/D D118(8-bit)
retlw D28 ; deg C for A/D D119(8-bit)
retlw D28 ; deg C for A/D D120(8-bit)
retlw D28 ; deg C for A/D D121(8-bit)
retlw D27 ; deg C for A/D D122(8-bit)
retlw D27 ; deg C for A/D D123(8-bit)
retlw D27 ; deg C for A/D D124(8-bit)
retlw D26 ; deg C for A/D D125(8-bit)
retlw D26 ; deg C for A/D D126(8-bit)
retlw D26 ; deg C for A/D D127(8-bit)
retlw D25 ; deg C for A/D D128(8-bit)
retlw D25 ; deg C for A/D D129(8-bit)
retlw D24 ; deg C for A/D D130(8-bit)
retlw D24 ; deg C for A/D D131(8-bit)
retlw D24 ; deg C for A/D D132(8-bit)
retlw D24 ; deg C for A/D D133(8-bit)
retlw D23 ; deg C for A/D D134(8-bit)
retlw D23 ; deg C for A/D D135(8-bit)
retlw D23 ; deg C for A/D D136(8-bit)
retlw D22 ; deg C for A/D D137(8-bit)
retlw D22 ; deg C for A/D D138(8-bit)
retlw D22 ; deg C for A/D D139(8-bit)
retlw D21 ; deg C for A/D D140(8-bit)
retlw D21 ; deg C for A/D D141(8-bit)
retlw D21 ; deg C for A/D D142(8-bit)
retlw D20 ; deg C for A/D D143(8-bit)
retlw D20 ; deg C for A/D D144(8-bit)
retlw D20 ; deg C for A/D D145(8-bit)
retlw D19 ; deg C for A/D D146(8-bit)
retlw D19 ; deg C for A/D D147(8-bit)
retlw D19 ; deg C for A/D D148(8-bit)
retlw D18 ; deg C for A/D D149(8-bit)
retlw D18 ; deg C for A/D D150(8-bit)
retlw D18 ; deg C for A/D D151(8-bit)
retlw D17 ; deg C for A/D D152(8-bit)
retlw D17 ; deg C for A/D D153(8-bit)
retlw D17 ; deg C for A/D D154(8-bit)
retlw D16 ; deg C for A/D D155(8-bit)
retlw D16 ; deg C for A/D D156(8-bit)
retlw D16 ; deg C for A/D D157(8-bit)
retlw D15 ; deg C for A/D D158(8-bit)
retlw D15 ; deg C for A/D D159(8-bit)
retlw D15 ; deg C for A/D D160(8-bit)
retlw D14 ; deg C for A/D D161(8-bit)
retlw D14 ; deg C for A/D D162(8-bit)
retlw D14 ; deg C for A/D D163(8-bit)
retlw D13 ; deg C for A/D D164(8-bit)
retlw D13 ; deg C for A/D D165(8-bit)
retlw D13 ; deg C for A/D D166(8-bit)
retlw D12 ; deg C for A/D D167(8-bit)
retlw D12 ; deg C for A/D D168(8-bit)
retlw D12 ; deg C for A/D D169(8-bit)
retlw D11 ; deg C for A/D D170(8-bit)
retlw D11 ; deg C for A/D D171(8-bit)
retlw D11 ; deg C for A/D D172(8-bit)
retlw D10 ; deg C fo
This data was donated by: Mr. hisham bahaa-aldeen (hisham2630@gmail.com)
Programming source code for the proposed 12V/24V solar MPPT circuit using PIC16F88
; 100W Solar Charger
; upgraded with a supplementary bulk charge restart feature after a 4hr break when sunlight returns to panel
; Option set when RB0 low
; Supplementary bulk restart anytime power demanded for float charging. Option set when RB1 low
; Added switch to float mode if bulk charging takes less than 60s. ie if the battery is fully charged
list P=16F88
#include p16f88.inc
ERRORLEVEL -302
ERRORLEVEL -306
;Program Configuration Register 1
__CONFIG _CONFIG1, _CP_ALL & _CCP1_RB3 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_ON & _MCLR_ON & _PWRTE_ON & _WDT_OFF & _INTRC_IO
;Program Configuration Register 2
__CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF
; Bank 0 RAM
DIGITAL equ H20 ; storage
FIRST equ H21 ; first run
CUT_M equ H22 ; cutout voltage high byte
CUT_L equ H23 ; cutout voltage low byte
FLOAT_H equ H24 ; float voltage high byte
FLOAT_L equ H25 ; float voltage low byte
COMP equ H26 ; compensation (temperature)
BATT_HI equ H27 ; battery volts high byte
BATT_LO equ H28 ; battery low byte
DELCNT equ H29 ; delay counter
FLASHER equ H2A ; LED flasher timer
TEMPERATURE equ H2B ; temperature reading deg C
THERMISTOR equ H2C ; thermistor flag for LED
CUT_COMP_M equ H2D ; cutout temp. compensated voltage high byte
CUT_COMP_L equ H2E ; cutout temp. compensated voltage low byte
FLOAT_COMP_M equ H2F ; float temp. compensated voltage high byte
FLOAT_COMP_L equ H30 ; float temp. compensated voltage low byte
NEGATIVE equ H31 ; subtract negative flag
VALUE_1 equ H32 ; delay counter
VALUE_2 equ H33 ; delay counter
HOUR0 equ H34 ; hour counter
HOUR1 equ H35 ; 14 seconds counter for hour counter (256 x 14s=1hour)
SENSOR_COUNT equ H36 ; sensor counter for periodic checking
SENSOR_COUNT1 equ H37 ; sensor counter for periodic checking
CELL_LO equ H38 ; solar cell voltage ls byte
CELL_HI equ H39 ; solar cell voltage ms byte
CELL_I_LO equ H3A ; solar cell current ls byte
CELL_I_HI equ H3B ; solar cell current ms byte
CHARGE_STATE equ H3C ; 0 charge, 1 float
CHARGE_FLAG equ H3D ; flag for charge
CHRG_RATE equ H3E ; charge change rate
CELL_V equ H3F ; solar cell voltage 8-bit
CELL_I equ H40 ; solar cell current 8-bit
PERIOD equ H41 ; power calculation rate
CCPR1_STORE equ H42 ; CCPR1L storage value
POWERH equ H43 ; power ms byte
POWERL equ H44 ; power ls byte
VALUE1 equ H45 ; temporary value
VALUE2 equ H46 ; temporary value
VALUE3 equ H47 ; temporary value
VALUE4 equ H48 ; temporary value
EQ_FLAG equ H49 ; equalisation flag
EQ_LO equ H4A ; ls byte EQ battery voltage
EQ_HI equ H4B ; ms byte EQ battery voltage
EQ_LO_COMP equ H4C ; ls byte temp. compensated EQ battery voltage
EQ_HI_COMP equ H4D ; ms byte temp. compensated EQ battery voltage
EQ_LEVEL equ H4E ; equalisation input (RB4) level store
BATT_IND equ H4F ; battery indicator flag when error
BURST_FLG equ H50 ; burst flag
HOUR3 equ H51 ; 4 hour counter
HOUR2 equ H52 ; 56 seconds counter for hour counter (256 x 56s=1hour)
BULK_TIMER equ H53 ; bulk charge timer (60s)
BULK_TIMER_END equ H54 ; bulk timer ended flag
; math routines
TEMP1 equ H5C
TEMPB0 equ H5D
TEMPB1 equ H5E
TEMPB2 equ H5F
TEMP equ H60
REMB3 equ H61
REMB2 equ H62
REMB1 equ H63
REMB0 equ H64
AARGB5 equ H65
AARGB4 equ H66
AARGB3 equ H67
AARGB2 equ H68
AARGB1 equ H69
AARGB0 equ H6A ; most significant byte of argument A
BARGB3 equ H6B
BARGB2 equ H6C
BARGB1 equ H6D
BARGB0 equ H6E ; most significant byte of argument B
LOOPCOUNT equ H6F ; division counter
; All Banks RAM
; Interrupt store registers
W_TMP equ H70 ; storage of w before interrupt
STATUS_TMP equ H71 ; status storage before interrupt
; start at memory 0
org 0
goto SETUP
org 4
goto INTERRUPT
; position the lookup table at start to avoid a 256 bit boundary
TEMP_CONV ; convert A/D values to deg C based on thermistor R=Ae**(B/T) where (T is in K ie deg C plus 273)
; A =0.01058 and B is 4100
addwf PCL,f ; add value to program counter
; 60 deg C max
retlw D60 ; 60deg C for A/D D49 (8-bit)
retlw D59 ; deg C for A/D D50(8-bit)
retlw D58 ; deg C for A/D D51(8-bit)
retlw D58 ; deg C for A/D D52(8-bit)
retlw D57 ; deg C for A/D D53(8-bit)
retlw D57 ; deg C for A/D D54(8-bit)
retlw D56 ; deg C for A/D D55(8-bit)
retlw D56 ; deg C for A/D D56(8-bit)
retlw D55 ; deg C for A/D D57(8-bit)
retlw D54 ; deg C for A/D D58(8-bit)
retlw D54 ; 54 deg C for A/D D59(8-bit)
retlw D53 ; deg C for A/D D60(8-bit)
retlw D53 ; deg C for A/D D61(8-bit)
retlw D52 ; deg C for A/D D62(8-bit)
retlw D52 ; deg C for A/D D63(8-bit)
retlw D51 ; deg C for A/D D64(8-bit)
retlw D50 ; deg C for A/D D65(8-bit)
retlw D50 ; deg C for A/D D66(8-bit)
retlw D50 ; deg C for A/D D67(8-bit)
retlw D49 ; deg C for A/D D68(8-bit)
retlw D49 ; deg C for A/D D69(8-bit)
retlw D48 ; 48 deg C for A/D D70(8-bit)
retlw D48 ; deg C for A/D D71(8-bit)
retlw D47 ; deg C for A/D D72(8-bit)
retlw D47 ; deg C for A/D D73(8-bit)
retlw D46 ; deg C for A/D D74(8-bit)
retlw D46 ; deg C for A/D D75(8-bit)
retlw D45 ; deg C for A/D D76(8-bit)
retlw D45 ; deg C for A/D D77(8-bit)
retlw D44 ; deg C for A/D D78(8-bit)
retlw D44 ; deg C for A/D D79(8-bit)
retlw D43 ; deg C for A/D D80(8-bit)
retlw D43 ; deg C for A/D D81(8-bit)
retlw D43 ; deg C for A/D D82(8-bit)
retlw D42 ; deg C for A/D D83(8-bit)
retlw D42 ; deg C for A/D D84(8-bit)
retlw D41 ; deg C for A/D D85(8-bit)
retlw D41 ; deg C for A/D D86(8-bit)
retlw D40 ; deg C for A/D D87(8-bit)
retlw D40 ; deg C for A/D D88(8-bit)
retlw D40 ; 40 deg C for A/D D89(8-bit)
retlw D39 ; deg C for A/D D90(8-bit)
retlw D39 ; deg C for A/D D91(8-bit)
retlw D38 ; deg C for A/D D92(8-bit)
retlw D38 ; deg C for A/D D93(8-bit)
retlw D38 ; deg C for A/D D94(8-bit)
retlw D37 ; deg C for A/D D95(8-bit)
retlw D37 ; deg C for A/D D96(8-bit)
retlw D36 ; deg C for A/D D97(8-bit)
retlw D36 ; deg C for A/D D98(8-bit)
retlw D36 ; deg C for A/D D99(8-bit)
retlw D35 ; deg C for A/D D100(8-bit)
retlw D35 ; deg C for A/D D101(8-bit)
retlw D34 ; deg C for A/D D102(8-bit)
retlw D34 ; deg C for A/D D103(8-bit)
retlw D34 ; deg C for A/D D104(8-bit)
retlw D33 ; deg C for A/D D105(8-bit)
retlw D33 ; deg C for A/D D106(8-bit)
retlw D33 ; deg C for A/D D107(8-bit)
retlw D32 ; deg C for A/D D108(8-bit)
retlw D32 ; 32 deg C for A/D D109(8-bit)
retlw D32 ; deg C for A/D D110(8-bit)
retlw D31 ; deg C for A/D D111(8-bit)
retlw D31 ; deg C for A/D D112(8-bit)
retlw D30 ; deg C for A/D D113(8-bit)
retlw D30 ; deg C for A/D D114(8-bit)
retlw D30 ; deg C for A/D D115(8-bit)
retlw D29 ; deg C for A/D D116(8-bit)
retlw D29 ; deg C for A/D D117(8-bit)
retlw D29 ; deg C for A/D D118(8-bit)
retlw D28 ; deg C for A/D D119(8-bit)
retlw D28 ; deg C for A/D D120(8-bit)
retlw D28 ; deg C for A/D D121(8-bit)
retlw D27 ; deg C for A/D D122(8-bit)
retlw D27 ; deg C for A/D D123(8-bit)
retlw D27 ; deg C for A/D D124(8-bit)
retlw D26 ; deg C for A/D D125(8-bit)
retlw D26 ; deg C for A/D D126(8-bit)
retlw D26 ; deg C for A/D D127(8-bit)
retlw D25 ; deg C for A/D D128(8-bit)
retlw D25 ; deg C for A/D D129(8-bit)
retlw D24 ; deg C for A/D D130(8-bit)
retlw D24 ; deg C for A/D D131(8-bit)
retlw D24 ; deg C for A/D D132(8-bit)
retlw D24 ; deg C for A/D D133(8-bit)
retlw D23 ; deg C for A/D D134(8-bit)
retlw D23 ; deg C for A/D D135(8-bit)
retlw D23 ; deg C for A/D D136(8-bit)
retlw D22 ; deg C for A/D D137(8-bit)
retlw D22 ; deg C for A/D D138(8-bit)
retlw D22 ; deg C for A/D D139(8-bit)
retlw D21 ; deg C for A/D D140(8-bit)
retlw D21 ; deg C for A/D D141(8-bit)
retlw D21 ; deg C for A/D D142(8-bit)
retlw D20 ; deg C for A/D D143(8-bit)
retlw D20 ; deg C for A/D D144(8-bit)
retlw D20 ; deg C for A/D D145(8-bit)
retlw D19 ; deg C for A/D D146(8-bit)
retlw D19 ; deg C for A/D D147(8-bit)
retlw D19 ; deg C for A/D D148(8-bit)
retlw D18 ; deg C for A/D D149(8-bit)
retlw D18 ; deg C for A/D D150(8-bit)
retlw D18 ; deg C for A/D D151(8-bit)
retlw D17 ; deg C for A/D D152(8-bit)
retlw D17 ; deg C for A/D D153(8-bit)
retlw D17 ; deg C for A/D D154(8-bit)
retlw D16 ; deg C for A/D D155(8-bit)
retlw D16 ; deg C for A/D D156(8-bit)
retlw D16 ; deg C for A/D D157(8-bit)
retlw D15 ; deg C for A/D D158(8-bit)
retlw D15 ; deg C for A/D D159(8-bit)
retlw D15 ; deg C for A/D D160(8-bit)
retlw D14 ; deg C for A/D D161(8-bit)
retlw D14 ; deg C for A/D D162(8-bit)
retlw D14 ; deg C for A/D D163(8-bit)
retlw D13 ; deg C for A/D D164(8-bit)
retlw D13 ; deg C for A/D D165(8-bit)
retlw D13 ; deg C for A/D D166(8-bit)
retlw D12 ; deg C for A/D D167(8-bit)
retlw D12 ; deg C for A/D D168(8-bit)
retlw D12 ; deg C for A/D D169(8-bit)
retlw D11 ; deg C for A/D D170(8-bit)
retlw D11 ; deg C for A/D D171(8-bit)
retlw D11 ; deg C for A/D D172(8-bit)
retlw D10 ; deg C fo
Available link for download