//************************************************************************************ //** //** File name: E:\- FlowCode\CTEBA tested\V5 DHT11 - 5xPWM - 3x LM35 (FC5) (CTEBA-18F45K22).c //** Title: //** Description: //** //** Generated by: Flowcode v5.4.0.0 //** Date: Friday, November 07, 2014 01:19:26 //** Licence: Professional //** Registered to: xyz //** Licence key: WUK7B9 //** //** //** http://www.matrixmultimedia.com //** //************************************************************************************ #define MX_PIC #define MX_USES_UINT8 1 #define MX_USES_SINT16 1 #define MX_USES_CHAR 2 #define MX_USES_FLOAT 1 #define MX_USES_SINT32 0 #define MX_USES_BOOL 1 #define MX_USES_UINT16 0 #define MX_USES_UINT32 0 //Defines for microcontroller #define P18F45K22 #define FC_CAL_PIC #define MX_ADC #define MX_ADC_TYPE_29 #define MX_ADC_BITS_10 #define MX_EE #define MX_EE_TYPE3 #define MX_EE_SIZE 256 #define MX_SPI_1 #define MX_SPI_1_MISO_PORT portc #define MX_SPI_1_MISO_TRIS trisc #define MX_SPI_1_MISO_PIN 4 #define MX_SPI_1_MOSI_PORT portc #define MX_SPI_1_MOSI_TRIS trisc #define MX_SPI_1_MOSI_PIN 5 #define MX_SPI_1_CLK_PORT portc #define MX_SPI_1_CLK_TRIS trisc #define MX_SPI_1_CLK_PIN 3 #define MX_SPI_1_SS_PORT porta #define MX_SPI_1_SS_TRIS trisa #define MX_SPI_1_SS_PIN 5 #define MX_SPI_2 #define MX_SPI_2_MISO_PORT portd #define MX_SPI_2_MISO_TRIS trisd #define MX_SPI_2_MISO_PIN 1 #define MX_SPI_2_MOSI_PORT portd #define MX_SPI_2_MOSI_TRIS trisd #define MX_SPI_2_MOSI_PIN 4 #define MX_SPI_2_CLK_PORT portd #define MX_SPI_2_CLK_TRIS trisd #define MX_SPI_2_CLK_PIN 0 #define MX_SPI_2_SS_PORT portd #define MX_SPI_2_SS_TRIS trisd #define MX_SPI_2_SS_PIN 3 #define MX_UART_1 #define MX_UART_1_TX_PORT portc #define MX_UART_1_TX_TRIS trisc #define MX_UART_1_TX_PIN 6 #define MX_UART_1_RX_PORT portc #define MX_UART_1_RX_TRIS trisc #define MX_UART_1_RX_PIN 7 #define MX_UART_2 #define MX_UART_2_TX_PORT portd #define MX_UART_2_TX_TRIS trisd #define MX_UART_2_TX_PIN 6 #define MX_UART_2_RX_PORT portd #define MX_UART_2_RX_TRIS trisd #define MX_UART_2_RX_PIN 7 #define MX_I2C #define MX_MI2C #define MX_I2C_1 #define MX_I2C_1_SDA_PORT portc #define MX_I2C_1_SDA_TRIS trisc #define MX_I2C_1_SDA_PIN 4 #define MX_I2C_1_SCL_PORT portc #define MX_I2C_1_SCL_TRIS trisc #define MX_I2C_1_SCL_PIN 3 #define MX_I2C_2 #define MX_I2C_2_SDA_PORT portd #define MX_I2C_2_SDA_TRIS trisd #define MX_I2C_2_SDA_PIN 1 #define MX_I2C_2_SCL_PORT portd #define MX_I2C_2_SCL_TRIS trisd #define MX_I2C_2_SCL_PIN 0 #define MX_PWM #define MX_PWM_CNT 5 #define MX_PWM_PSCA1 #define MX_PWM_PSCA4 #define MX_PWM_PSCA16 #define MX_PWM_1_PORT portc #define MX_PWM_1_TRIS trisc #define MX_PWM_1_PIN 2 #define MX_PWM_2_PORT portc #define MX_PWM_2_TRIS trisc #define MX_PWM_2_PIN 1 #define MX_PWM_2_PORT_A portb #define MX_PWM_2_TRIS_A trisb #define MX_PWM_2_PIN_A 3 #define MX_PWM_3_PORT porte #define MX_PWM_3_TRIS trise #define MX_PWM_3_PIN 0 #define MX_PWM_3_PORT_A portb #define MX_PWM_3_TRIS_A trisb #define MX_PWM_3_PIN_A 5 #define MX_PWM_4_PORT portd #define MX_PWM_4_TRIS trisd #define MX_PWM_4_PIN 1 #define MX_PWM_5_PORT porte #define MX_PWM_5_TRIS trise #define MX_PWM_5_PIN 2 //Functions #define MX_CLK_SPEED 32000000 #ifdef _BOOSTC #include #endif #ifdef HI_TECH_C #include #endif //Configuration data #ifdef _BOOSTC #pragma DATA 0x300000, 0xff #endif #ifdef _HI_TECH_C %C__CONFIG(%A, %V); #endif #ifdef _BOOSTC #pragma DATA 0x300001, 0x13 #endif #ifdef _HI_TECH_C %C__CONFIG(%A, %V); #endif #ifdef _BOOSTC #pragma DATA 0x300002, 0x1e #endif #ifdef _HI_TECH_C %C__CONFIG(%A, %V); #endif #ifdef _BOOSTC #pragma DATA 0x300003, 0x3c #endif #ifdef _HI_TECH_C %C__CONFIG(%A, %V); #endif #ifdef _BOOSTC #pragma DATA 0x300004, 0xff #endif #ifdef _HI_TECH_C %C__CONFIG(%A, %V); #endif #ifdef _BOOSTC #pragma DATA 0x300005, 0xb1 #endif #ifdef _HI_TECH_C %C__CONFIG(%A, %V); #endif #ifdef _BOOSTC #pragma DATA 0x300006, 0x81 #endif #ifdef _HI_TECH_C %C__CONFIG(%A, %V); #endif #ifdef _BOOSTC #pragma DATA 0x300007, 0xff #endif #ifdef _HI_TECH_C %C__CONFIG(%A, %V); #endif #ifdef _BOOSTC #pragma DATA 0x300008, 0xf #endif #ifdef _HI_TECH_C %C__CONFIG(%A, %V); #endif #ifdef _BOOSTC #pragma DATA 0x300009, 0xc0 #endif #ifdef _HI_TECH_C %C__CONFIG(%A, %V); #endif #ifdef _BOOSTC #pragma DATA 0x30000a, 0xf #endif #ifdef _HI_TECH_C %C__CONFIG(%A, %V); #endif #ifdef _BOOSTC #pragma DATA 0x30000b, 0xe0 #endif #ifdef _HI_TECH_C %C__CONFIG(%A, %V); #endif #ifdef _BOOSTC #pragma DATA 0x30000c, 0xf #endif #ifdef _HI_TECH_C %C__CONFIG(%A, %V); #endif #ifdef _BOOSTC #pragma DATA 0x30000d, 0x40 #endif #ifdef _HI_TECH_C %C__CONFIG(%A, %V); #endif //Internal functions #include "C:\Program Files\Flowcode\v5\FCD\internals.c" //Macro function declarations void FCM_StartSignal(); void FCM_MY_TMR0(); void FCM_Working_mode(); void FCM_Bio_MAIN_DHT11(); void FCM_Grejaci(); void FCM_Inicijalizacija(); void FCM_Moj_TMRO(); void FCM_Odbrojavanje(); void FCM_Preracunaj_vrednosti(); void FCM_Prikazi_na_LCD(); void FCM_Procitaj_Senzore(); void FCM_PWM(); void FCM_Bio_Main_LM35(); void FCM_Temp_Pecina(); //Variable declarations #define FCSZ_SDEGREESCELSIUS 4 #define FCV_FALSE (0) #define FCV_TRUE (1) MX_FLOAT FCV_REFSPAN; MX_UINT8 FCV_RH_BYTE1; MX_UINT8 FCV_RH_BYTE2; MX_UINT8 FCV_LM35_READADC_C5; MX_UINT8 FCV_LM35_READADC_C6; MX_UINT8 FCV_LM35; MX_UINT8 FCV_CHECK; MX_UINT8 FCV_T_BYTE1; MX_UINT8 FCV_LM35_READADC_C7; MX_UINT8 FCV_T_BYTE2; MX_UINT8 FCV_TEMP; MX_UINT8 FCV_I; MX_SINT16 FCV_DUTY; MX_SINT16 FCV_POTI; MX_SINT16 FCV_TEST_CHECK; MX_SINT16 FCV_LM35_CELSIUS_C7_INT_OLD = (0); // Promenljiva za proveru da li je do?lo do promene temp., pa ako jeste, da ispise novu na LCDu. MX_UINT8 FCV_TMRO_INTERNI_BROJAC = (0x0); // Za odbrojavanje sekundi, za interne potrebe. MX_UINT8 FCV_RIGHT = (0x0); MX_UINT8 FCV_TMRO_CLOCK_MIN = (0x0); // Interni minut. MX_UINT8 FCV_IN_SIG; MX_SINT16 FCV_LM35_CELSIUS_C6_INT_OLD = (0); // Promenljiva za proveru da li je do?lo do promene temp., pa ako jeste, da ispise novu na LCDu. MX_UINT8 FCV_TMR0; MX_UINT8 FCV_TOUT; MX_SINT16 FCV_COUNT; MX_SINT16 FCV_DUTY2; MX_SINT16 FCV_POTI2; MX_UINT8 FCV_TMRO_CLOCK_H = (0x0); // Interni sat MX_SINT16 FCV_ZADATA_TEMP = (27); MX_UINT8 FCV_CHECKSUM; MX_SINT16 FCV_LM35_CELSIUS_C5_INT = (0); MX_SINT16 FCV_LM35_CELSIUS_C5_INT_OLD = (0); // Promenljiva za proveru da li je do?lo do promene temp., pa ako jeste, da ispise novu na LCDu. MX_CHAR FCV_SDEGREESCELSIUS[FCSZ_SDEGREESCELSIUS]; // U zavisnosti od du?ine "string"-a [4], toliko ?emo videti na displeju. [4] = 25,5; [5] = 25,55 MX_SINT16 FCV_LM35_CELSIUS_C6_INT = (0); MX_SINT16 FCV_TMRO_CLOCK_SEK = (0); // Interna sekunda, koja gre?i za 0,02s po sekundi. Sredjeno oduzimanjem 4s po min i 12s po h! MX_SINT16 FCV_LM35_CELSIUS_C7_INT = (0); MX_UINT8 FCV_TEMP_STRING; MX_UINT8 FCV_VRTI_NA_LCDU = (0x2); // Vrti znak na displeju, kako bi znao da ure?aj radi! Tj, nek se ne?to doga?a. :o) MX_FLOAT FCV_DEGREESCELSIUS; MX_UINT8 FCLV_LOOP1; MX_UINT8 FCLV_LOOP2; //LCDDisplay(0): //Defines: /**** Macro Substitutions **** a = Unique Component Reference Number b = D1 Port Letter c = D2 Port Letter d = D3 Port Letter e = D4 Port Letter f = RS Port Letter g = E Port Letter h = Data 1_Pin i = Data 2 Pin j = Data 3 Pin k = Data 4 Pin l = RS Pin m = Enable Pin n = Row Count o = Column Count ******************************/ //component connections //Port pin lat workaround for 8-bit PIC devices running >= 32MHz #ifdef FC_CAL_PIC #if MX_CLK_SPEED >= 32000000 #define LCD_1__PORT0 latb #define LCD_1__PORT1 latb #define LCD_1__PORT2 latb #define LCD_1__PORT3 latb #define LCD_1__PORT4 latb #define LCD_1__PORT5 latb #else #define LCD_1__PORT0 portb #define LCD_1__PORT1 portb #define LCD_1__PORT2 portb #define LCD_1__PORT3 portb #define LCD_1__PORT4 portb #define LCD_1__PORT5 portb #endif #else #define LCD_1__PORT0 portb #define LCD_1__PORT1 portb #define LCD_1__PORT2 portb #define LCD_1__PORT3 portb #define LCD_1__PORT4 portb #define LCD_1__PORT5 portb #endif #define LCD_1__TRIS0 trisb #define LCD_1__TRIS1 trisb #define LCD_1__TRIS2 trisb #define LCD_1__TRIS3 trisb #define LCD_1__TRIS4 trisb #define LCD_1__TRIS5 trisb #define LCD_1__BIT0 0 #define LCD_1__BIT1 1 #define LCD_1__BIT2 2 #define LCD_1__BIT3 3 #define LCD_1__RS 4 #define LCD_1__E 5 #define LCD_1__ROWCNT 4 #define LCD_1__COLCNT 20 #ifdef _BOOSTC #define LCD_1__DELAY delay_10us(10) #endif #ifdef _C2C_ #define LCD_1__DELAY delay_us(100) #endif #ifdef HI_TECH_C #define LCD_1__DELAY __delay_us(120) #endif #ifndef LCD_1__DELAY #define LCD_1__DELAY delay_us(100) #endif //LCDDisplay(0): //Macro function declarations void FCD_LCDDisplay0_RawSend(MX_UINT8 in, MX_UINT8 mask); void FCD_LCDDisplay0_Start(); void FCD_LCDDisplay0_Clear(); void FCD_LCDDisplay0_PrintASCII(MX_UINT8 Character); void FCD_LCDDisplay0_Command(MX_UINT8 in); void FCD_LCDDisplay0_Cursor(MX_UINT8 x, MX_UINT8 y); void FCD_LCDDisplay0_PrintNumber(MX_SINT16 Number); void FCD_LCDDisplay0_PrintString(MX_STRING String, MX_UINT8 MSZ_String); void FCD_LCDDisplay0_ScrollDisplay(MX_UINT8 Direction, MX_UINT8 Num_Positions); void FCD_LCDDisplay0_ClearLine(MX_UINT8 Line); void FCD_LCDDisplay0_RAM_Write(MX_UINT8 nIdx, MX_UINT8 d0, MX_UINT8 d1, MX_UINT8 d2, MX_UINT8 d3, MX_UINT8 d4, MX_UINT8 d5, MX_UINT8 d6, MX_UINT8 d7); //PWM(0): //Defines: /**** Macro Substitutions **** a = Unique Reference b = PWM Channel - 0=SW / 1-8=HW c = PWM Alt Pin FCD_PWM0_Enable - 0=Standard / 1=Alt d = PWM Period e = PWM Prescaler 1 ******************************/ //Period and Prescaler Defines #ifndef MX_PWM_PERIOD #define MX_PWM_PERIOD 249 #else #if (MX_PWM_PERIOD != 249) #error "PWM period value must be the same in all PWM modules" #endif #endif #ifndef MX_PWM_PRESCALE1 #define MX_PWM_PRESCALE1 16 #else #if (MX_PWM_PRESCALE1 != 16) #error "PWM prescale value must be the same in all PWM modules" #endif #endif //Definitions for PWM slot allocation #ifndef MX_PWM_REF1 #define MX_PWM_REF1 #define PWM_3_MX_PWM_UREF 1 #define MX_PWM_CHANNEL_1 1 #define MX_PWM_HWALT_1 0 #else #ifndef MX_PWM_REF2 #define MX_PWM_REF2 #define PWM_3_MX_PWM_UREF 2 #define MX_PWM_CHANNEL_2 1 #define MX_PWM_HWALT_2 0 #else #ifndef MX_PWM_REF3 #define MX_PWM_REF3 #define PWM_3_MX_PWM_UREF 3 #define MX_PWM_CHANNEL_3 1 #define MX_PWM_HWALT_3 0 #else #ifndef MX_PWM_REF4 #define MX_PWM_REF4 #define PWM_3_MX_PWM_UREF 4 #define MX_PWM_CHANNEL_4 1 #define MX_PWM_HWALT_4 0 #else #ifndef MX_PWM_REF5 #define MX_PWM_REF5 #define PWM_3_MX_PWM_UREF 5 #define MX_PWM_CHANNEL_5 1 #define MX_PWM_HWALT_5 0 #else #ifndef MX_PWM_REF6 #define MX_PWM_REF6 #define PWM_3_MX_PWM_UREF 6 #define MX_PWM_CHANNEL_6 1 #define MX_PWM_HWALT_6 0 #else #ifndef MX_PWM_REF7 #define MX_PWM_REF7 #define PWM_3_MX_PWM_UREF 7 #define MX_PWM_CHANNEL_7 1 #define MX_PWM_HWALT_7 0 #else #ifndef MX_PWM_REF8 #define MX_PWM_REF8 #define PWM_3_MX_PWM_UREF 8 #define MX_PWM_CHANNEL_8 1 #define MX_PWM_HWALT_8 0 #else #ifndef MX_PWM_REF9 #define MX_PWM_REF9 #define PWM_3_MX_PWM_UREF 9 #define MX_PWM_CHANNEL_9 1 #define MX_PWM_HWALT_9 0 #else #ifndef MX_PWM_REF10 #define MX_PWM_REF10 #define PWM_3_MX_PWM_UREF 10 #define MX_PWM_CHANNEL_10 1 #define MX_PWM_HWALT_10 0 #endif #endif #endif #endif #endif #endif #endif #endif #endif #endif #define PWM_3_PWM_Enable_Channel CAL_APPEND(FC_CAL_PWM_Enable_Channel_, PWM_3_MX_PWM_UREF) #define PWM_3_PWM_Disable_Channel CAL_APPEND(FC_CAL_PWM_Disable_Channel_, PWM_3_MX_PWM_UREF) #define PWM_3_PWM_Set_Duty_8Bit CAL_APPEND(FC_CAL_PWM_Set_Duty_8Bit_, PWM_3_MX_PWM_UREF) #define PWM_3_PWM_Change_Period CAL_APPEND(FC_CAL_PWM_Change_Period_, PWM_3_MX_PWM_UREF) #define PWM_3_PWM_Set_Duty_10Bit CAL_APPEND(FC_CAL_PWM_Set_Duty_10Bit_, PWM_3_MX_PWM_UREF) extern void PWM_3_PWM_Enable_Channel (); extern void PWM_3_PWM_Disable_Channel (); extern void PWM_3_PWM_Set_Duty_8Bit (MX_UINT8 duty); extern void PWM_3_PWM_Change_Period (MX_UINT8 period, MX_UINT16 prescaler); extern void PWM_3_PWM_Set_Duty_10Bit (MX_UINT16 duty); //PWM(0): //Macro function declarations void FCD_PWM0_Enable(); void FCD_PWM0_Disable(); void FCD_PWM0_SetDutyCycle(MX_UINT8 nDuty); void FCD_PWM0_ChangePeriod(MX_UINT8 nPeriodVal, MX_UINT8 nPrescalerVal); void FCD_PWM0_SetDutyCycle10bit(MX_SINT16 nDuty); //PWM(1): //Defines: /**** Macro Substitutions **** a = Unique Reference b = PWM Channel - 0=SW / 1-8=HW c = PWM Alt Pin FCD_PWM1_Enable - 0=Standard / 1=Alt d = PWM Period e = PWM Prescaler 1 ******************************/ //Period and Prescaler Defines #ifndef MX_PWM_PERIOD #define MX_PWM_PERIOD 249 #else #if (MX_PWM_PERIOD != 249) #error "PWM period value must be the same in all PWM modules" #endif #endif #ifndef MX_PWM_PRESCALE1 #define MX_PWM_PRESCALE1 16 #else #if (MX_PWM_PRESCALE1 != 16) #error "PWM prescale value must be the same in all PWM modules" #endif #endif //Definitions for PWM slot allocation #ifndef MX_PWM_REF1 #define MX_PWM_REF1 #define PWM_9_MX_PWM_UREF 1 #define MX_PWM_CHANNEL_1 2 #define MX_PWM_HWALT_1 0 #else #ifndef MX_PWM_REF2 #define MX_PWM_REF2 #define PWM_9_MX_PWM_UREF 2 #define MX_PWM_CHANNEL_2 2 #define MX_PWM_HWALT_2 0 #else #ifndef MX_PWM_REF3 #define MX_PWM_REF3 #define PWM_9_MX_PWM_UREF 3 #define MX_PWM_CHANNEL_3 2 #define MX_PWM_HWALT_3 0 #else #ifndef MX_PWM_REF4 #define MX_PWM_REF4 #define PWM_9_MX_PWM_UREF 4 #define MX_PWM_CHANNEL_4 2 #define MX_PWM_HWALT_4 0 #else #ifndef MX_PWM_REF5 #define MX_PWM_REF5 #define PWM_9_MX_PWM_UREF 5 #define MX_PWM_CHANNEL_5 2 #define MX_PWM_HWALT_5 0 #else #ifndef MX_PWM_REF6 #define MX_PWM_REF6 #define PWM_9_MX_PWM_UREF 6 #define MX_PWM_CHANNEL_6 2 #define MX_PWM_HWALT_6 0 #else #ifndef MX_PWM_REF7 #define MX_PWM_REF7 #define PWM_9_MX_PWM_UREF 7 #define MX_PWM_CHANNEL_7 2 #define MX_PWM_HWALT_7 0 #else #ifndef MX_PWM_REF8 #define MX_PWM_REF8 #define PWM_9_MX_PWM_UREF 8 #define MX_PWM_CHANNEL_8 2 #define MX_PWM_HWALT_8 0 #else #ifndef MX_PWM_REF9 #define MX_PWM_REF9 #define PWM_9_MX_PWM_UREF 9 #define MX_PWM_CHANNEL_9 2 #define MX_PWM_HWALT_9 0 #else #ifndef MX_PWM_REF10 #define MX_PWM_REF10 #define PWM_9_MX_PWM_UREF 10 #define MX_PWM_CHANNEL_10 2 #define MX_PWM_HWALT_10 0 #endif #endif #endif #endif #endif #endif #endif #endif #endif #endif #define PWM_9_PWM_Enable_Channel CAL_APPEND(FC_CAL_PWM_Enable_Channel_, PWM_9_MX_PWM_UREF) #define PWM_9_PWM_Disable_Channel CAL_APPEND(FC_CAL_PWM_Disable_Channel_, PWM_9_MX_PWM_UREF) #define PWM_9_PWM_Set_Duty_8Bit CAL_APPEND(FC_CAL_PWM_Set_Duty_8Bit_, PWM_9_MX_PWM_UREF) #define PWM_9_PWM_Change_Period CAL_APPEND(FC_CAL_PWM_Change_Period_, PWM_9_MX_PWM_UREF) #define PWM_9_PWM_Set_Duty_10Bit CAL_APPEND(FC_CAL_PWM_Set_Duty_10Bit_, PWM_9_MX_PWM_UREF) extern void PWM_9_PWM_Enable_Channel (); extern void PWM_9_PWM_Disable_Channel (); extern void PWM_9_PWM_Set_Duty_8Bit (MX_UINT8 duty); extern void PWM_9_PWM_Change_Period (MX_UINT8 period, MX_UINT16 prescaler); extern void PWM_9_PWM_Set_Duty_10Bit (MX_UINT16 duty); //PWM(1): //Macro function declarations void FCD_PWM1_Enable(); void FCD_PWM1_Disable(); void FCD_PWM1_SetDutyCycle(MX_UINT8 nDuty); void FCD_PWM1_ChangePeriod(MX_UINT8 nPeriodVal, MX_UINT8 nPrescalerVal); void FCD_PWM1_SetDutyCycle10bit(MX_SINT16 nDuty); //PWM(2): //Defines: /**** Macro Substitutions **** a = Unique Reference b = PWM Channel - 0=SW / 1-8=HW c = PWM Alt Pin FCD_PWM2_Enable - 0=Standard / 1=Alt d = PWM Period e = PWM Prescaler 1 ******************************/ //Period and Prescaler Defines #ifndef MX_PWM_PERIOD #define MX_PWM_PERIOD 249 #else #if (MX_PWM_PERIOD != 249) #error "PWM period value must be the same in all PWM modules" #endif #endif #ifndef MX_PWM_PRESCALE1 #define MX_PWM_PRESCALE1 16 #else #if (MX_PWM_PRESCALE1 != 16) #error "PWM prescale value must be the same in all PWM modules" #endif #endif //Definitions for PWM slot allocation #ifndef MX_PWM_REF1 #define MX_PWM_REF1 #define PWM_10_MX_PWM_UREF 1 #define MX_PWM_CHANNEL_1 3 #define MX_PWM_HWALT_1 0 #else #ifndef MX_PWM_REF2 #define MX_PWM_REF2 #define PWM_10_MX_PWM_UREF 2 #define MX_PWM_CHANNEL_2 3 #define MX_PWM_HWALT_2 0 #else #ifndef MX_PWM_REF3 #define MX_PWM_REF3 #define PWM_10_MX_PWM_UREF 3 #define MX_PWM_CHANNEL_3 3 #define MX_PWM_HWALT_3 0 #else #ifndef MX_PWM_REF4 #define MX_PWM_REF4 #define PWM_10_MX_PWM_UREF 4 #define MX_PWM_CHANNEL_4 3 #define MX_PWM_HWALT_4 0 #else #ifndef MX_PWM_REF5 #define MX_PWM_REF5 #define PWM_10_MX_PWM_UREF 5 #define MX_PWM_CHANNEL_5 3 #define MX_PWM_HWALT_5 0 #else #ifndef MX_PWM_REF6 #define MX_PWM_REF6 #define PWM_10_MX_PWM_UREF 6 #define MX_PWM_CHANNEL_6 3 #define MX_PWM_HWALT_6 0 #else #ifndef MX_PWM_REF7 #define MX_PWM_REF7 #define PWM_10_MX_PWM_UREF 7 #define MX_PWM_CHANNEL_7 3 #define MX_PWM_HWALT_7 0 #else #ifndef MX_PWM_REF8 #define MX_PWM_REF8 #define PWM_10_MX_PWM_UREF 8 #define MX_PWM_CHANNEL_8 3 #define MX_PWM_HWALT_8 0 #else #ifndef MX_PWM_REF9 #define MX_PWM_REF9 #define PWM_10_MX_PWM_UREF 9 #define MX_PWM_CHANNEL_9 3 #define MX_PWM_HWALT_9 0 #else #ifndef MX_PWM_REF10 #define MX_PWM_REF10 #define PWM_10_MX_PWM_UREF 10 #define MX_PWM_CHANNEL_10 3 #define MX_PWM_HWALT_10 0 #endif #endif #endif #endif #endif #endif #endif #endif #endif #endif #define PWM_10_PWM_Enable_Channel CAL_APPEND(FC_CAL_PWM_Enable_Channel_, PWM_10_MX_PWM_UREF) #define PWM_10_PWM_Disable_Channel CAL_APPEND(FC_CAL_PWM_Disable_Channel_, PWM_10_MX_PWM_UREF) #define PWM_10_PWM_Set_Duty_8Bit CAL_APPEND(FC_CAL_PWM_Set_Duty_8Bit_, PWM_10_MX_PWM_UREF) #define PWM_10_PWM_Change_Period CAL_APPEND(FC_CAL_PWM_Change_Period_, PWM_10_MX_PWM_UREF) #define PWM_10_PWM_Set_Duty_10Bit CAL_APPEND(FC_CAL_PWM_Set_Duty_10Bit_, PWM_10_MX_PWM_UREF) extern void PWM_10_PWM_Enable_Channel (); extern void PWM_10_PWM_Disable_Channel (); extern void PWM_10_PWM_Set_Duty_8Bit (MX_UINT8 duty); extern void PWM_10_PWM_Change_Period (MX_UINT8 period, MX_UINT16 prescaler); extern void PWM_10_PWM_Set_Duty_10Bit (MX_UINT16 duty); //PWM(2): //Macro function declarations void FCD_PWM2_Enable(); void FCD_PWM2_Disable(); void FCD_PWM2_SetDutyCycle(MX_UINT8 nDuty); void FCD_PWM2_ChangePeriod(MX_UINT8 nPeriodVal, MX_UINT8 nPrescalerVal); void FCD_PWM2_SetDutyCycle10bit(MX_SINT16 nDuty); //PWM(3): //Defines: /**** Macro Substitutions **** a = Unique Reference b = PWM Channel - 0=SW / 1-8=HW c = PWM Alt Pin FCD_PWM3_Enable - 0=Standard / 1=Alt d = PWM Period e = PWM Prescaler 1 ******************************/ //Period and Prescaler Defines #ifndef MX_PWM_PERIOD #define MX_PWM_PERIOD 249 #else #if (MX_PWM_PERIOD != 249) #error "PWM period value must be the same in all PWM modules" #endif #endif #ifndef MX_PWM_PRESCALE1 #define MX_PWM_PRESCALE1 16 #else #if (MX_PWM_PRESCALE1 != 16) #error "PWM prescale value must be the same in all PWM modules" #endif #endif //Definitions for PWM slot allocation #ifndef MX_PWM_REF1 #define MX_PWM_REF1 #define PWM_11_MX_PWM_UREF 1 #define MX_PWM_CHANNEL_1 4 #define MX_PWM_HWALT_1 0 #else #ifndef MX_PWM_REF2 #define MX_PWM_REF2 #define PWM_11_MX_PWM_UREF 2 #define MX_PWM_CHANNEL_2 4 #define MX_PWM_HWALT_2 0 #else #ifndef MX_PWM_REF3 #define MX_PWM_REF3 #define PWM_11_MX_PWM_UREF 3 #define MX_PWM_CHANNEL_3 4 #define MX_PWM_HWALT_3 0 #else #ifndef MX_PWM_REF4 #define MX_PWM_REF4 #define PWM_11_MX_PWM_UREF 4 #define MX_PWM_CHANNEL_4 4 #define MX_PWM_HWALT_4 0 #else #ifndef MX_PWM_REF5 #define MX_PWM_REF5 #define PWM_11_MX_PWM_UREF 5 #define MX_PWM_CHANNEL_5 4 #define MX_PWM_HWALT_5 0 #else #ifndef MX_PWM_REF6 #define MX_PWM_REF6 #define PWM_11_MX_PWM_UREF 6 #define MX_PWM_CHANNEL_6 4 #define MX_PWM_HWALT_6 0 #else #ifndef MX_PWM_REF7 #define MX_PWM_REF7 #define PWM_11_MX_PWM_UREF 7 #define MX_PWM_CHANNEL_7 4 #define MX_PWM_HWALT_7 0 #else #ifndef MX_PWM_REF8 #define MX_PWM_REF8 #define PWM_11_MX_PWM_UREF 8 #define MX_PWM_CHANNEL_8 4 #define MX_PWM_HWALT_8 0 #else #ifndef MX_PWM_REF9 #define MX_PWM_REF9 #define PWM_11_MX_PWM_UREF 9 #define MX_PWM_CHANNEL_9 4 #define MX_PWM_HWALT_9 0 #else #ifndef MX_PWM_REF10 #define MX_PWM_REF10 #define PWM_11_MX_PWM_UREF 10 #define MX_PWM_CHANNEL_10 4 #define MX_PWM_HWALT_10 0 #endif #endif #endif #endif #endif #endif #endif #endif #endif #endif #define PWM_11_PWM_Enable_Channel CAL_APPEND(FC_CAL_PWM_Enable_Channel_, PWM_11_MX_PWM_UREF) #define PWM_11_PWM_Disable_Channel CAL_APPEND(FC_CAL_PWM_Disable_Channel_, PWM_11_MX_PWM_UREF) #define PWM_11_PWM_Set_Duty_8Bit CAL_APPEND(FC_CAL_PWM_Set_Duty_8Bit_, PWM_11_MX_PWM_UREF) #define PWM_11_PWM_Change_Period CAL_APPEND(FC_CAL_PWM_Change_Period_, PWM_11_MX_PWM_UREF) #define PWM_11_PWM_Set_Duty_10Bit CAL_APPEND(FC_CAL_PWM_Set_Duty_10Bit_, PWM_11_MX_PWM_UREF) extern void PWM_11_PWM_Enable_Channel (); extern void PWM_11_PWM_Disable_Channel (); extern void PWM_11_PWM_Set_Duty_8Bit (MX_UINT8 duty); extern void PWM_11_PWM_Change_Period (MX_UINT8 period, MX_UINT16 prescaler); extern void PWM_11_PWM_Set_Duty_10Bit (MX_UINT16 duty); //PWM(3): //Macro function declarations void FCD_PWM3_Enable(); void FCD_PWM3_Disable(); void FCD_PWM3_SetDutyCycle(MX_UINT8 nDuty); void FCD_PWM3_ChangePeriod(MX_UINT8 nPeriodVal, MX_UINT8 nPrescalerVal); void FCD_PWM3_SetDutyCycle10bit(MX_SINT16 nDuty); //PWM(4): //Defines: /**** Macro Substitutions **** a = Unique Reference b = PWM Channel - 0=SW / 1-8=HW c = PWM Alt Pin FCD_PWM4_Enable - 0=Standard / 1=Alt d = PWM Period e = PWM Prescaler 1 ******************************/ //Period and Prescaler Defines #ifndef MX_PWM_PERIOD #define MX_PWM_PERIOD 249 #else #if (MX_PWM_PERIOD != 249) #error "PWM period value must be the same in all PWM modules" #endif #endif #ifndef MX_PWM_PRESCALE1 #define MX_PWM_PRESCALE1 16 #else #if (MX_PWM_PRESCALE1 != 16) #error "PWM prescale value must be the same in all PWM modules" #endif #endif //Definitions for PWM slot allocation #ifndef MX_PWM_REF1 #define MX_PWM_REF1 #define PWM_12_MX_PWM_UREF 1 #define MX_PWM_CHANNEL_1 5 #define MX_PWM_HWALT_1 0 #else #ifndef MX_PWM_REF2 #define MX_PWM_REF2 #define PWM_12_MX_PWM_UREF 2 #define MX_PWM_CHANNEL_2 5 #define MX_PWM_HWALT_2 0 #else #ifndef MX_PWM_REF3 #define MX_PWM_REF3 #define PWM_12_MX_PWM_UREF 3 #define MX_PWM_CHANNEL_3 5 #define MX_PWM_HWALT_3 0 #else #ifndef MX_PWM_REF4 #define MX_PWM_REF4 #define PWM_12_MX_PWM_UREF 4 #define MX_PWM_CHANNEL_4 5 #define MX_PWM_HWALT_4 0 #else #ifndef MX_PWM_REF5 #define MX_PWM_REF5 #define PWM_12_MX_PWM_UREF 5 #define MX_PWM_CHANNEL_5 5 #define MX_PWM_HWALT_5 0 #else #ifndef MX_PWM_REF6 #define MX_PWM_REF6 #define PWM_12_MX_PWM_UREF 6 #define MX_PWM_CHANNEL_6 5 #define MX_PWM_HWALT_6 0 #else #ifndef MX_PWM_REF7 #define MX_PWM_REF7 #define PWM_12_MX_PWM_UREF 7 #define MX_PWM_CHANNEL_7 5 #define MX_PWM_HWALT_7 0 #else #ifndef MX_PWM_REF8 #define MX_PWM_REF8 #define PWM_12_MX_PWM_UREF 8 #define MX_PWM_CHANNEL_8 5 #define MX_PWM_HWALT_8 0 #else #ifndef MX_PWM_REF9 #define MX_PWM_REF9 #define PWM_12_MX_PWM_UREF 9 #define MX_PWM_CHANNEL_9 5 #define MX_PWM_HWALT_9 0 #else #ifndef MX_PWM_REF10 #define MX_PWM_REF10 #define PWM_12_MX_PWM_UREF 10 #define MX_PWM_CHANNEL_10 5 #define MX_PWM_HWALT_10 0 #endif #endif #endif #endif #endif #endif #endif #endif #endif #endif #define PWM_12_PWM_Enable_Channel CAL_APPEND(FC_CAL_PWM_Enable_Channel_, PWM_12_MX_PWM_UREF) #define PWM_12_PWM_Disable_Channel CAL_APPEND(FC_CAL_PWM_Disable_Channel_, PWM_12_MX_PWM_UREF) #define PWM_12_PWM_Set_Duty_8Bit CAL_APPEND(FC_CAL_PWM_Set_Duty_8Bit_, PWM_12_MX_PWM_UREF) #define PWM_12_PWM_Change_Period CAL_APPEND(FC_CAL_PWM_Change_Period_, PWM_12_MX_PWM_UREF) #define PWM_12_PWM_Set_Duty_10Bit CAL_APPEND(FC_CAL_PWM_Set_Duty_10Bit_, PWM_12_MX_PWM_UREF) extern void PWM_12_PWM_Enable_Channel (); extern void PWM_12_PWM_Disable_Channel (); extern void PWM_12_PWM_Set_Duty_8Bit (MX_UINT8 duty); extern void PWM_12_PWM_Change_Period (MX_UINT8 period, MX_UINT16 prescaler); extern void PWM_12_PWM_Set_Duty_10Bit (MX_UINT16 duty); //PWM(4): //Macro function declarations void FCD_PWM4_Enable(); void FCD_PWM4_Disable(); void FCD_PWM4_SetDutyCycle(MX_UINT8 nDuty); void FCD_PWM4_ChangePeriod(MX_UINT8 nPeriodVal, MX_UINT8 nPrescalerVal); void FCD_PWM4_SetDutyCycle10bit(MX_SINT16 nDuty); //ADC(0): //Defines: /**** Macro Substitutions **** a = Unique Reference b = Which ADC Channel c = Acquisition time d = Conversion Speed e = VRef+ Option f = VRef Voltage x 0.01V ******************************/ //Common Defines #define ADC_13_MX_ADC_CHANNEL 0 #define ADC_13_MX_ADC_ACTIME 40 #define ADC_13_MX_ADC_CONVSP 3 #define ADC_13_MX_ADC_VREFOP 0 #define ADC_13_MX_ADC_VREFVOL 500 #ifndef MX_ADC_CHANNEL_0 #define MX_ADC_CHANNEL_0 //Inform CAL ADC channel 0 is now in use. #endif #ifndef MX_ADC_REF //Inform CAL ADC peripheral is now in use #define MX_ADC_REF #endif extern void FC_CAL_Enable_ADC (MX_UINT8 Channel, MX_UINT8 Conv_Speed, MX_UINT8 Vref, MX_UINT8 T_Charge); extern MX_UINT16 FC_CAL_Sample_ADC (MX_UINT8 Sample_Mode); extern void FC_CAL_Disable_ADC (void); //ADC(0): //Macro function declarations void FCD_ADC0_SampleADC(); MX_UINT8 FCD_ADC0_ReadAsByte(); MX_UINT16 FCD_ADC0_ReadAsInt(); MX_FLOAT FCD_ADC0_ReadAsVoltage(); void FCD_ADC0_ReadAsString(MX_CHAR* FCR_RETVAL, MX_UINT8 FCR_RETVAL_SIZE); void FCD_ADC0_ADC_RAW_Configure_Channel(); MX_UINT8 FCD_ADC0_ADC_RAW_Sample_Channel_Byte(); MX_UINT16 FCD_ADC0_ADC_RAW_Sample_Channel_Int(); MX_UINT8 FCD_ADC0_ADC_RAW_Average_Channel_Byte(MX_UINT8 NumSamples, MX_UINT8 DelayUs); MX_UINT16 FCD_ADC0_ADC_RAW_Average_Channel_Int(MX_UINT8 NumSamples, MX_UINT8 DelayUs); void FCD_ADC0_ADC_RAW_Disable_Channel(); //ADC(1): //Defines: /**** Macro Substitutions **** a = Unique Reference b = Which ADC Channel c = Acquisition time d = Conversion Speed e = VRef+ Option f = VRef Voltage x 0.01V ******************************/ //Common Defines #define ADC_14_MX_ADC_CHANNEL 1 #define ADC_14_MX_ADC_ACTIME 40 #define ADC_14_MX_ADC_CONVSP 3 #define ADC_14_MX_ADC_VREFOP 0 #define ADC_14_MX_ADC_VREFVOL 500 #ifndef MX_ADC_CHANNEL_1 #define MX_ADC_CHANNEL_1 //Inform CAL ADC channel 1 is now in use. #endif #ifndef MX_ADC_REF //Inform CAL ADC peripheral is now in use #define MX_ADC_REF #endif extern void FC_CAL_Enable_ADC (MX_UINT8 Channel, MX_UINT8 Conv_Speed, MX_UINT8 Vref, MX_UINT8 T_Charge); extern MX_UINT16 FC_CAL_Sample_ADC (MX_UINT8 Sample_Mode); extern void FC_CAL_Disable_ADC (void); //ADC(1): //Macro function declarations void FCD_ADC1_SampleADC(); MX_UINT8 FCD_ADC1_ReadAsByte(); MX_UINT16 FCD_ADC1_ReadAsInt(); MX_FLOAT FCD_ADC1_ReadAsVoltage(); void FCD_ADC1_ReadAsString(MX_CHAR* FCR_RETVAL, MX_UINT8 FCR_RETVAL_SIZE); void FCD_ADC1_ADC_RAW_Configure_Channel(); MX_UINT8 FCD_ADC1_ADC_RAW_Sample_Channel_Byte(); MX_UINT16 FCD_ADC1_ADC_RAW_Sample_Channel_Int(); MX_UINT8 FCD_ADC1_ADC_RAW_Average_Channel_Byte(MX_UINT8 NumSamples, MX_UINT8 DelayUs); MX_UINT16 FCD_ADC1_ADC_RAW_Average_Channel_Int(MX_UINT8 NumSamples, MX_UINT8 DelayUs); void FCD_ADC1_ADC_RAW_Disable_Channel(); //ADC(2): //Defines: /**** Macro Substitutions **** a = Unique Reference b = Which ADC Channel c = Acquisition time d = Conversion Speed e = VRef+ Option f = VRef Voltage x 0.01V ******************************/ //Common Defines #define ADC_15_MX_ADC_CHANNEL 17 #define ADC_15_MX_ADC_ACTIME 40 #define ADC_15_MX_ADC_CONVSP 3 #define ADC_15_MX_ADC_VREFOP 1 #define ADC_15_MX_ADC_VREFVOL 100 #ifndef MX_ADC_CHANNEL_17 #define MX_ADC_CHANNEL_17 //Inform CAL ADC channel 17 is now in use. #endif #ifndef MX_ADC_REF //Inform CAL ADC peripheral is now in use #define MX_ADC_REF #endif extern void FC_CAL_Enable_ADC (MX_UINT8 Channel, MX_UINT8 Conv_Speed, MX_UINT8 Vref, MX_UINT8 T_Charge); extern MX_UINT16 FC_CAL_Sample_ADC (MX_UINT8 Sample_Mode); extern void FC_CAL_Disable_ADC (void); //ADC(2): //Macro function declarations void FCD_ADC2_SampleADC(); MX_UINT8 FCD_ADC2_ReadAsByte(); MX_UINT16 FCD_ADC2_ReadAsInt(); MX_FLOAT FCD_ADC2_ReadAsVoltage(); void FCD_ADC2_ReadAsString(MX_CHAR* FCR_RETVAL, MX_UINT8 FCR_RETVAL_SIZE); void FCD_ADC2_ADC_RAW_Configure_Channel(); MX_UINT8 FCD_ADC2_ADC_RAW_Sample_Channel_Byte(); MX_UINT16 FCD_ADC2_ADC_RAW_Sample_Channel_Int(); MX_UINT8 FCD_ADC2_ADC_RAW_Average_Channel_Byte(MX_UINT8 NumSamples, MX_UINT8 DelayUs); MX_UINT16 FCD_ADC2_ADC_RAW_Average_Channel_Int(MX_UINT8 NumSamples, MX_UINT8 DelayUs); void FCD_ADC2_ADC_RAW_Disable_Channel(); //ADC(3): //Defines: /**** Macro Substitutions **** a = Unique Reference b = Which ADC Channel c = Acquisition time d = Conversion Speed e = VRef+ Option f = VRef Voltage x 0.01V ******************************/ //Common Defines #define ADC_16_MX_ADC_CHANNEL 18 #define ADC_16_MX_ADC_ACTIME 40 #define ADC_16_MX_ADC_CONVSP 3 #define ADC_16_MX_ADC_VREFOP 1 #define ADC_16_MX_ADC_VREFVOL 100 #ifndef MX_ADC_CHANNEL_18 #define MX_ADC_CHANNEL_18 //Inform CAL ADC channel 18 is now in use. #endif #ifndef MX_ADC_REF //Inform CAL ADC peripheral is now in use #define MX_ADC_REF #endif extern void FC_CAL_Enable_ADC (MX_UINT8 Channel, MX_UINT8 Conv_Speed, MX_UINT8 Vref, MX_UINT8 T_Charge); extern MX_UINT16 FC_CAL_Sample_ADC (MX_UINT8 Sample_Mode); extern void FC_CAL_Disable_ADC (void); //ADC(3): //Macro function declarations void FCD_ADC3_SampleADC(); MX_UINT8 FCD_ADC3_ReadAsByte(); MX_UINT16 FCD_ADC3_ReadAsInt(); MX_FLOAT FCD_ADC3_ReadAsVoltage(); void FCD_ADC3_ReadAsString(MX_CHAR* FCR_RETVAL, MX_UINT8 FCR_RETVAL_SIZE); void FCD_ADC3_ADC_RAW_Configure_Channel(); MX_UINT8 FCD_ADC3_ADC_RAW_Sample_Channel_Byte(); MX_UINT16 FCD_ADC3_ADC_RAW_Sample_Channel_Int(); MX_UINT8 FCD_ADC3_ADC_RAW_Average_Channel_Byte(MX_UINT8 NumSamples, MX_UINT8 DelayUs); MX_UINT16 FCD_ADC3_ADC_RAW_Average_Channel_Int(MX_UINT8 NumSamples, MX_UINT8 DelayUs); void FCD_ADC3_ADC_RAW_Disable_Channel(); //ADC(4): //Defines: /**** Macro Substitutions **** a = Unique Reference b = Which ADC Channel c = Acquisition time d = Conversion Speed e = VRef+ Option f = VRef Voltage x 0.01V ******************************/ //Common Defines #define ADC_18_MX_ADC_CHANNEL 19 #define ADC_18_MX_ADC_ACTIME 40 #define ADC_18_MX_ADC_CONVSP 3 #define ADC_18_MX_ADC_VREFOP 1 #define ADC_18_MX_ADC_VREFVOL 400 #ifndef MX_ADC_CHANNEL_19 #define MX_ADC_CHANNEL_19 //Inform CAL ADC channel 19 is now in use. #endif #ifndef MX_ADC_REF //Inform CAL ADC peripheral is now in use #define MX_ADC_REF #endif extern void FC_CAL_Enable_ADC (MX_UINT8 Channel, MX_UINT8 Conv_Speed, MX_UINT8 Vref, MX_UINT8 T_Charge); extern MX_UINT16 FC_CAL_Sample_ADC (MX_UINT8 Sample_Mode); extern void FC_CAL_Disable_ADC (void); //ADC(4): //Macro function declarations void FCD_ADC4_SampleADC(); MX_UINT8 FCD_ADC4_ReadAsByte(); MX_UINT16 FCD_ADC4_ReadAsInt(); MX_FLOAT FCD_ADC4_ReadAsVoltage(); void FCD_ADC4_ReadAsString(MX_CHAR* FCR_RETVAL, MX_UINT8 FCR_RETVAL_SIZE); void FCD_ADC4_ADC_RAW_Configure_Channel(); MX_UINT8 FCD_ADC4_ADC_RAW_Sample_Channel_Byte(); MX_UINT16 FCD_ADC4_ADC_RAW_Sample_Channel_Int(); MX_UINT8 FCD_ADC4_ADC_RAW_Average_Channel_Byte(MX_UINT8 NumSamples, MX_UINT8 DelayUs); MX_UINT16 FCD_ADC4_ADC_RAW_Average_Channel_Int(MX_UINT8 NumSamples, MX_UINT8 DelayUs); void FCD_ADC4_ADC_RAW_Disable_Channel(); //LCDDisplay(0): //Macro implementations void FCD_LCDDisplay0_RawSend(MX_UINT8 in, MX_UINT8 mask) { MX_UINT8 pt; FC_CAL_Bit_Low(LCD_1__PORT0, LCD_1__BIT0); FC_CAL_Bit_Low(LCD_1__PORT1, LCD_1__BIT1); FC_CAL_Bit_Low(LCD_1__PORT2, LCD_1__BIT2); FC_CAL_Bit_Low(LCD_1__PORT3, LCD_1__BIT3); FC_CAL_Bit_Low(LCD_1__PORT4, LCD_1__RS); FC_CAL_Bit_Low(LCD_1__PORT5, LCD_1__E); pt = ((in >> 4) & 0x0f); if (pt & 0x01) FC_CAL_Bit_High(LCD_1__PORT0, LCD_1__BIT0); if (pt & 0x02) FC_CAL_Bit_High(LCD_1__PORT1, LCD_1__BIT1); if (pt & 0x04) FC_CAL_Bit_High(LCD_1__PORT2, LCD_1__BIT2); if (pt & 0x08) FC_CAL_Bit_High(LCD_1__PORT3, LCD_1__BIT3); if (mask) FC_CAL_Bit_High(LCD_1__PORT4, LCD_1__RS); LCD_1__DELAY; FC_CAL_Bit_High (LCD_1__PORT5, LCD_1__E); LCD_1__DELAY; FC_CAL_Bit_Low (LCD_1__PORT5, LCD_1__E); pt = (in & 0x0f); LCD_1__DELAY; FC_CAL_Bit_Low(LCD_1__PORT0, LCD_1__BIT0); FC_CAL_Bit_Low(LCD_1__PORT1, LCD_1__BIT1); FC_CAL_Bit_Low(LCD_1__PORT2, LCD_1__BIT2); FC_CAL_Bit_Low(LCD_1__PORT3, LCD_1__BIT3); FC_CAL_Bit_Low(LCD_1__PORT4, LCD_1__RS); FC_CAL_Bit_Low(LCD_1__PORT5, LCD_1__E); if (pt & 0x01) FC_CAL_Bit_High(LCD_1__PORT0, LCD_1__BIT0); if (pt & 0x02) FC_CAL_Bit_High(LCD_1__PORT1, LCD_1__BIT1); if (pt & 0x04) FC_CAL_Bit_High(LCD_1__PORT2, LCD_1__BIT2); if (pt & 0x08) FC_CAL_Bit_High(LCD_1__PORT3, LCD_1__BIT3); if (mask) FC_CAL_Bit_High(LCD_1__PORT4, LCD_1__RS); LCD_1__DELAY; FC_CAL_Bit_High (LCD_1__PORT5, LCD_1__E); LCD_1__DELAY; FC_CAL_Bit_Low (LCD_1__PORT5, LCD_1__E); LCD_1__DELAY; } void FCD_LCDDisplay0_Start() { FC_CAL_Bit_Low_DDR(LCD_1__PORT0, LCD_1__TRIS0, LCD_1__BIT0); FC_CAL_Bit_Low_DDR(LCD_1__PORT1, LCD_1__TRIS1, LCD_1__BIT1); FC_CAL_Bit_Low_DDR(LCD_1__PORT2, LCD_1__TRIS2, LCD_1__BIT2); FC_CAL_Bit_Low_DDR(LCD_1__PORT3, LCD_1__TRIS3, LCD_1__BIT3); FC_CAL_Bit_Low_DDR(LCD_1__PORT4, LCD_1__TRIS4, LCD_1__RS); FC_CAL_Bit_Low_DDR(LCD_1__PORT5, LCD_1__TRIS5, LCD_1__E); Wdt_Delay_Ms(12); FCD_LCDDisplay0_RawSend(0x33, 0); Wdt_Delay_Ms(2); FCD_LCDDisplay0_RawSend(0x33, 0); Wdt_Delay_Ms(2); FCD_LCDDisplay0_RawSend(0x32, 0); Wdt_Delay_Ms(2); FCD_LCDDisplay0_RawSend(0x2c, 0); Wdt_Delay_Ms(2); FCD_LCDDisplay0_RawSend(0x06, 0); Wdt_Delay_Ms(2); FCD_LCDDisplay0_RawSend(0x0c, 0); Wdt_Delay_Ms(2); //clear the display FCD_LCDDisplay0_RawSend(0x01, 0); Wdt_Delay_Ms(2); FCD_LCDDisplay0_RawSend(0x02, 0); Wdt_Delay_Ms(2); } void FCD_LCDDisplay0_Clear() { FCD_LCDDisplay0_RawSend(0x01, 0); Wdt_Delay_Ms(2); FCD_LCDDisplay0_RawSend(0x02, 0); Wdt_Delay_Ms(2); } void FCD_LCDDisplay0_PrintASCII(MX_UINT8 Character) { FCD_LCDDisplay0_RawSend(Character, 0x10); } void FCD_LCDDisplay0_Command(MX_UINT8 in) { FCD_LCDDisplay0_RawSend(in, 0); Wdt_Delay_Ms(2); } void FCD_LCDDisplay0_Cursor(MX_UINT8 x, MX_UINT8 y) { #if (LCD_1__ROWCNT == 1) y=0x80; #endif #if (LCD_1__ROWCNT == 2) if (y==0) y=0x80; else y=0xc0; #endif #if (LCD_1__ROWCNT == 4) if (y==0) y=0x80; else if (y==1) y=0xc0; #if (LCD_1__COLCNT == 16) else if (y==2) y=0x90; else y=0xd0; #endif #if (LCD_1__COLCNT == 20) else if (y==2) y=0x94; else y=0xd4; #endif #endif FCD_LCDDisplay0_RawSend(y+x, 0); Wdt_Delay_Ms(2); } void FCD_LCDDisplay0_PrintNumber(MX_SINT16 Number) { MX_SINT16 tmp_int; MX_UINT8 tmp_byte; if (Number < 0) { FCD_LCDDisplay0_RawSend('-', 0x10); Number = 0 - Number; } tmp_int = Number; if (Number >= 10000) { tmp_byte = tmp_int / 10000; FCD_LCDDisplay0_RawSend('0' + tmp_byte, 0x10); while (tmp_byte > 0) { tmp_int = tmp_int - 10000; tmp_byte--; } } if (Number >= 1000) { tmp_byte = tmp_int / 1000; FCD_LCDDisplay0_RawSend('0' + tmp_byte, 0x10); while (tmp_byte > 0) { tmp_int = tmp_int - 1000; tmp_byte--; } } if (Number >= 100) { tmp_byte = tmp_int / 100; FCD_LCDDisplay0_RawSend('0' + tmp_byte, 0x10); while (tmp_byte > 0) { tmp_int = tmp_int - 100; tmp_byte--; } } if (Number >= 10) { tmp_byte = tmp_int / 10; FCD_LCDDisplay0_RawSend('0' + tmp_byte, 0x10); while (tmp_byte > 0) { tmp_int = tmp_int - 10; tmp_byte--; } } FCD_LCDDisplay0_RawSend('0' + tmp_int, 0x10); } void FCD_LCDDisplay0_PrintString(MX_STRING String, MX_UINT8 MSZ_String) { MX_UINT8 idx = 0; for (idx=0; idx D0 trisd = trisd & 0xFE; if ((0)) portd = (portd & 0xFE) | 0x01; else portd = portd & 0xFE; //Delay //Delay: 22 ms Wdt_Delay_Ms(22); //Output //Output: 1 -> D0 trisd = trisd & 0xFE; if ((1)) portd = (portd & 0xFE) | 0x01; else portd = portd & 0xFE; //Delay //Delay: 30 us delay_us(30); } void FCM_MY_TMR0() { //Calculation //Calculation: // TOUT = 1 FCV_TOUT = 1; } void FCM_Working_mode() { //Calculation //Calculation: // i = 0 // RH_Byte1 = 0 FCV_I = 0; FCV_RH_BYTE1 = 0; //Loop //Loop: While i < 8 while (FCV_I < 8) { //While !Data //Loop: While in_sig = 0 while (1) { //Input //Input: D0 -> in_sig trisd = trisd | 0x01; FCV_IN_SIG = ((portd & 0x01) == 0x01); if ((FCV_IN_SIG == 0) == 0) break; } //C Code //C Code: /* Enter C code below this comment */ st_bit(intcon, TMR0IE); tmr0l=0x00; //While !Data //Loop: While in_sig = 1 while (1) { //Input //Input: D0 -> in_sig trisd = trisd | 0x01; FCV_IN_SIG = ((portd & 0x01) == 0x01); if ((FCV_IN_SIG == 1) == 0) break; } //C Code //C Code: /* Enter C code below this comment */ cr_bit(intcon, TMR0IE); FCV_TMR0 = tmr0l; //Decision //Decision: TMR0 > 38? if (FCV_TMR0 > 38) { //Calculation //Calculation: // RH_Byte1 = RH_Byte1 | (1 << (7 - i)) FCV_RH_BYTE1 = FCV_RH_BYTE1 | (1 << (7 - FCV_I)); // } else { } //Calculation //Calculation: // i = i + 1 FCV_I = FCV_I + 1; } //Calculation //Calculation: // i = 0 // RH_Byte2 = 0 FCV_I = 0; FCV_RH_BYTE2 = 0; //Loop //Loop: While i < 8 while (FCV_I < 8) { //While !Data //Loop: While in_sig = 0 while (1) { //Input //Input: D0 -> in_sig trisd = trisd | 0x01; FCV_IN_SIG = ((portd & 0x01) == 0x01); if ((FCV_IN_SIG == 0) == 0) break; } //C Code //C Code: /* Enter C code below this comment */ st_bit(intcon, TMR0IE); tmr0l=0x00; //While !Data //Loop: While in_sig = 1 while (1) { //Input //Input: D0 -> in_sig trisd = trisd | 0x01; FCV_IN_SIG = ((portd & 0x01) == 0x01); if ((FCV_IN_SIG == 1) == 0) break; } //C Code //C Code: /* Enter C code below this comment */ cr_bit(intcon, TMR0IE); FCV_TMR0 = tmr0l; //Decision //Decision: TMR0 > 38? if (FCV_TMR0 > 38) { //Calculation //Calculation: // RH_Byte2 = RH_Byte2 | (1 << (7 - i)) FCV_RH_BYTE2 = FCV_RH_BYTE2 | (1 << (7 - FCV_I)); // } else { } //Calculation //Calculation: // i = i + 1 FCV_I = FCV_I + 1; } //Calculation //Calculation: // i = 0 // T_Byte1 = 0 FCV_I = 0; FCV_T_BYTE1 = 0; //Loop //Loop: While i < 8 while (FCV_I < 8) { //While !Data //Loop: While in_sig = 0 while (1) { //Input //Input: D0 -> in_sig trisd = trisd | 0x01; FCV_IN_SIG = ((portd & 0x01) == 0x01); if ((FCV_IN_SIG == 0) == 0) break; } //C Code //C Code: /* Enter C code below this comment */ st_bit(intcon, TMR0IE); tmr0l=0x00; //While Data //Loop: While in_sig = 1 while (1) { //Input //Input: D0 -> in_sig trisd = trisd | 0x01; FCV_IN_SIG = ((portd & 0x01) == 0x01); if ((FCV_IN_SIG == 1) == 0) break; } //C Code //C Code: /* Enter C code below this comment */ cr_bit(intcon, TMR0IE); FCV_TMR0 = tmr0l; //Decision //Decision: TMR0 > 38? if (FCV_TMR0 > 38) { //Calculation //Calculation: // T_Byte1 = T_Byte1 | (1 << (7 - i)) FCV_T_BYTE1 = FCV_T_BYTE1 | (1 << (7 - FCV_I)); // } else { } //Calculation //Calculation: // i = i + 1 FCV_I = FCV_I + 1; } //Calculation //Calculation: // i = 0 // T_Byte2 = 0 FCV_I = 0; FCV_T_BYTE2 = 0; //Loop //Loop: While i < 8 while (FCV_I < 8) { //While !Data //Loop: While in_sig = 0 while (1) { //Input //Input: D0 -> in_sig trisd = trisd | 0x01; FCV_IN_SIG = ((portd & 0x01) == 0x01); if ((FCV_IN_SIG == 0) == 0) break; } //C Code //C Code: /* Enter C code below this comment */ st_bit(intcon, TMR0IE); tmr0l=0x00; //While Data //Loop: While in_sig = 1 while (1) { //Input //Input: D0 -> in_sig trisd = trisd | 0x01; FCV_IN_SIG = ((portd & 0x01) == 0x01); if ((FCV_IN_SIG == 1) == 0) break; } //C Code //C Code: /* Enter C code below this comment */ cr_bit(intcon, TMR0IE); FCV_TMR0 = tmr0l; //Decision //Decision: TMR0 > 38? if (FCV_TMR0 > 38) { //Calculation //Calculation: // T_Byte2 = T_Byte2 | (1 << (7 - i)) FCV_T_BYTE2 = FCV_T_BYTE2 | (1 << (7 - FCV_I)); // } else { } //Calculation //Calculation: // i = i + 1 FCV_I = FCV_I + 1; } //Calculation //Calculation: // i = 0 // CheckSum = 0 FCV_I = 0; FCV_CHECKSUM = 0; //Loop //Loop: While i < 8 while (FCV_I < 8) { //While !Data //Loop: While in_sig = 0 while (1) { //Input //Input: D0 -> in_sig trisd = trisd | 0x01; FCV_IN_SIG = ((portd & 0x01) == 0x01); if ((FCV_IN_SIG == 0) == 0) break; } //C Code //C Code: /* Enter C code below this comment */ st_bit(intcon, TMR0IE); tmr0l=0x00; //While Data //Loop: While in_sig = 1 while (1) { //Input //Input: D0 -> in_sig trisd = trisd | 0x01; FCV_IN_SIG = ((portd & 0x01) == 0x01); if ((FCV_IN_SIG == 1) == 0) break; } //C Code //C Code: /* Enter C code below this comment */ cr_bit(intcon, TMR0IE); FCV_TMR0 = tmr0l; //Decision //Decision: TMR0 > 38? if (FCV_TMR0 > 38) { //Calculation //Calculation: // CheckSum = CheckSum | (1 << (7 - i)) FCV_CHECKSUM = FCV_CHECKSUM | (1 << (7 - FCV_I)); // } else { } //Calculation //Calculation: // i = i + 1 FCV_I = FCV_I + 1; } //Calculation //Calculation: // TEST_CHECK = RH_Byte1 + RH_Byte2 + T_Byte1 + T_Byte2 // TEST_CHECK = TEST_CHECK AND 0x00FF FCV_TEST_CHECK = FCV_RH_BYTE1 + FCV_RH_BYTE2 + FCV_T_BYTE1 + FCV_T_BYTE2; FCV_TEST_CHECK = FCV_TEST_CHECK & 0x00FF; //Decision //Decision: CheckSum = TEST_CHECK? if (FCV_CHECKSUM == FCV_TEST_CHECK) { //CTEBA //Decision: 0? #if (0) //Call Component Macro //Call Component Macro: Clear() FCD_LCDDisplay0_Clear(); // #else #endif //Call Component Macro //Call Component Macro: Cursor(0, 3) FCD_LCDDisplay0_Cursor(0, 3); //Call Component Macro //Call Component Macro: PrintNumber(T_Byte1) FCD_LCDDisplay0_PrintNumber(FCV_T_BYTE1); //Call Component Macro //Call Component Macro: PrintASCII(0xDF) FCD_LCDDisplay0_PrintASCII(0xDF); //Call Component Macro //Call Component Macro: Cursor(3, 3) FCD_LCDDisplay0_Cursor(3, 3); //Call Component Macro //Call Component Macro: PrintNumber(RH_Byte1) FCD_LCDDisplay0_PrintNumber(FCV_RH_BYTE1); //Call Component Macro //Call Component Macro: PrintASCII("%") FCD_LCDDisplay0_PrintASCII('%'); } else { //CTEBA //Decision: 0? #if (0) //Call Component Macro //Call Component Macro: Clear() FCD_LCDDisplay0_Clear(); // #else #endif //Call Component Macro //Call Component Macro: Cursor(0, 0) FCD_LCDDisplay0_Cursor(0, 0); //Call Component Macro //Call Component Macro: PrintString("CheckSum Error!") FCD_LCDDisplay0_PrintString("CheckSum Error!", 15); //Call Component Macro //Call Component Macro: Cursor(0, 1) FCD_LCDDisplay0_Cursor(0, 1); //Call Component Macro //Call Component Macro: PrintString("Trying again..") FCD_LCDDisplay0_PrintString("Trying again..", 14); } } void FCM_Bio_MAIN_DHT11() { //Delay //Delay: 200 ms Wdt_Delay_Ms(200); //Call Macro //Call Macro: StartSignal() FCM_StartSignal(); //Comment: //If there's no response within 256us, //the Timer0 overflows //Interrupt //Interrupt: Enable TMR0 cr_bit(t0con, T0CS); st_bit(t0con, T0SE); t0con = (t0con & 0xF0) | 0x02; st_bit(intcon, GIE); st_bit(intcon, TMR0IE); //C Code //C Code: /* Enter C code below this comment */ cr_bit(t0con, T0CS); tmr0l=0x00; //Calculation //Calculation: // TOUT = 0 FCV_TOUT = 0; //While !Data //Loop: While (in_sig = 0) && (TOUT = 0) while (1) { //Input //Input: D0 -> in_sig trisd = trisd | 0x01; FCV_IN_SIG = ((portd & 0x01) == 0x01); if (((FCV_IN_SIG == 0) && (FCV_TOUT == 0)) == 0) break; } //Decision //Decision: TOUT = 0? if (FCV_TOUT == 0) { //Interrupt //Interrupt: Disable TMR0 cr_bit(intcon, TMR0IE); //Calculation //Calculation: // check = 1 FCV_CHECK = 1; } else { //Calculation //Calculation: // check = 0 FCV_CHECK = 0; //Interrupt //Interrupt: Disable TMR0 cr_bit(intcon, TMR0IE); } //Decision //Decision: ! (check)? if (!(FCV_CHECK)) { //CTEBA //Decision: 0? #if (0) //Call Component Macro //Call Component Macro: Clear() FCD_LCDDisplay0_Clear(); // #else #endif //Call Component Macro //Call Component Macro: Cursor(0, 0) FCD_LCDDisplay0_Cursor(0, 0); //Call Component Macro //Call Component Macro: PrintString("No response") FCD_LCDDisplay0_PrintString("No response", 11); //Call Component Macro //Call Component Macro: Cursor(0, 1) FCD_LCDDisplay0_Cursor(0, 1); //Call Component Macro //Call Component Macro: PrintString("from the sensor") FCD_LCDDisplay0_PrintString("from the sensor", 15); } else { //Loop //Loop: While in_sig = 1 while (1) { //Input //Input: D0 -> in_sig trisd = trisd | 0x01; FCV_IN_SIG = ((portd & 0x01) == 0x01); if ((FCV_IN_SIG == 1) == 0) break; } //Call Macro //Call Macro: Working_mode() FCM_Working_mode(); } } void FCM_Grejaci() { //Uslov za grejac 1 //Decision: LM35_Celsius_C5_Int <= Zadata_temp? if (FCV_LM35_CELSIUS_C5_INT <= FCV_ZADATA_TEMP) { //Grejac 1 //Output: 2 -> PORTC trisc = trisc & 0xF9; portc = (portc & 0xF9) | ((2) & 0x06); } else { //Grejac 1 //Output: 0 -> PORTC trisc = trisc & 0xFD; portc = (portc & 0xFD) | ((0) & 0x02); } //Uslov za grejac 2 //Decision: LM35_Celsius_C6_Int < Zadata_temp? if (FCV_LM35_CELSIUS_C6_INT < FCV_ZADATA_TEMP) { //Grejac 1 //Output: 6 -> PORTC trisc = trisc & 0xF9; portc = (portc & 0xF9) | ((6) & 0x06); } else { //Grejac 1 //Output: 0 -> PORTC trisc = trisc & 0xFB; portc = (portc & 0xFB) | ((0) & 0x04); } } //Inicijalizuj sve potrebne parametre i postavi promenljive na zeljene vrednosti. //Prescaler Rate = 1:256 //Clock speed: 32.000.000 Hz [32MHz] //Interrupt Frequency: 122,07 Hz void FCM_Inicijalizacija() { //Interrupt //Interrupt: Enable TMR0 cr_bit(t0con, T0CS); st_bit(t0con, T0SE); t0con = (t0con & 0xF0) | 0x07; st_bit(intcon, GIE); st_bit(intcon, TMR0IE); //Startuj displej //Call Component Macro: Start() FCD_LCDDisplay0_Start(); //Pauza da se LCD "zalaufa"! //Delay: 50 ms Wdt_Delay_Ms(50); //Ocisti LCD displej //Call Component Macro: Clear() FCD_LCDDisplay0_Clear(); //Kursor 2,1 //Call Component Macro: Cursor(2, 0) FCD_LCDDisplay0_Cursor(2, 0); //INICIJALIZACIJA //Call Component Macro: PrintString(" CTEBA ") FCD_LCDDisplay0_PrintString(" CTEBA ", 9); //Kursor 2,2 //Call Component Macro: Cursor(2, 2) FCD_LCDDisplay0_Cursor(2, 2); //1s pauza //Delay: 1 s Wdt_Delay_S(1); //Loop //Loop: Loop 40 times for (FCLV_LOOP1=0; FCLV_LOOP1<40; FCLV_LOOP1++) { //Provrti na LCDu //Decision: Vrti_na_LCDu >= 20? if (FCV_VRTI_NA_LCDU >= 20) { //Samo da provrti LCD //Calculation: // Vrti_na_LCDu = 1 FCV_VRTI_NA_LCDU = 1; } else { //Samo da provrti LCD //Calculation: // Vrti_na_LCDu = Vrti_na_LCDu - 1 FCV_VRTI_NA_LCDU = FCV_VRTI_NA_LCDU - 1; } //1x "Pun kvadrat"! //Call Component Macro: ScrollDisplay(0, Vrti_na_LCDu) FCD_LCDDisplay0_ScrollDisplay(0, FCV_VRTI_NA_LCDU); //Samo da provrti LCD //Calculation: // Vrti_na_LCDu = Vrti_na_LCDu + 2 FCV_VRTI_NA_LCDU = FCV_VRTI_NA_LCDU + 2; //100ms pauza //Delay: 100 ms Wdt_Delay_Ms(100); } //Vrati promenljivu "za program" //Calculation: // Vrti_na_LCDu = 162 FCV_VRTI_NA_LCDU = 162; //1s pauza //Delay: 1 s Wdt_Delay_S(1); //Ocisti LCD displej //Call Component Macro: Clear() FCD_LCDDisplay0_Clear(); } void FCM_Moj_TMRO() { //Local variable definitions MX_SINT16 FCL_INTERNI_BROJAC_TMROX; // Za odbrojavanje sekundi, za interne potrebe. //Odbrojana 1s //Decision: TMRO_Interni_Brojac >= 122? if (FCV_TMRO_INTERNI_BROJAC >= 122) { //Vrati na 0 (Interapt) //Calculation: // TMRO_Interni_Brojac = 0 FCV_TMRO_INTERNI_BROJAC = 0; //Sekunda //Calculation: // TMRO_Clock_sek = TMRO_Clock_sek + 1 FCV_TMRO_CLOCK_SEK = FCV_TMRO_CLOCK_SEK + 1; //Vrti na displeju //Calculation: // Vrti_na_LCDu = Vrti_na_LCDu + 1 FCV_VRTI_NA_LCDU = FCV_VRTI_NA_LCDU + 1; } else { //Interni brojac (Interapt) //Calculation: // TMRO_Interni_Brojac = TMRO_Interni_Brojac + 1 FCV_TMRO_INTERNI_BROJAC = FCV_TMRO_INTERNI_BROJAC + 1; } //Local variable definitions } //Odbrojavanje sekundi, minuta i sati, za interne potrebe. void FCM_Odbrojavanje() { //Odbrojano 60s //Decision: TMRO_Clock_sek >= 60? if (FCV_TMRO_CLOCK_SEK >= 60) { //+ minut //Calculation: // TMRO_Clock_min = TMRO_Clock_min + 1 FCV_TMRO_CLOCK_MIN = FCV_TMRO_CLOCK_MIN + 1; //"Sredjivanje" sek //Calculation: // TMRO_Clock_sek = TMRO_Clock_sek - 60 FCV_TMRO_CLOCK_SEK = FCV_TMRO_CLOCK_SEK - 60; // } else { } //Odbrojano 60min //Decision: TMRO_Clock_min > 59? if (FCV_TMRO_CLOCK_MIN > 59) { //+ sat //Calculation: // TMRO_Clock_h = TMRO_Clock_h + 1 FCV_TMRO_CLOCK_H = FCV_TMRO_CLOCK_H + 1; //Sredjivanje minuta //Calculation: // TMRO_Clock_min = TMRO_Clock_min - 60 FCV_TMRO_CLOCK_MIN = FCV_TMRO_CLOCK_MIN - 60; //"Sredjivanje" sek //Calculation: // TMRO_Clock_sek = TMRO_Clock_sek - 2 // // Oduzima se 2s od promenljive Clock_sek, // // zato ?to interapt gre?i 4,2 interapta po min. // // Ka?njenje posle 1h (60min) iznosi 252 interapta, // // ?to je 2s i preostaje jo? 7,86 interapta. // // To bi zna?ilo da ?e za 16h da zakasni jo? // // 125,76 interapta, ?to iznosi 1s i preostaje jo? // // 3,69 interapta. To vi?e NE?EMO ODUZIMATI! FCV_TMRO_CLOCK_SEK = FCV_TMRO_CLOCK_SEK - 2; // } else { } //Odbrojano 24h //Decision: TMRO_Clock_h > 23? if (FCV_TMRO_CLOCK_H > 23) { //Sredjivanje sati //Calculation: // TMRO_Clock_h = TMRO_Clock_h - 24 FCV_TMRO_CLOCK_H = FCV_TMRO_CLOCK_H - 24; // } else { } //Promeni znak za "Vrti_na_LCDu" //Decision: Vrti_na_LCDu >= 164? if (FCV_VRTI_NA_LCDU >= 164) { //Vrati "Vrti_na_LCDu" na =162 //Calculation: // Vrti_na_LCDu = 162 FCV_VRTI_NA_LCDU = 162; // } else { } } //Preracunaj sve izcitanje senzore void FCM_Preracunaj_vrednosti() { //Local variable definitions MX_FLOAT FCL_REFNAPON1V = (0.39215699999999998); // Za +VRef=1V -> 100/255 = 0.392157; Da li onda za +VRef=1,1V -> 110/255 = 0.431372 MX_FLOAT FCL_TEMP_C5; MX_FLOAT FCL_TEMP_C6; MX_FLOAT FCL_CELSIUS_C5_FLOAT; MX_FLOAT FCL_CELSIUS_C6_FLOAT; MX_FLOAT FCL_REFNAPON4V = (1.568627); //Izracunaj temp. LM35 //Calculation: // // Ako vrednost sa C5 & C7 citamo sa +VRef 1V; 100/255 = 0.392157 // // Ako vrednost sa C5 & C7 citamo sa +VRef 4V; 400/255 = 1,568627 // // // // RefNapon1V = 0.392157 // Upisana je inicijalna vrednost u samu promenljivu // // RefNapon4V = 1,568627 // Upisana je inicijalna vrednost u samu promenljivu // //**************************************************** // // Vrednost sa Porta C5 // .temp_C5 = int2float (LM35_ReadADC_C5) // //Ako je VRef+ = 1V, slede?i red ostaviti za prora?un // //.Celsius_C5_Float = fmul (.RefNapon1V, .temp_C5) // //Ako je VRef+ = 4V, slede?i red ostaviti za prora?un // .Celsius_C5_Float = fmul (.RefNapon4V, .temp_C5) // LM35_Celsius_C5_Int = float2int (.Celsius_C5_Float) // //**************************************************** // //**************************************************** // // Vrednost sa Porta C7 // .temp_C6 = int2float (LM35_ReadADC_C6) // //Ako je VRef+ = 1V, slede?i red ostaviti za prora?un // //.Celsius_C6_Float = fmul (.RefNapon1V, .temp_C6) // //Ako je VRef+ = 4V, slede?i red ostaviti za prora?un // .Celsius_C6_Float = fmul (.RefNapon4V, .temp_C6) // LM35_Celsius_C6_Int = float2int (.Celsius_C6_Float) // //**************************************************** FCL_TEMP_C5 = flt_fromi(FCV_LM35_READADC_C5); FCL_CELSIUS_C5_FLOAT = flt_mul(FCL_REFNAPON4V, FCL_TEMP_C5); FCV_LM35_CELSIUS_C5_INT = flt_toi(FCL_CELSIUS_C5_FLOAT); FCL_TEMP_C6 = flt_fromi(FCV_LM35_READADC_C6); FCL_CELSIUS_C6_FLOAT = flt_mul(FCL_REFNAPON4V, FCL_TEMP_C6); FCV_LM35_CELSIUS_C6_INT = flt_toi(FCL_CELSIUS_C6_FLOAT); //Local variable definitions } //Sve prikupljene i preracunate podatke sa senzora prikazi na LCD displeju. void FCM_Prikazi_na_LCD() { //Loop //Loop: Loop 1 times for (FCLV_LOOP2=0; FCLV_LOOP2<1; FCLV_LOOP2++) { //Kursor na 0,3 //Call Component Macro: Cursor(14, 3) FCD_LCDDisplay0_Cursor(14, 3); //Comment: //Ispisi vrednosti temp. iz 'Kamena-Grejaca' //U cetvrtom redu displeja [LCD= 0,3 do 6,3]! //Uslov prazno mesto //Decision: LM35_Celsius_C5_Int < 10? if (FCV_LM35_CELSIUS_C5_INT < 10) { //Mesto za 'deseticu' //Call Component Macro: PrintString(" ") FCD_LCDDisplay0_PrintString(" ", 1); // } else { } //Prikazi C5 temp //Decision: LM35_Celsius_C5_Int <> LM35_Celsius_C5_Int_OLD? if (FCV_LM35_CELSIUS_C5_INT != FCV_LM35_CELSIUS_C5_INT_OLD) { //Prikazi temp //Call Component Macro: PrintNumber(LM35_Celsius_C5_Int) FCD_LCDDisplay0_PrintNumber(FCV_LM35_CELSIUS_C5_INT); //Znak za temp. (°) //Call Component Macro: PrintASCII(223) FCD_LCDDisplay0_PrintASCII(223); // } else { } //Ako je promenjena vred. temp. C5 //Calculation: // LM35_Celsius_C5_Int_OLD = LM35_Celsius_C5_Int FCV_LM35_CELSIUS_C5_INT_OLD = FCV_LM35_CELSIUS_C5_INT; //Kursor na 3,3 //Call Component Macro: Cursor(17, 3) FCD_LCDDisplay0_Cursor(17, 3); //Uslov prazno mesto //Decision: LM35_Celsius_C6_Int < 10? if (FCV_LM35_CELSIUS_C6_INT < 10) { //Mesto za 'deseticu' //Call Component Macro: PrintString(" ") FCD_LCDDisplay0_PrintString(" ", 1); // } else { } //Prikazi C6 temp //Decision: LM35_Celsius_C6_Int <> LM35_Celsius_C6_Int_OLD? if (FCV_LM35_CELSIUS_C6_INT != FCV_LM35_CELSIUS_C6_INT_OLD) { //Prikazi temp //Call Component Macro: PrintNumber(LM35_Celsius_C6_Int) FCD_LCDDisplay0_PrintNumber(FCV_LM35_CELSIUS_C6_INT); //Znak za temp. (°) //Call Component Macro: PrintASCII(223) FCD_LCDDisplay0_PrintASCII(223); // } else { } //Ako je promenjena vred. temp. C7 //Calculation: // LM35_Celsius_C6_Int_OLD = LM35_Celsius_C6_Int FCV_LM35_CELSIUS_C6_INT_OLD = FCV_LM35_CELSIUS_C6_INT; //Comment: //Zavrsen ispis vrednosti temp. sa //'Kamena-Grejaca' u 4. redu LCD-a! } //Kursor na 6,3 //Call Component Macro: Cursor(6, 3) FCD_LCDDisplay0_Cursor(6, 3); //"Vrti znakic" na LCDu //Call Component Macro: PrintASCII(Vrti_na_LCDu) FCD_LCDDisplay0_PrintASCII(FCV_VRTI_NA_LCDU); //Call Component Macro //Call Component Macro: //No code generated because there is no macro name //Kursor na 13,3 //Call Component Macro: Cursor(13, 3) FCD_LCDDisplay0_Cursor(13, 3); //Promena znakica za "Vrti znakic" //Decision: Vrti_na_LCDu = 162? if (FCV_VRTI_NA_LCDU == 162) { //"Vrti znakic" na LCDu //Call Component Macro: PrintASCII(163) FCD_LCDDisplay0_PrintASCII(163); } else { //"Vrti znakic" na LCDu //Call Component Macro: PrintASCII(162) FCD_LCDDisplay0_PrintASCII(162); } //Kursor na 0,0 //Call Component Macro: Cursor(0, 0) FCD_LCDDisplay0_Cursor(0, 0); } //Procitaj sve ULAZNE senzore, upisi u promenljive i pripremi za dalje koriscenje/kalkulacije. void FCM_Procitaj_Senzore() { //Comment: //Citanje temperature sa 3 analogna LM35, //- 2 se nalaze u "Kamenu greja?u" //- 1 "levo" kod pe?ine //Senzor LM35 na C5 //Call Component Macro: LM35_ReadADC_C5=ReadAsByte() FCV_LM35_READADC_C5 = FCD_ADC2_ReadAsByte(); //Senzor LM35 na C6 //Call Component Macro: LM35_ReadADC_C6=ReadAsByte() FCV_LM35_READADC_C6 = FCD_ADC3_ReadAsByte(); //Senzor LM35 na C7 //Call Component Macro: LM35_ReadADC_C7=ReadAsByte() FCV_LM35_READADC_C7 = FCD_ADC4_ReadAsByte(); //Calculation //Calculation: // lm35 = LM35_ReadADC_C7 FCV_LM35 = FCV_LM35_READADC_C7; } void FCM_PWM() { //Call Component Macro //Call Component Macro: Poti=ReadAsByte() FCV_POTI = FCD_ADC0_ReadAsByte(); //Calculation //Calculation: // duty = Poti FCV_DUTY = FCV_POTI; //Call Component Macro //Call Component Macro: Poti2=ReadAsByte() FCV_POTI2 = FCD_ADC1_ReadAsByte(); //Calculation //Calculation: // duty2 = Poti2 FCV_DUTY2 = FCV_POTI2; //Call Component Macro //Call Component Macro: Enable() FCD_PWM0_Enable(); //Call Component Macro //Call Component Macro: Enable() FCD_PWM1_Enable(); //Call Component Macro //Call Component Macro: Enable() FCD_PWM2_Enable(); //Call Component Macro //Call Component Macro: Enable() FCD_PWM3_Enable(); //Call Component Macro //Call Component Macro: Enable() FCD_PWM4_Enable(); //Call Component Macro //Call Component Macro: SetDutyCycle(duty) FCD_PWM0_SetDutyCycle(FCV_DUTY); //Call Component Macro //Call Component Macro: SetDutyCycle(duty2) FCD_PWM1_SetDutyCycle(FCV_DUTY2); //Call Component Macro //Call Component Macro: SetDutyCycle(duty) FCD_PWM2_SetDutyCycle(FCV_DUTY); //Call Component Macro //Call Component Macro: SetDutyCycle(duty) FCD_PWM3_SetDutyCycle(FCV_DUTY); //Call Component Macro //Call Component Macro: SetDutyCycle(duty2) FCD_PWM4_SetDutyCycle(FCV_DUTY2); } void FCM_Bio_Main_LM35() { //Preracunaj sve promenljive //Call Macro: Preracunaj_vrednosti() FCM_Preracunaj_vrednosti(); //Prikazi na LCDu //Call Macro: Prikazi_na_LCD() FCM_Prikazi_na_LCD(); //200ms //Delay: 200 ms Wdt_Delay_Ms(200); } void FCM_Temp_Pecina() { //Calculation //Calculation: // RefSpan = fdiv (400,255) // temp_string = int2float (lm35) // DegreesCelsius = fmul (RefSpan,temp_string) FCV_REFSPAN = flt_div(400, 255); FCV_TEMP_STRING = flt_toi(flt_fromi(FCV_LM35)); FCV_DEGREESCELSIUS = flt_mul(FCV_REFSPAN, flt_fromi(FCV_TEMP_STRING)); //String Manipulatie //Calculation: // sdegreescelsius = FloatToString$ (DegreesCelsius) FCI_FLOAT_TO_STRING(FCV_DEGREESCELSIUS, 6, FCV_SDEGREESCELSIUS,FCSZ_SDEGREESCELSIUS); //Component Macro Aanroepen //Call Component Macro: Cursor(7, 3) FCD_LCDDisplay0_Cursor(7, 3); //Component Macro Aanroepen //Call Component Macro: PrintString(sdegreescelsius) FCD_LCDDisplay0_PrintString(FCV_SDEGREESCELSIUS, FCSZ_SDEGREESCELSIUS); //Znak za temp. (°) //Call Component Macro: PrintASCII(223) FCD_LCDDisplay0_PrintASCII(223); //C //Call Component Macro: PrintString("C") FCD_LCDDisplay0_PrintString("C", 1); } void main() { //Initialization ansela = 0x00; anselb = 0x00; anselc = 0x00; anseld = 0x00; ansele = 0x00; //Interrupt initialization code //C Code //C Code: /* "Sre?ivanje" izlaza na B portu zbog problema sa MCU iz serije K (18FxxKxx), dodavanjem C-koda, LCD display RADI NORMALNO, na testiranoj frekvenciji 32MHz! "OSC=8MHz; 4xPLL=ON" */ slrcon=0b00000000; //Call Component Macro //Call Component Macro: Start() FCD_LCDDisplay0_Start(); //Delay //Delay: 500 ms Wdt_Delay_Ms(255); Wdt_Delay_Ms(245); //Port ON = C2 //Output: 255 -> C2 trisc = trisc & 0xFB; if ((255)) portc = (portc & 0xFB) | 0x04; else portc = portc & 0xFB; //Delay //Delay: 500 ms Wdt_Delay_Ms(255); Wdt_Delay_Ms(245); //Port OFF = C2 //Output: 0 -> C2 trisc = trisc & 0xFB; if ((0)) portc = (portc & 0xFB) | 0x04; else portc = portc & 0xFB; //Port ON = C1 //Output: 255 -> C1 trisc = trisc & 0xFD; if ((255)) portc = (portc & 0xFD) | 0x02; else portc = portc & 0xFD; //Delay //Delay: 500 ms Wdt_Delay_Ms(255); Wdt_Delay_Ms(245); //Port OFF = C1 //Output: 0 -> C1 trisc = trisc & 0xFD; if ((0)) portc = (portc & 0xFD) | 0x02; else portc = portc & 0xFD; //Port ON = E0 //Output: 255 -> E0 trise = trise & 0xFE; if ((255)) porte = (porte & 0xFE) | 0x01; else porte = porte & 0xFE; //Delay //Delay: 500 ms Wdt_Delay_Ms(255); Wdt_Delay_Ms(245); //Port OFF = E0 //Output: 0 -> E0 trise = trise & 0xFE; if ((0)) porte = (porte & 0xFE) | 0x01; else porte = porte & 0xFE; //Port ON = D1 //Output: 255 -> D1 trisd = trisd & 0xFD; if ((255)) portd = (portd & 0xFD) | 0x02; else portd = portd & 0xFD; //Delay //Delay: 500 ms Wdt_Delay_Ms(255); Wdt_Delay_Ms(245); //Port OFF = D1 //Output: 0 -> D1 trisd = trisd & 0xFD; if ((0)) portd = (portd & 0xFD) | 0x02; else portd = portd & 0xFD; //Port ON = E2 //Output: 255 -> E2 trise = trise & 0xFB; if ((255)) porte = (porte & 0xFB) | 0x04; else porte = porte & 0xFB; //Delay //Delay: 500 ms Wdt_Delay_Ms(255); Wdt_Delay_Ms(245); //Port OFF = E2 //Output: 0 -> E2 trise = trise & 0xFB; if ((0)) porte = (porte & 0xFB) | 0x04; else porte = porte & 0xFB; //Call Component Macro //Call Component Macro: Cursor(0, 0) FCD_LCDDisplay0_Cursor(0, 0); //Calculation //Calculation: // check = 0 // TOUT = 0 // Poti = 0 // Poti2 = 0 FCV_CHECK = 0; FCV_TOUT = 0; FCV_POTI = 0; FCV_POTI2 = 0; //Interrupt //Interrupt: Enable TMR0 cr_bit(t0con, T0CS); st_bit(t0con, T0SE); t0con = (t0con & 0xF0) | 0x02; st_bit(intcon, GIE); st_bit(intcon, TMR0IE); //Inicijalizacija //Call Macro: Inicijalizacija() FCM_Inicijalizacija(); //Loop //Loop: While 1 while (1) { //Call Macro //Call Macro: PWM() FCM_PWM(); //Izcitaj temp. senzore //Call Macro: Procitaj_Senzore() FCM_Procitaj_Senzore(); //Call Macro //Call Macro: PWM() FCM_PWM(); //Call Macro //Call Macro: Bio_Main_LM35() FCM_Bio_Main_LM35(); //Call Macro //Call Macro: Temp_Pecina() FCM_Temp_Pecina(); //Call Macro //Call Macro: PWM() FCM_PWM(); //Call Macro //Call Macro: Bio_MAIN_DHT11() FCM_Bio_MAIN_DHT11(); //Interrupt //Interrupt: Enable TMR0 cr_bit(t0con, T0CS); st_bit(t0con, T0SE); t0con = (t0con & 0xF0) | 0x02; st_bit(intcon, GIE); st_bit(intcon, TMR0IE); } mainendloop: goto mainendloop; } void MX_INTERRUPT_MACRO(void) { //Handler code for [TMR0] #ifndef MX_INTHANDLER_intcon_TMR0IF #define MX_INTHANDLER_intcon_TMR0IF if (ts_bit(intcon, TMR0IF) && ts_bit(intcon, TMR0IE)) { #ifdef USE_FLOWCODE_ICD extern char ICD_Interrupt_Enable = 1; #endif FCM_MY_TMR0(); cr_bit(intcon, TMR0IF); #ifdef USE_FLOWCODE_ICD extern char ICD_Interrupt_Enable = 0; #endif } #else #warning "This interrupt has previously been enabled, so the macro may never get called." #endif //Handler code for [TMR0] #ifndef MX_INTHANDLER_intcon_TMR0IF #define MX_INTHANDLER_intcon_TMR0IF if (ts_bit(intcon, TMR0IF) && ts_bit(intcon, TMR0IE)) { #ifdef USE_FLOWCODE_ICD extern char ICD_Interrupt_Enable = 1; #endif FCM_MY_TMR0(); cr_bit(intcon, TMR0IF); #ifdef USE_FLOWCODE_ICD extern char ICD_Interrupt_Enable = 0; #endif } #else #warning "This interrupt has previously been enabled, so the macro may never get called." #endif //Handler code for [TMR0] #ifndef MX_INTHANDLER_intcon_TMR0IF #define MX_INTHANDLER_intcon_TMR0IF if (ts_bit(intcon, TMR0IF) && ts_bit(intcon, TMR0IE)) { #ifdef USE_FLOWCODE_ICD extern char ICD_Interrupt_Enable = 1; #endif FCM_MY_TMR0(); cr_bit(intcon, TMR0IF); #ifdef USE_FLOWCODE_ICD extern char ICD_Interrupt_Enable = 0; #endif } #else #warning "This interrupt has previously been enabled, so the macro may never get called." #endif //Handler code for [TMR0] #ifndef MX_INTHANDLER_intcon_TMR0IF #define MX_INTHANDLER_intcon_TMR0IF if (ts_bit(intcon, TMR0IF) && ts_bit(intcon, TMR0IE)) { #ifdef USE_FLOWCODE_ICD extern char ICD_Interrupt_Enable = 1; #endif FCM_Moj_TMRO(); cr_bit(intcon, TMR0IF); #ifdef USE_FLOWCODE_ICD extern char ICD_Interrupt_Enable = 0; #endif } #else #warning "This interrupt has previously been enabled, so the macro may never get called." #endif }