
; CC5X Version 3.3H, Copyright (c) B Knudsen Data
; C compiler for the PICmicro family
; ************  17. Apr 2009  16:51  *************

	processor  16F690
	radix  DEC

	__config 0x3FA2

TMR0        EQU   0x01
TRISA       EQU   0x85
TRISB       EQU   0x86
Carry       EQU   0
RP0         EQU   5
RP1         EQU   6
OPTION_REG  EQU   0x81
TXREG       EQU   0x19
ADRESH      EQU   0x1E
ADCON0      EQU   0x1F
TRISC       EQU   0x87
SPBRG       EQU   0x99
ADRESL      EQU   0x9E
ADCON1      EQU   0x9F
ANSEL       EQU   0x11E
ANSELH      EQU   0x11F
TXIF        EQU   4
CREN        EQU   4
RX9         EQU   6
SPEN        EQU   7
GO          EQU   1
RCIE        EQU   5
BRGH        EQU   2
SYNC        EQU   4
TXEN        EQU   5
TX9         EQU   6
arg1        EQU   0x20
arg2        EQU   0x21
rval        EQU   0x22
counter     EQU   0x24
arg1_3      EQU   0x22
arg2_3      EQU   0x24
rval_3      EQU   0x25
rvalH       EQU   0x27
counter_3   EQU   0x28
arg1_5      EQU   0x20
arg2_5      EQU   0x22
rm          EQU   0x23
counter_5   EQU   0x24
tmp         EQU   0x25
homer       EQU   0x29
para        EQU   0x2B
msb         EQU   0x2D
lsb         EQU   0x2F
temperature EQU   0x31
humidity    EQU   0x33
szaz        EQU   0x35
tiz         EQU   0x36
egy         EQU   0x37
tizegesz    EQU   0x38
szazhum     EQU   0x39
tizhum      EQU   0x3A
egyhum      EQU   0x3B
tizegeszhum EQU   0x3C
ascitiz     EQU   0x3D
asciszaz    EQU   0x3E
asciegy     EQU   0x3F
ascitizhum  EQU   0x40
asciszazhum EQU   0x41
asciegyhum  EQU   0x42
millisec    EQU   0x20

	GOTO main

  ; FILE c:\picc\cc5x\math16.h
			;// SIZE
			;
			;#pragma library 1
			;/*
			;uns16 operator* _mult8x8( uns8 arg1, uns8 arg2);
			;int16 operator* _multS8x8( int8 arg1, int8 arg2);
			;uns16 operator* _multU16x8( uns16 arg1, uns8 arg2);
			;uns16 operator* _mult16x16( uns16 arg1, uns16 arg2);
			;uns16 operator/ _divU16_8( uns16 arg1, uns8 arg2);
			;uns16 operator/ _divU16_16( uns16 arg1, uns16 arg2);
			;int16 operator/ _divS16_8( int16 arg1, int8 arg2);
			;int16 operator/ _divS16_16( int16 arg1, int16 arg2);
			;uns8 operator% _remU16_8( uns16 arg1, uns8 arg2);
			;uns16 operator% _remU16_16( uns16 arg1, uns16 arg2);
			;int8 operator% _remS16_8( int16 arg1, int8 arg2);
			;int16 operator% _remS16_16( int16 arg1, int16 arg2);
			;*/
			;
			;#if __CoreSet__ < 1600
			; #define genAdd(r,a) W=a; btsc(Carry); W=incsz(a); r+=W
			; #define genSub(r,a) W=a; btss(Carry); W=incsz(a); r-=W
			; #define genAddW(r,a) W=a; btsc(Carry); W=incsz(a); W=r+W
			; #define genSubW(r,a) W=a; btss(Carry); W=incsz(a); W=r-W
			;#else
			; #define genAdd(r,a) W=a; r=addWFC(r)
			; #define genSub(r,a) W=a; r=subWFB(r)
			; #define genAddW(r,a) W=a; W=addWFC(r)
			; #define genSubW(r,a) W=a; W=subWFB(r)
			;#endif
			;
			;
			;int8 operator*( int8 arg1, int8 arg2)  @
			;
			;uns16 operator* _mult8x8( uns8 arg1, uns8 arg2)
			;{
_mult8x8
	BCF   0x03,RP0
	BCF   0x03,RP1
	MOVWF arg2
			;    uns16 rval;
			;    char counter = sizeof(arg2)*8;
	MOVLW .8
	MOVWF counter
			;    rval.high8 = 0;
	CLRF  rval+1
			;    W = arg1;
	MOVF  arg1,W
			;    do  {
			;        arg2 = rr( arg2);
m001	BCF   0x03,RP0
	BCF   0x03,RP1
	RRF   arg2,1
			;        if (Carry)
	BTFSC 0x03,Carry
			;            rval.high8 += W;
	ADDWF rval+1,1
			;        rval = rr( rval);
	BCF   0x03,RP0
	BCF   0x03,RP1
	RRF   rval+1,1
	RRF   rval,1
			;        counter = decsz(counter);
	DECFSZ counter,1
			;    } while (1);
	GOTO  m001
			;    return rval;
	MOVF  rval,W
	RETURN
			;}
			;
			;
			;int16 operator* _multS8x8( int8 arg1, int8 arg2)
			;{
_multS8x8
			;    uns16 rval;
			;    char counter = sizeof(arg2)*8;
			;    int8 tmpArg2 = arg2;
			;    rval.high8 = 0;
			;    W = arg1;
			;    do  {
			;        tmpArg2 = rr( tmpArg2);
			;        if (Carry)
			;            rval.high8 += W;
			;        rval = rr( rval);
			;        counter = decsz(counter);
			;    } while (1);
			;    W = arg2;
			;    if (arg1 < 0)
			;        rval.high8 -= W;
			;    W = arg1;
			;    if (arg2 < 0)
			;        rval.high8 -= W;
			;    return rval;
			;}
			;
			;
			;uns16 operator*( uns8 arg1, uns16 arg2) exchangeArgs @
			;
			;uns16 operator* _multU16x8( uns16 arg1, uns8 arg2)
			;{
_multU16x8
	BCF   0x03,RP0
	BCF   0x03,RP1
	MOVWF arg2_3
			;    uns16 rval;
			;    uns8 rvalH = 0;
	CLRF  rvalH
			;    char counter = sizeof(arg1)*8;
	MOVLW .16
	MOVWF counter_3
			;    W = arg2;
	MOVF  arg2_3,W
			;    do  {
			;        arg1 = rr( arg1);
m002	BCF   0x03,RP0
	BCF   0x03,RP1
	RRF   arg1_3+1,1
	RRF   arg1_3,1
			;        if (Carry)
	BTFSC 0x03,Carry
			;            rvalH += W;
	ADDWF rvalH,1
			;        rvalH = rr(rvalH);
	BCF   0x03,RP0
	BCF   0x03,RP1
	RRF   rvalH,1
			;        rval = rr(rval);
	RRF   rval_3+1,1
	RRF   rval_3,1
			;        counter = decsz(counter);
	DECFSZ counter_3,1
			;    } while (1);
	GOTO  m002
			;    return rval;
	MOVF  rval_3,W
	RETURN
			;}
			;
			;
			;int16 operator*( int16 arg1, int16 arg2) @
			;
			;uns16 operator* _mult16x16( uns16 arg1, uns16 arg2)
			;{
_mult16x16
			;    uns16 rval;
			;    char counter = sizeof(arg1)*8;
			;    do  {
			;        Carry = 0;
			;        rval = rl( rval);
			;        arg1 = rl( arg1);
			;        if (Carry)
			;            rval += arg2;
			;        counter = decsz(counter);
			;    } while (1);
			;    return rval;
			;}
			;
			;
			;
			;uns16 operator/ _divU16_8( uns16 arg1, uns8 arg2)
			;{
_divU16_8
	BCF   0x03,RP0
	BCF   0x03,RP1
	MOVWF arg2_5
			;    uns8 rm = 0;
	CLRF  rm
			;    char counter = sizeof(arg1)*8+1;
	MOVLW .17
	MOVWF counter_5
			;    goto ENTRY;
	GOTO  m004
			;    do  {
			;        rm = rl( rm);
m003	BCF   0x03,RP0
	BCF   0x03,RP1
	RLF   rm,1
			;        uns8 tmp = rl( tmp);
	RLF   tmp,1
			;        W = rm - arg2;
	MOVF  arg2_5,W
	SUBWF rm,W
			;        if (tmp&1)
	BTFSC tmp,0
			;            Carry = 1;
	BSF   0x03,Carry
			;        if (Carry)
	BTFSS 0x03,Carry
	GOTO  m004
			;            rm = W;
	BCF   0x03,RP0
	BCF   0x03,RP1
	MOVWF rm
			;       ENTRY:
			;        arg1 = rl( arg1);
m004	BCF   0x03,RP0
	BCF   0x03,RP1
	RLF   arg1_5,1
	RLF   arg1_5+1,1
			;        counter = decsz(counter);
	DECFSZ counter_5,1
			;    } while (1);
	GOTO  m003
			;    return arg1;
	MOVF  arg1_5,W
	RETURN
			;}
			;
			;
			;uns16 operator/ _divU16_16( uns16 arg1, uns16 arg2)
			;{
_divU16_16
			;    uns16 rm = 0;
			;    char counter = sizeof(arg1)*8+1;
			;    goto ENTRY;
			;    do  {
			;        rm = rl( rm);
			;        W = rm.low8 - arg2.low8;
			;        genSubW( rm.high8, arg2.high8);
			;        if (!Carry)
			;            goto ENTRY;
			;        rm.high8 = W;
			;        rm.low8 -= arg2.low8;
			;        Carry = 1;
			;       ENTRY:
			;        arg1 = rl( arg1);
			;        counter = decsz(counter);
			;    } while (1);
			;    return arg1;
			;}
			;
			;
			;int8  operator/ (int8 arg1, int8 arg2) @
			;
			;int16 operator/ _divS16_8( int16 arg1, int8 arg2)
			;{
_divS16_8
			;    uns8 rm = 0;
			;    char counter = 16+1;
			;    char sign = arg1.high8 ^ arg2.high8;
			;    if (arg1 < 0)  {
			;       INVERT:
			;        arg1 = -arg1;
			;        if (!counter)
			;            return arg1;
			;    }
			;    if (arg2 < 0)
			;        arg2 = -arg2;
			;    goto ENTRY;
			;    do  {
			;        rm = rl( rm);
			;        W = rm - arg2;
			;        if (Carry)
			;            rm = W;
			;       ENTRY:
			;        arg1 = rl( arg1);
			;        counter = decsz(counter);
			;    } while (1);
			;    if (sign & 0x80)
			;        goto INVERT;
			;    return arg1;
			;}
			;
			;
			;int16 operator/ _divS16_16( int16 arg1, int16 arg2)
			;{
_divS16_16
			;    uns16 rm = 0;
			;    char counter = sizeof(arg1)*8+1;
			;    char sign = arg1.high8 ^ arg2.high8;
			;    if (arg1 < 0)  {
			;       INVERT:
			;        arg1 = -arg1;
			;        if (!counter)
			;            return arg1;
			;    }
			;    if (arg2 < 0)
			;        arg2 = -arg2;
			;    goto ENTRY;
			;    do  {
			;        rm = rl( rm);
			;        W = rm.low8 - arg2.low8;
			;        genSubW( rm.high8, arg2.high8);
			;        if (!Carry)
			;            goto ENTRY;
			;        rm.high8 = W;
			;        rm.low8 -= arg2.low8;
			;        Carry = 1;
			;       ENTRY:
			;        arg1 = rl( arg1);
			;        counter = decsz(counter);
			;    } while (1);
			;    if (sign & 0x80)
			;        goto INVERT;
			;    return arg1;
			;}
			;
			;
			;uns8 operator% _remU16_8( uns16 arg1, uns8 arg2)
			;{
_remU16_8
			;    uns8 rm = 0;
			;    char counter = sizeof(arg1)*8;
			;    do  {
			;        arg1 = rl( arg1);
			;        rm = rl( rm);
			;        uns8 tmp = rl( tmp);
			;        W = rm - arg2;
			;        if (tmp&1)
			;            Carry = 1;
			;        if (Carry)
			;            rm = W;
			;        counter = decsz(counter);
			;    } while (1);
			;    return rm;
			;}
			;
			;
			;uns16 operator% _remU16_16( uns16 arg1, uns16 arg2)
			;{
_remU16_16
			;    uns16 rm = 0;
			;    char counter = sizeof(arg1)*8;
			;    do  {
			;        arg1 = rl( arg1);
			;        rm = rl( rm);
			;        W = rm.low8 - arg2.low8;
			;        genSubW( rm.high8, arg2.high8);
			;        if (!Carry)
			;            goto NOSUB;
			;        rm.high8 = W;
			;        rm.low8 -= arg2.low8;
			;      NOSUB:
			;        counter = decsz(counter);
			;    } while (1);
			;    return rm;
			;}
			;
			;
			;int8 operator% (int8 arg1, int8 arg2) @
			;
			;int8 operator% _remS16_8( int16 arg1, int8 arg2)
			;{
_remS16_8
			;    int8 rm = 0;
			;    char counter = 16;
			;    char sign = arg1.high8;
			;    if (arg1 < 0)
			;        arg1 = -arg1;
			;    if (arg2 < 0)
			;        arg2 = -arg2;
			;    do  {
			;        arg1 = rl( arg1);
			;        rm = rl( rm);
			;        W = rm - arg2;
			;        if (Carry)
			;            rm = W;
			;        counter = decsz(counter);
			;    } while (1);
			;    if (sign & 0x80)
			;        rm = -rm;
			;    return rm;
			;}
			;
			;
			;int16 operator% _remS16_16( int16 arg1, int16 arg2)
			;{
_remS16_16
			;    int16 rm = 0;
			;    char counter = sizeof(arg1)*8;
			;    char sign = arg1.high8;
			;    if (arg1 < 0)
			;        arg1 = -arg1;
			;    if (arg2 < 0)
			;        arg2 = -arg2;
			;    do  {
			;        arg1 = rl( arg1);
			;        rm = rl( rm);
			;        W = rm.low8 - arg2.low8;
			;        genSubW( rm.high8, arg2.high8);
			;        if (!Carry)
			;            goto NOSUB;
			;        rm.high8 = W;
			;        rm.low8 -= arg2.low8;
			;      NOSUB:
			;        counter = decsz(counter);
			;    } while (1);
			;    if (sign & 0x80)
			;        rm = -rm;
			;    return rm;

  ; FILE szenzor.c
			;#include <16F690.h>
			;#include <math16.h>
			;//#include <math24f.h>
			;
			;
			;#define CP_off  |= 0x3F30
			;#define LVP |= 128
			;#pragma config CP_off,PWRTE=on,WDTE=off,FOSC=HS,LVP
			;
			;
			;unsigned long homer, para, msb, lsb;
			;unsigned long temperature, humidity;
			;unsigned int szaz, tiz, egy, tizegesz, szazhum, tizhum, egyhum, tizegeszhum;
			;char  ascitiz, asciszaz, asciegy, ascitizhum, asciszazhum, asciegyhum;
			;
			;void InitUSART()
			;{
InitUSART
			;
			;	BRGH = 1;		// high speed serial mode
	BSF   0x03,RP0
	BCF   0x03,RP1
	BSF   0x98,BRGH
			;	SPBRG = 25;		// Set 9600 baud for 4 MHz oscillator
	MOVLW .25
	MOVWF SPBRG
			;	SYNC = 0;		// Clear SYNC bit -> Set ASYNC Mode
	BCF   0x98,SYNC
			;	SPEN = 1;		// Set serial port enable
	BCF   0x03,RP0
	BSF   0x18,SPEN
			;	TX9 = 0;			// 8-bit transmissions
	BSF   0x03,RP0
	BCF   0x98,TX9
			;	TXEN = 1;		// Enable transmission
	BSF   0x98,TXEN
			;	RCIE = 1;		// Rx interrupts are desired
	BSF   0x8C,RCIE
			;	RX9 = 0;			// 8-bit receptions
	BCF   0x03,RP0
	BCF   0x18,RX9
			;	CREN = 1;		// Enable reception
	BSF   0x18,CREN
			;}
	RETURN
			;
			;void delay(char millisec)
			;/* delays a multiple of 1 millisecond at 4 MHz */
			;{
delay
	BCF   0x03,RP0
	BCF   0x03,RP1
	MOVWF millisec
			;OPTION_REG = 7; /* prescaler divide by 8 */
	MOVLW .7
	BSF   0x03,RP0
	MOVWF OPTION_REG
			;do {
			;TMR0 = 0;
m005	BCF   0x03,RP0
	BCF   0x03,RP1
	CLRF  TMR0
			;clrwdt(); /* only if necessary */
	CLRWDT
			;while (TMR0 < 125) /* 125 * 8 = 1000 */
m006	MOVLW .125
	BCF   0x03,RP0
	BCF   0x03,RP1
	SUBWF TMR0,W
	BTFSS 0x03,Carry
			;;
	GOTO  m006
			;} while (-- millisec > 0);
	BCF   0x03,RP0
	BCF   0x03,RP1
	DECFSZ millisec,1
	GOTO  m005
			;}
	RETURN
			;
			;void ADC()
			;{
ADC
			;	ADCON0 = 0b.1001.0001; //Right justified, VDD, 0100 = AN4, 0 = A/D conversion completed/not in progress, 1 = ADC is enabled
	MOVLW .145
	BCF   0x03,RP0
	BCF   0x03,RP1
	MOVWF ADCON0
			;	
			;	delay(20);
	MOVLW .20
	CALL  delay
			;	
			;	GO = 1;	             // initiate conversion on the channel
	BCF   0x03,RP0
	BCF   0x03,RP1
	BSF   0x1F,GO
			;	
			;    while(GO);
m007	BCF   0x03,RP0
	BCF   0x03,RP1
	BTFSC 0x1F,GO
	GOTO  m007
			;
			;	homer = (ADRESH<<8)+ADRESL;
	CLRW 
	BCF   0x03,RP0
	BCF   0x03,RP1
	CLRF  homer+1
	BSF   0x03,RP0
	ADDWF ADRESL,W
	BCF   0x03,RP0
	MOVWF homer
			;	
			;	}
	RETURN
			;	
			;void ADC2()
			;{
ADC2
			;	ADCON0 = 0b.1001.0101; //Right justified, VDD, 0101 = AN5, 0 = A/D conversion completed/not in progress, 1 = ADC is enabled
	MOVLW .149
	BCF   0x03,RP0
	BCF   0x03,RP1
	MOVWF ADCON0
			;	
			;	delay(20);
	MOVLW .20
	CALL  delay
			;	
			;	GO = 1;	             // initiate conversion on the channel 
	BCF   0x03,RP0
	BCF   0x03,RP1
	BSF   0x1F,GO
			;	
			;    while(GO);
m008	BCF   0x03,RP0
	BCF   0x03,RP1
	BTFSC 0x1F,GO
	GOTO  m008
			;	para = (ADRESH<<8)+ADRESL;
	CLRW 
	BCF   0x03,RP0
	BCF   0x03,RP1
	CLRF  para+1
	BSF   0x03,RP0
	ADDWF ADRESL,W
	BCF   0x03,RP0
	MOVWF para
			;//	para = ((unsigned long)ADRESH<<8) + ADRESL;
			;//	para = ADRESH*256+ADRESL;
			;	msb = ADRESH;
	MOVF  ADRESH,W
	MOVWF msb
	CLRF  msb+1
			;	lsb = ADRESL;
	BSF   0x03,RP0
	MOVF  ADRESL,W
	BCF   0x03,RP0
	MOVWF lsb
	CLRF  lsb+1
			;}
	RETURN
			;	
			;
			;
			;void math()
			;{
math
			;	unsigned long h;
			;//	temperature = 125*homer/256 - 50
			;	temperature = (25*((10*homer) - 1024)) / 512;
	BCF   0x03,RP0
	BCF   0x03,RP1
	MOVF  homer,W
	MOVWF arg1_3
	MOVF  homer+1,W
	MOVWF arg1_3+1
	MOVLW .10
	CALL  _multU16x8
	MOVLW .4
	BCF   0x03,RP0
	BCF   0x03,RP1
	SUBWF rval_3+1,W
	MOVWF arg1_3+1
	MOVF  rval_3,W
	MOVWF arg1_3
	MOVLW .25
	CALL  _multU16x8
	BCF   0x03,RP0
	BCF   0x03,RP1
	MOVF  rval_3+1,W
	MOVWF temperature
	CLRF  temperature+1
	BCF   0x03,Carry
	RRF   temperature,1
			;//	humidity = ((para*5) - 818) / 30;
			;//	humidity = para;
			;//	humidity = (0.1590492671*(unsigned long)(para)) - 31.20521173;
			;	humidity = 41L*para;
	MOVF  para,W
	MOVWF arg1_3
	MOVF  para+1,W
	MOVWF arg1_3+1
	MOVLW .41
	CALL  _multU16x8
	BCF   0x03,RP0
	BCF   0x03,RP1
	MOVF  rval_3,W
	MOVWF humidity
	MOVF  rval_3+1,W
	MOVWF humidity+1
			;//	humidity=para;
			;	humidity=(unsigned long)(humidity)>>8L;
	MOVF  humidity+1,W
	MOVWF humidity
	CLRF  humidity+1
			;	humidity-=31L;
	MOVLW .31
	SUBWF humidity,1
	BTFSS 0x03,Carry
	DECF  humidity+1,1
			;}	
	RETURN
			;
			;void tempB2Ascii()
			;{
tempB2Ascii
			;	szaz = temperature/100;
	BCF   0x03,RP0
	BCF   0x03,RP1
	MOVF  temperature,W
	MOVWF arg1_5
	MOVF  temperature+1,W
	MOVWF arg1_5+1
	MOVLW .100
	CALL  _divU16_8
	BCF   0x03,RP0
	BCF   0x03,RP1
	MOVF  arg1_5,W
	MOVWF szaz
			;	asciszaz = szaz + 48;
	MOVLW .48
	ADDWF szaz,W
	MOVWF asciszaz
			;	tiz = temperature - szaz*100;
	MOVF  szaz,W
	MOVWF arg1
	MOVLW .100
	CALL  _mult8x8
	BCF   0x03,RP0
	BCF   0x03,RP1
	MOVF  rval,W
	SUBWF temperature,W
	MOVWF tiz
			;	tizegesz = tiz/10;
	MOVF  tiz,W
	MOVWF arg1_5
	CLRF  arg1_5+1
	MOVLW .10
	CALL  _divU16_8
	BCF   0x03,RP0
	BCF   0x03,RP1
	MOVF  arg1_5,W
	MOVWF tizegesz
			;	ascitiz = tizegesz + 48;
	MOVLW .48
	ADDWF tizegesz,W
	MOVWF ascitiz
			;	egy = tiz - tizegesz*10;
	MOVF  tizegesz,W
	MOVWF arg1
	MOVLW .10
	CALL  _mult8x8
	BCF   0x03,RP0
	BCF   0x03,RP1
	MOVF  rval,W
	SUBWF tiz,W
	MOVWF egy
			;	asciegy = egy + 48;
	MOVLW .48
	ADDWF egy,W
	MOVWF asciegy
			;	
			;}
	RETURN
			;
			;void humB2Ascii()
			;{
humB2Ascii
			;	szazhum = humidity/100;
	BCF   0x03,RP0
	BCF   0x03,RP1
	MOVF  humidity,W
	MOVWF arg1_5
	MOVF  humidity+1,W
	MOVWF arg1_5+1
	MOVLW .100
	CALL  _divU16_8
	BCF   0x03,RP0
	BCF   0x03,RP1
	MOVF  arg1_5,W
	MOVWF szazhum
			;	asciszazhum = szazhum + 48;
	MOVLW .48
	ADDWF szazhum,W
	MOVWF asciszazhum
			;	tizhum = humidity - szazhum*100;
	MOVF  szazhum,W
	MOVWF arg1
	MOVLW .100
	CALL  _mult8x8
	BCF   0x03,RP0
	BCF   0x03,RP1
	MOVF  rval,W
	SUBWF humidity,W
	MOVWF tizhum
			;	tizegeszhum = tizhum/10;
	MOVF  tizhum,W
	MOVWF arg1_5
	CLRF  arg1_5+1
	MOVLW .10
	CALL  _divU16_8
	BCF   0x03,RP0
	BCF   0x03,RP1
	MOVF  arg1_5,W
	MOVWF tizegeszhum
			;	ascitizhum = tizegeszhum + 48;
	MOVLW .48
	ADDWF tizegeszhum,W
	MOVWF ascitizhum
			;	egyhum = tizhum - tizegeszhum*10;
	MOVF  tizegeszhum,W
	MOVWF arg1
	MOVLW .10
	CALL  _mult8x8
	BCF   0x03,RP0
	BCF   0x03,RP1
	MOVF  rval,W
	SUBWF tizhum,W
	MOVWF egyhum
			;	asciegyhum = egyhum + 48;
	MOVLW .48
	ADDWF egyhum,W
	MOVWF asciegyhum
			;	
			;}
	RETURN
			;
			;void serialterminate() 
			;{
serialterminate
			;
			;	while(!TXIF);
m009	BCF   0x03,RP0
	BCF   0x03,RP1
	BTFSS 0x0C,TXIF
	GOTO  m009
			;	TXREG = humidity;
	BCF   0x03,RP0
	BCF   0x03,RP1
	MOVF  humidity,W
	MOVWF TXREG
			;	while(!TXIF);
m010	BCF   0x03,RP0
	BCF   0x03,RP1
	BTFSS 0x0C,TXIF
	GOTO  m010
			;	TXREG = msb;
	BCF   0x03,RP0
	BCF   0x03,RP1
	MOVF  msb,W
	MOVWF TXREG
			;	while(!TXIF);
m011	BCF   0x03,RP0
	BCF   0x03,RP1
	BTFSS 0x0C,TXIF
	GOTO  m011
			;	TXREG = lsb;
	BCF   0x03,RP0
	BCF   0x03,RP1
	MOVF  lsb,W
	MOVWF TXREG
			;	
			;	if (asciszaz >= 49)
	MOVLW .49
	SUBWF asciszaz,W
	BTFSS 0x03,Carry
	GOTO  m013
			;	{
			;	while(!TXIF);
m012	BCF   0x03,RP0
	BCF   0x03,RP1
	BTFSS 0x0C,TXIF
	GOTO  m012
			;	TXREG = asciszaz;
	BCF   0x03,RP0
	BCF   0x03,RP1
	MOVF  asciszaz,W
	MOVWF TXREG
			;	}
			;	while(!TXIF);
m013	BCF   0x03,RP0
	BCF   0x03,RP1
	BTFSS 0x0C,TXIF
	GOTO  m013
			;	TXREG = ascitiz;
	BCF   0x03,RP0
	BCF   0x03,RP1
	MOVF  ascitiz,W
	MOVWF TXREG
			;	while(!TXIF);
m014	BCF   0x03,RP0
	BCF   0x03,RP1
	BTFSS 0x0C,TXIF
	GOTO  m014
			;	TXREG = asciegy;
	BCF   0x03,RP0
	BCF   0x03,RP1
	MOVF  asciegy,W
	MOVWF TXREG
			;/*	
			;	if (asciszazhum >= 49)
			;	{
			;	while(!TXIF);
			;	TXREG = asciszazhum;
			;	}
			;	while(!TXIF);
			;	TXREG = ascitizhum;
			;	while(!TXIF);
			;	TXREG = asciegyhum;
			;*/
			;}
	RETURN
			;
			;void main(void)
			;{
main
			;	InitUSART();
	CALL  InitUSART
			;	ADCON1 = 0b.0100.0000 ; //Fosc/4
	MOVLW .64
	BSF   0x03,RP0
	BCF   0x03,RP1
	MOVWF ADCON1
			;	TRISA = 0b.0000.0010; 
	MOVLW .2
	MOVWF TRISA
			;	TRISB = 0b.0011.0000; // RB7>TX, RB5>RX=1
	MOVLW .48
	MOVWF TRISB
			;	TRISC = 0b.0011.0111; // RC0 AN4 input of temperatute, RC1 AN15 input of humidity
	MOVLW .55
	MOVWF TRISC
			;	ANSEL = 0b.0011.0000; //; Dig, Dig, Ana input Ana input, Dig, Dig, Dig, Dig
	MOVLW .48
	BCF   0x03,RP0
	BSF   0x03,RP1
	MOVWF ANSEL
			;	ANSELH = 0b.0000.0000;
	CLRF  ANSELH
			;	ADC();
	CALL  ADC
			;	ADC2();
	CALL  ADC2
			;	math();
	CALL  math
			;	tempB2Ascii();
	CALL  tempB2Ascii
			;	humB2Ascii();
	CALL  humB2Ascii
			;	serialterminate();
	CALL  serialterminate
			;	while(1) 
			;	{
			;		nop();
m015	NOP  
			;		nop();
	NOP  
			;	}
	GOTO  m015

	END


; *** KEY INFO ***

; 0x0001 P0   20 word(s)  0 % : _mult8x8
; 0x0015 P0   22 word(s)  1 % : _multU16x8
; 0x002B P0   28 word(s)  1 % : _divU16_8
; 0x0047 P0   16 word(s)  0 % : InitUSART
; 0x0057 P0   21 word(s)  1 % : delay
; 0x006C P0   22 word(s)  1 % : ADC
; 0x0082 P0   30 word(s)  1 % : ADC2
; 0x00A0 P0   44 word(s)  2 % : math
; 0x00CC P0   49 word(s)  2 % : tempB2Ascii
; 0x00FD P0   49 word(s)  2 % : humB2Ascii
; 0x012E P0   53 word(s)  2 % : serialterminate
; 0x0163 P0   25 word(s)  1 % : main

; RAM usage: 35 bytes (9 local), 221 bytes free
; Maximum call level: 2
;  Codepage 0 has  380 word(s) :  18 %
;  Codepage 1 has    0 word(s) :   0 %
; Total of 380 code words (9 %)
