amodpathak
- 4th June 2015, 13:46
IAM MAKING TEMPERATURE CONTROLLER USING ntc THERMISTOR FROM -10 DEGREE TO 50 DEGREE.BUT MY TEMPERATURE IS NOT GOING BELOW 0. PLS CHECK MY CODE AND GUIDE ME.THANKS
DG1 VAR BYTE
DG2 VAR BYTE
DG3 VAR BYTE
DIGIT VAR BYTE
DG VAR BYTE
COUNTT VAR BYTE
NUMB VAR WORD
N VAR WORD
adval var word
temp var word
TEMPP VAR WORD
ADCON1=%10000000
adcon0=%00000101
TRISA=1
TRISB=%00111000
TRISC=0
numb=0
gosub mread
'n=numb
GOSUB DIGITCALC
'-------------------------------------------------------------------------
MAIN1:
GOSUB DISPLAY
IF PORTB.3=1 THEN MREAD
IF PORTB.3=0 THEN MAIN
GOTO MAIN1
'-------------------------------------------------------------------------
MAIN:
ADCON0.2=1
GO:
IF ADCON0.2=1 THEN GO
adval.HIGHBYTE = ADRESH
adval.lowbyte = ADRESL
temp=adval
N=temp
gosub display
gosub digitcalc
If adval>NUMB then PORTB.7=0
IF ADVAL< NUMB-5 THEN PORTB.7=1
GOTO MAIN1
'_____________________________________
UP:
IF NUMB=50 THEN MAIN
NUMB=NUMB+1
N=NUMB
GOSUB DIGITCALC
IF PORTB.4=1 THEN MEMORY
GOTO MAIN1
memory:
WRITE 0,numb.HighByte
WRITE 1,numb.LowByte
GOTO MAIN1
'_____________________________________
DOWN:
IF NUMB=-10 THEN MAIN 'MIN LIMIT
NUMB=NUMB-1
N=NUMB
GOSUB DIGITCALC
IF PORTB.5=1 THEN MEMORY
GOTO MAIN1
'_____________________________________
MREAD:
READ 0,numb.HighByte
READ 1,numb.LowByte
n=numb
gosub digitcalc
IF PORTB.4=1 THEN UP
IF PORTB.5=1 THEN DOWN
goto main1
__________________________________________________ _
DISPLAY:
FOR COUNTT=0 TO 99
PORTC=DG1
PORTB.2=1
PAUSEUS 300
PORTB.2=0
PORTC=DG2
PORTB.1=1
PAUSEUS 300
PORTB.1=0
PORTC=DG3
PORTB.0=1
PAUSEUS 300
PORTB.0=0
NEXT COUNTT
RETURN
'_________________________________________________ _______________
'_________________________________________________ _________________________
DIGITCALC:
DIGIT=0
LP1:
IF N<100 THEN DS1
N=N-100
DIGIT=DIGIT+1
GOTO LP1
DS1:
GOSUB FND
DG1=DG
DIGIT=0
LP2:
IF N<10 THEN DS2
N=N-10
DIGIT=DIGIT+1
GOTO LP2
DS2:
GOSUB FND
DG2=DG
DIGIT=N
GOSUB FND
DG3=DG
RETURN
'_________________________________________________ _________________________
'_________________________________________________ _________________________
FND:
FND0:
IF DIGIT>0 THEN FND1
DG=$7E '%0111 1110
GOTO FNDEND
FND1:
IF DIGIT>1 THEN FND2
DG=$48 '%0100 1000
GOTO FNDEND
FND2:
IF DIGIT>2 THEN FND3
DG=$3D '%0011 1101
GOTO FNDEND
FND3:
IF DIGIT>3 THEN FND4
DG=$6D '%0110 1101
GOTO FNDEND
FND4:
IF DIGIT>4 THEN FND5
DG=$4B '%0100 0011
GOTO FNDEND
FND5:
IF DIGIT>5 THEN FND6
DG=$67 '%0110 0111
GOTO FNDEND
FND6:
IF DIGIT>6 THEN FND7
DG=$77 '%0111 0111
GOTO FNDEND
FND7:
IF DIGIT>7 THEN FND8
DG=$4C '%0100 1100
GOTO FNDEND
FND8:
IF DIGIT>8 THEN FND9
DG=$7F '%0111 1111
GOTO FNDEND
FND9:
DG=$6F '%0110 1111
FNDEND:
RETURN
'_________________________________________________ _________________________
DG1 VAR BYTE
DG2 VAR BYTE
DG3 VAR BYTE
DIGIT VAR BYTE
DG VAR BYTE
COUNTT VAR BYTE
NUMB VAR WORD
N VAR WORD
adval var word
temp var word
TEMPP VAR WORD
ADCON1=%10000000
adcon0=%00000101
TRISA=1
TRISB=%00111000
TRISC=0
numb=0
gosub mread
'n=numb
GOSUB DIGITCALC
'-------------------------------------------------------------------------
MAIN1:
GOSUB DISPLAY
IF PORTB.3=1 THEN MREAD
IF PORTB.3=0 THEN MAIN
GOTO MAIN1
'-------------------------------------------------------------------------
MAIN:
ADCON0.2=1
GO:
IF ADCON0.2=1 THEN GO
adval.HIGHBYTE = ADRESH
adval.lowbyte = ADRESL
temp=adval
N=temp
gosub display
gosub digitcalc
If adval>NUMB then PORTB.7=0
IF ADVAL< NUMB-5 THEN PORTB.7=1
GOTO MAIN1
'_____________________________________
UP:
IF NUMB=50 THEN MAIN
NUMB=NUMB+1
N=NUMB
GOSUB DIGITCALC
IF PORTB.4=1 THEN MEMORY
GOTO MAIN1
memory:
WRITE 0,numb.HighByte
WRITE 1,numb.LowByte
GOTO MAIN1
'_____________________________________
DOWN:
IF NUMB=-10 THEN MAIN 'MIN LIMIT
NUMB=NUMB-1
N=NUMB
GOSUB DIGITCALC
IF PORTB.5=1 THEN MEMORY
GOTO MAIN1
'_____________________________________
MREAD:
READ 0,numb.HighByte
READ 1,numb.LowByte
n=numb
gosub digitcalc
IF PORTB.4=1 THEN UP
IF PORTB.5=1 THEN DOWN
goto main1
__________________________________________________ _
DISPLAY:
FOR COUNTT=0 TO 99
PORTC=DG1
PORTB.2=1
PAUSEUS 300
PORTB.2=0
PORTC=DG2
PORTB.1=1
PAUSEUS 300
PORTB.1=0
PORTC=DG3
PORTB.0=1
PAUSEUS 300
PORTB.0=0
NEXT COUNTT
RETURN
'_________________________________________________ _______________
'_________________________________________________ _________________________
DIGITCALC:
DIGIT=0
LP1:
IF N<100 THEN DS1
N=N-100
DIGIT=DIGIT+1
GOTO LP1
DS1:
GOSUB FND
DG1=DG
DIGIT=0
LP2:
IF N<10 THEN DS2
N=N-10
DIGIT=DIGIT+1
GOTO LP2
DS2:
GOSUB FND
DG2=DG
DIGIT=N
GOSUB FND
DG3=DG
RETURN
'_________________________________________________ _________________________
'_________________________________________________ _________________________
FND:
FND0:
IF DIGIT>0 THEN FND1
DG=$7E '%0111 1110
GOTO FNDEND
FND1:
IF DIGIT>1 THEN FND2
DG=$48 '%0100 1000
GOTO FNDEND
FND2:
IF DIGIT>2 THEN FND3
DG=$3D '%0011 1101
GOTO FNDEND
FND3:
IF DIGIT>3 THEN FND4
DG=$6D '%0110 1101
GOTO FNDEND
FND4:
IF DIGIT>4 THEN FND5
DG=$4B '%0100 0011
GOTO FNDEND
FND5:
IF DIGIT>5 THEN FND6
DG=$67 '%0110 0111
GOTO FNDEND
FND6:
IF DIGIT>6 THEN FND7
DG=$77 '%0111 0111
GOTO FNDEND
FND7:
IF DIGIT>7 THEN FND8
DG=$4C '%0100 1100
GOTO FNDEND
FND8:
IF DIGIT>8 THEN FND9
DG=$7F '%0111 1111
GOTO FNDEND
FND9:
DG=$6F '%0110 1111
FNDEND:
RETURN
'_________________________________________________ _________________________