DEVICE 12F629 CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, MCLRE_OFF ALL_DIGITAL TRUE OSCCAL = 200 ;Hoe hoger de waarde, des te sneller (prototype 170 ... 230) ;Logische constanten SYMBOL FALSE = 0 ;Niet waar SYMBOL HOOG = 1 ;Hoog signaal SYMBOL LAAG = 0 ;Laag signaal SYMBOL TRUE = 1 ;Waar ;Algemene constanten SYMBOL StapPulsTijd = 600 ;uSec: Veel sneller mag niet volgens de datasheet van de X9C103 ;Poortnamen SYMBOL TempHoger = GPIO.0 ;U/D: TRUE = temperatuur hoger SYMBOL ChipSelect = GPIO.1 ;CS : Normaal continu LAAG SYMBOL Stap = GPIO.2 ;INC: Stapje hoger of lager (afh. van 'TempHoger') SYMBOL Ingang = GPIO.4 ;Dataingang (300 Baud, geinverteerd) via optocoupler DIM StapTeller AS BYTE ;Teller van FOR...NEXT lus die de stappen van de potmeter telt DIM TempWaarde AS BYTE ;Bevat de ontvangen temperatuurwaarde (1...100 ~ 12oC...24,5oC) PORTB_PULLUPS ON ;Voor de optocoupler CLEAR ;Wis alle RAM geheugen ; 76543210 GPIO = %00000000 TRISIO = %11111000 ;Poorten GPIO.2, GPIO.1 en GPIO.0 uitgangen ;Afregeling OSCCAL ===========;Buzzer op GPIO.5 moet elke seconde een korte piep geven 'while 1 = 1 ' high gpio.5 ' delayms 100 ' low GPIO.5 ' delayms 900 'wend ;============================= TempWaarde = 20 ;Opstartwaarde na stroomuitval max.100 (20 ~ 14oC) ChipSelect = LAAG ;Chip X9C103 activeren DELAYMS 1 ;Heel even wachten zodat CS signaal kan stabiliseren WHILE 1 = 1 TempHoger = FALSE ;Potmeter naar omlaag regelen FOR StapTeller = 1 TO 100 ;Potmeter eerst helemaal naar minimaal draaien DELAYUS StapPulsTijd ;Pauzetijd voor U/D (Stap signaal) Stap = HOOG ;Maak U/D HOOG DELAYUS StapPulsTijd ;PulsTijd voor U/D (Stap signaal) Stap = LAAG ;Maak U/D weer LAAG NEXT TempHoger = TRUE ;Potmeter naar omhoog regelen FOR StapTeller = 1 TO TempWaarde ;Potmeter omhoog naar ontvangen instelling regelen DELAYUS StapPulsTijd ;Pauzetijd voor U/D (Stap signaal) Stap = HOOG ;Maak U/D HOOG DELAYUS StapPulsTijd ;PulsTijd voor U/D (Stap signaal) Stap = LAAG ;Maak U/D weer LAAG NEXT REPEAT ;Wacht op ontvangst (van een geldige waarde) SERIN Ingang, 19697, [WAIT ("Temp"), TempWaarde] ;300 Baud geinverteerd UNTIL TempWaarde > 0 AND TempWaarde < 101 ;Waarde mag alleen 1 ... 100 zijn WEND