From d49c865521d0cee0317ba8e2a3f82d978e3af3a3 Mon Sep 17 00:00:00 2001 From: David Fainitski Date: Wed, 4 Nov 2020 11:00:40 -0800 Subject: [PATCH] Add files via upload --- .../atu_100_fw_00_callertable.txt | 4181 ++++++++ .../1938_EXT_board_sources_V_3.1/backup.c | 2 + .../1938_EXT_board_sources_V_3.1/backup.c.ini | 9 + .../1938_EXT_board_sources_V_3.1/backup.mcl | Bin 0 -> 931 bytes .../1938_EXT_board_sources_V_3.1/font5x8.h | 100 + .../font5x8.h.ini | 9 + .../1938_EXT_board_sources_V_3.1/main.asm | 9447 +++++++++++++++++ .../1938_EXT_board_sources_V_3.1/main.c | 863 ++ .../1938_EXT_board_sources_V_3.1/main.c.ini | 9 + .../1938_EXT_board_sources_V_3.1/main.cp | 1332 +++ .../1938_EXT_board_sources_V_3.1/main.h | 419 + .../1938_EXT_board_sources_V_3.1/main.h.ini | 9 + .../1938_EXT_board_sources_V_3.1/main.ini | 9 + .../1938_EXT_board_sources_V_3.1/main.mcl | Bin 0 -> 258149 bytes .../1938_EXT_board_sources_V_3.1/main_main.h | 521 + .../oled_control.asm | 1694 +++ .../oled_control.c | 407 + .../oled_control.c.ini | 9 + .../oled_control.cp | 535 + .../oled_control.h | 30 + .../oled_control.h.ini | 9 + .../oled_control.mcl | Bin 0 -> 48659 bytes .../1938_EXT_board_sources_V_3.1/pic_init.asm | 74 + .../1938_EXT_board_sources_V_3.1/pic_init.c | 48 + .../pic_init.c.ini | 9 + .../1938_EXT_board_sources_V_3.1/pic_init.cp | 49 + .../1938_EXT_board_sources_V_3.1/pic_init.h | 80 + .../pic_init.h.ini | 9 + .../1938_EXT_board_sources_V_3.1/pic_init.mcl | Bin 0 -> 3445 bytes 29 files changed, 19863 insertions(+) create mode 100644 ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/atu_100_fw_00_callertable.txt create mode 100644 ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/backup.c create mode 100644 ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/backup.c.ini create mode 100644 ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/backup.mcl create mode 100644 ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/font5x8.h create mode 100644 ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/font5x8.h.ini create mode 100644 ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/main.asm create mode 100644 ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/main.c create mode 100644 ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/main.c.ini create mode 100644 ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/main.cp create mode 100644 ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/main.h create mode 100644 ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/main.h.ini create mode 100644 ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/main.ini create mode 100644 ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/main.mcl create mode 100644 ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/main_main.h create mode 100644 ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/oled_control.asm create mode 100644 ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/oled_control.c create mode 100644 ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/oled_control.c.ini create mode 100644 ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/oled_control.cp create mode 100644 ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/oled_control.h create mode 100644 ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/oled_control.h.ini create mode 100644 ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/oled_control.mcl create mode 100644 ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/pic_init.asm create mode 100644 ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/pic_init.c create mode 100644 ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/pic_init.c.ini create mode 100644 ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/pic_init.cp create mode 100644 ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/pic_init.h create mode 100644 ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/pic_init.h.ini create mode 100644 ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/pic_init.mcl diff --git a/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/atu_100_fw_00_callertable.txt b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/atu_100_fw_00_callertable.txt new file mode 100644 index 0000000..337892a --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/atu_100_fw_00_callertable.txt @@ -0,0 +1,4181 @@ +main + __CC2DW + pic_init + ADC_Init + cells_init + EEPROM_Read + Bcd2Dec + Mul_8X8_U + Mul_8X8_U + Soft_I2C_Init + EEPROM_Read + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + led_init + EEPROM_Read + oled_init + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + set_addressing + Soft_I2C_Start + Soft_I2C_Write + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + set_cap + VDelay_ms + Mul_32x32_U + set_ind + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + Button + Delay_500us + EEPROM_Read + Bcd2Dec + Mul_8X8_U + show_loss + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + Dec2Bcd + Div_8X8_U + EEPROM_Write + lcd_prep + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + Test_init + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + atu_reset + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + EEPROM_Write + lcd_prep + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_pwr + button_delay + Button + Delay_500us + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + get_reverse + ADC_Get_Sample + Delay_22us + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + double2int + SETIOV3224 + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + button_proc + Button + Delay_500us + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + show_reset + atu_reset + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + EEPROM_Write + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_pwr + button_delay + Button + Delay_500us + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + get_reverse + ADC_Get_Sample + Delay_22us + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + double2int + SETIOV3224 + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + btn_push + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + tune + get_swr + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + get_reverse + ADC_Get_Sample + Delay_22us + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + Button + Delay_500us + show_reset + atu_reset + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + EEPROM_Write + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_pwr + button_delay + Button + Delay_500us + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + get_reverse + ADC_Get_Sample + Delay_22us + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + double2int + SETIOV3224 + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + atu_reset + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + VDelay_ms + Mul_32x32_U + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + sub_tune + coarse_tune + Div_16x16_S + Div_16x16_S_L + Mul_8X8_U + set_ind + VDelay_ms + Mul_32x32_U + coarse_cap + set_cap + VDelay_ms + Mul_32x32_U + get_swr + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + get_reverse + ADC_Get_Sample + Delay_22us + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + Button + Delay_500us + show_reset + atu_reset + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + EEPROM_Write + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_pwr + button_delay + Button + Delay_500us + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + get_reverse + ADC_Get_Sample + Delay_22us + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + double2int + SETIOV3224 + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + Div_16x16_S + Div_16x16_S_L + Mul_8X8_U + get_swr + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + get_reverse + ADC_Get_Sample + Delay_22us + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + Button + Delay_500us + show_reset + atu_reset + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + EEPROM_Write + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_pwr + button_delay + Button + Delay_500us + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + get_reverse + ADC_Get_Sample + Delay_22us + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + double2int + SETIOV3224 + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + set_cap + VDelay_ms + Mul_32x32_U + atu_reset + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + VDelay_ms + Mul_32x32_U + get_swr + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + get_reverse + ADC_Get_Sample + Delay_22us + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + Button + Delay_500us + show_reset + atu_reset + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + EEPROM_Write + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_pwr + button_delay + Button + Delay_500us + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + get_reverse + ADC_Get_Sample + Delay_22us + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + double2int + SETIOV3224 + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + sharp_ind + Mul_8X8_U + set_ind + VDelay_ms + Mul_32x32_U + get_swr + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + get_reverse + ADC_Get_Sample + Delay_22us + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + Button + Delay_500us + show_reset + atu_reset + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + EEPROM_Write + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_pwr + button_delay + Button + Delay_500us + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + get_reverse + ADC_Get_Sample + Delay_22us + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + double2int + SETIOV3224 + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + sharp_cap + Mul_8X8_U + set_cap + VDelay_ms + Mul_32x32_U + get_swr + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + get_reverse + ADC_Get_Sample + Delay_22us + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + Button + Delay_500us + show_reset + atu_reset + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + EEPROM_Write + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_pwr + button_delay + Button + Delay_500us + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + get_reverse + ADC_Get_Sample + Delay_22us + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + double2int + SETIOV3224 + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + set_sw + VDelay_ms + Mul_32x32_U + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + sharp_ind + Mul_8X8_U + set_ind + VDelay_ms + Mul_32x32_U + get_swr + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + get_reverse + ADC_Get_Sample + Delay_22us + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + Button + Delay_500us + show_reset + atu_reset + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + EEPROM_Write + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_pwr + button_delay + Button + Delay_500us + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + get_reverse + ADC_Get_Sample + Delay_22us + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + double2int + SETIOV3224 + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + sharp_cap + Mul_8X8_U + set_cap + VDelay_ms + Mul_32x32_U + get_swr + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + get_reverse + ADC_Get_Sample + Delay_22us + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + Button + Delay_500us + show_reset + atu_reset + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + EEPROM_Write + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_pwr + button_delay + Button + Delay_500us + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + get_reverse + ADC_Get_Sample + Delay_22us + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + double2int + SETIOV3224 + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + EEPROM_Write + Div_16x16_S + Div_16x16_S_L + lcd_pwr + button_delay + Button + Delay_500us + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + get_reverse + ADC_Get_Sample + Delay_22us + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + double2int + SETIOV3224 + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_pwr + button_delay + Button + Delay_500us + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + get_reverse + ADC_Get_Sample + Delay_22us + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + double2int + SETIOV3224 + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + EEPROM_Write + button_proc_test + Button + Delay_500us + set_sw + VDelay_ms + Mul_32x32_U + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_pwr + button_delay + Button + Delay_500us + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + get_reverse + ADC_Get_Sample + Delay_22us + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + double2int + SETIOV3224 + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + byte2double + NRM4032 + RES032 + SETFUN32 + FIXSIGN32 + SETFOV32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Mul_8X8_U + Soft_I2C_Stop + Mul_8X8_U + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + dysp_off + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop diff --git a/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/backup.c b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/backup.c new file mode 100644 index 0000000..99a8091 --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/backup.c @@ -0,0 +1,2 @@ + + diff --git a/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/backup.c.ini b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/backup.c.ini new file mode 100644 index 0000000..226e6ad --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/backup.c.ini @@ -0,0 +1,9 @@ +[Bookmarks] +Count=0 +[Position] +Line=3 +Column=1 +[BreakPoints] +Count=0 +[FoldedLines] +Count=0 diff --git a/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/backup.mcl b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/backup.mcl new file mode 100644 index 0000000000000000000000000000000000000000..48858cb23f9d7da94265ab41df4b8cad3887c482 GIT binary patch literal 931 zcmZXO%TB{E5JfLVm5`9=pP&xuBUx4{Q6mLZIbn^UOBS$zO+JP_KL#v#zaN4ywlgl$ zSf26q8ISMmq(v8i;W*{!b$pz!^2M$>jWSB27%TR6c(6D+JK0>IbJ5w(;U3j>jjpS% z*(YwTi}-hjUjB+*kd>zI6Wr(aUN}&2)qZHntj(c^ETH8Jay^_w54j%Bo|M(3+AGl> zp5?pKtPh`;gdCB-c{<*{%7($yY=L*nBbZ3^0A?V12s0Etf*FY(!;D48FtO+aCJ{|+ z%puO!I?P0D&LK6nr{GUK0Eg6g1d +0x02, 0x01, 0x51, 0x09, 0x06,// ? +0x32, 0x49, 0x79, 0x41, 0x3E,// @ +0x7E, 0x11, 0x11, 0x11, 0x7E,// A +0x7F, 0x49, 0x49, 0x49, 0x36,// B +0x3E, 0x41, 0x41, 0x41, 0x22,// C +0x7F, 0x41, 0x41, 0x22, 0x1C,// D +0x7F, 0x49, 0x49, 0x49, 0x41,// E +0x7F, 0x09, 0x09, 0x01, 0x01,// F +0x3E, 0x41, 0x41, 0x51, 0x32,// G +0x7F, 0x08, 0x08, 0x08, 0x7F,// H +0x00, 0x41, 0x7F, 0x41, 0x00,// I +0x20, 0x40, 0x41, 0x3F, 0x01,// J +0x7F, 0x08, 0x14, 0x22, 0x41,// K +0x7F, 0x40, 0x40, 0x40, 0x40,// L +0x7F, 0x02, 0x04, 0x02, 0x7F,// M +0x7F, 0x04, 0x08, 0x10, 0x7F,// N +0x3E, 0x41, 0x41, 0x41, 0x3E,// O +0x7F, 0x09, 0x09, 0x09, 0x06,// P +0x3E, 0x41, 0x51, 0x21, 0x5E,// Q +0x7F, 0x09, 0x19, 0x29, 0x46,// R +0x46, 0x49, 0x49, 0x49, 0x31,// S +0x01, 0x01, 0x7F, 0x01, 0x01,// T +0x3F, 0x40, 0x40, 0x40, 0x3F,// U +0x1F, 0x20, 0x40, 0x20, 0x1F,// V +0x7F, 0x20, 0x18, 0x20, 0x7F,// W +0x63, 0x14, 0x08, 0x14, 0x63,// X +0x03, 0x04, 0x78, 0x04, 0x03,// Y +0x61, 0x51, 0x49, 0x45, 0x43,// Z +0x00, 0x00, 0x7F, 0x41, 0x41,// [ +0x02, 0x04, 0x08, 0x10, 0x20,// "\" +0x41, 0x41, 0x7F, 0x00, 0x00,// ] +0x04, 0x02, 0x01, 0x02, 0x04,// ^ +0x40, 0x40, 0x40, 0x40, 0x40,// _ +0x00, 0x01, 0x02, 0x04, 0x00,// ` +0x20, 0x54, 0x54, 0x54, 0x78,// a +0x7F, 0x48, 0x44, 0x44, 0x38,// b +0x38, 0x44, 0x44, 0x44, 0x20,// c +0x38, 0x44, 0x44, 0x48, 0x7F,// d +0x38, 0x54, 0x54, 0x54, 0x18,// e +0x08, 0x7E, 0x09, 0x01, 0x02,// f +0x08, 0x14, 0x54, 0x54, 0x3C,// g +0x7F, 0x08, 0x04, 0x04, 0x78,// h +0x00, 0x44, 0x7D, 0x40, 0x00,// i +0x20, 0x40, 0x44, 0x3D, 0x00,// j +0x00, 0x7F, 0x10, 0x28, 0x44,// k +0x00, 0x41, 0x7F, 0x40, 0x00,// l +0x7C, 0x04, 0x18, 0x04, 0x78,// m +0x7C, 0x08, 0x04, 0x04, 0x78,// n +0x38, 0x44, 0x44, 0x44, 0x38,// o +0x7C, 0x14, 0x14, 0x14, 0x08,// p +0x08, 0x14, 0x14, 0x18, 0x7C,// q +0x7C, 0x08, 0x04, 0x04, 0x08,// r +0x48, 0x54, 0x54, 0x54, 0x20,// s +0x04, 0x3F, 0x44, 0x40, 0x20,// t +0x3C, 0x40, 0x40, 0x20, 0x7C,// u +0x1C, 0x20, 0x40, 0x20, 0x1C,// v +0x3C, 0x40, 0x30, 0x40, 0x3C,// w +0x44, 0x28, 0x10, 0x28, 0x44,// x +0x0C, 0x50, 0x50, 0x50, 0x3C,// y +0x44, 0x64, 0x54, 0x4C, 0x44,// z +0x00, 0x08, 0x36, 0x41, 0x00,// { +0x00, 0x00, 0x7F, 0x00, 0x00,// | +0x00, 0x41, 0x36, 0x08, 0x00,// } +0x08, 0x08, 0x2A, 0x1C, 0x08,// -> +0x08, 0x1C, 0x2A, 0x08, 0x08 // <- +}; +// diff --git a/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/font5x8.h.ini b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/font5x8.h.ini new file mode 100644 index 0000000..2879890 --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/font5x8.h.ini @@ -0,0 +1,9 @@ +[Bookmarks] +Count=0 +[Position] +Line=19 +Column=43 +[BreakPoints] +Count=0 +[FoldedLines] +Count=0 diff --git a/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/main.asm b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/main.asm new file mode 100644 index 0000000..86725f4 --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/main.asm @@ -0,0 +1,9447 @@ + +_correction: + +;main.h,42 :: int correction(int input) { +;main.h,44 :: if(input <= 80) return 0; + MOVLW 128 + MOVWF R0 + MOVLW 128 + XORWF FARG_correction_input+1, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__correction486 + MOVF FARG_correction_input+0, 0 + SUBLW 80 +L__correction486: + BTFSS STATUS+0, 0 + GOTO L_correction0 + CLRF R0 + CLRF R1 + GOTO L_end_correction +L_correction0: +;main.h,45 :: if(input <= 171) input += 244; + MOVLW 128 + MOVWF R0 + MOVLW 128 + XORWF FARG_correction_input+1, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__correction487 + MOVF FARG_correction_input+0, 0 + SUBLW 171 +L__correction487: + BTFSS STATUS+0, 0 + GOTO L_correction1 + MOVLW 244 + ADDWF FARG_correction_input+0, 1 + MOVLW 0 + ADDWFC FARG_correction_input+1, 1 + GOTO L_correction2 +L_correction1: +;main.h,46 :: else if(input <= 328) input += 254; + MOVLW 128 + XORLW 1 + MOVWF R0 + MOVLW 128 + XORWF FARG_correction_input+1, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__correction488 + MOVF FARG_correction_input+0, 0 + SUBLW 72 +L__correction488: + BTFSS STATUS+0, 0 + GOTO L_correction3 + MOVLW 254 + ADDWF FARG_correction_input+0, 1 + MOVLW 0 + ADDWFC FARG_correction_input+1, 1 + GOTO L_correction4 +L_correction3: +;main.h,47 :: else if(input <= 582) input += 280; + MOVLW 128 + XORLW 2 + MOVWF R0 + MOVLW 128 + XORWF FARG_correction_input+1, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__correction489 + MOVF FARG_correction_input+0, 0 + SUBLW 70 +L__correction489: + BTFSS STATUS+0, 0 + GOTO L_correction5 + MOVLW 24 + ADDWF FARG_correction_input+0, 1 + MOVLW 1 + ADDWFC FARG_correction_input+1, 1 + GOTO L_correction6 +L_correction5: +;main.h,48 :: else if(input <= 820) input += 297; + MOVLW 128 + XORLW 3 + MOVWF R0 + MOVLW 128 + XORWF FARG_correction_input+1, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__correction490 + MOVF FARG_correction_input+0, 0 + SUBLW 52 +L__correction490: + BTFSS STATUS+0, 0 + GOTO L_correction7 + MOVLW 41 + ADDWF FARG_correction_input+0, 1 + MOVLW 1 + ADDWFC FARG_correction_input+1, 1 + GOTO L_correction8 +L_correction7: +;main.h,49 :: else if(input <= 1100) input += 310; + MOVLW 128 + XORLW 4 + MOVWF R0 + MOVLW 128 + XORWF FARG_correction_input+1, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__correction491 + MOVF FARG_correction_input+0, 0 + SUBLW 76 +L__correction491: + BTFSS STATUS+0, 0 + GOTO L_correction9 + MOVLW 54 + ADDWF FARG_correction_input+0, 1 + MOVLW 1 + ADDWFC FARG_correction_input+1, 1 + GOTO L_correction10 +L_correction9: +;main.h,50 :: else if(input <= 2181) input += 430; + MOVLW 128 + XORLW 8 + MOVWF R0 + MOVLW 128 + XORWF FARG_correction_input+1, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__correction492 + MOVF FARG_correction_input+0, 0 + SUBLW 133 +L__correction492: + BTFSS STATUS+0, 0 + GOTO L_correction11 + MOVLW 174 + ADDWF FARG_correction_input+0, 1 + MOVLW 1 + ADDWFC FARG_correction_input+1, 1 + GOTO L_correction12 +L_correction11: +;main.h,51 :: else if(input <= 3322) input += 484; + MOVLW 128 + XORLW 12 + MOVWF R0 + MOVLW 128 + XORWF FARG_correction_input+1, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__correction493 + MOVF FARG_correction_input+0, 0 + SUBLW 250 +L__correction493: + BTFSS STATUS+0, 0 + GOTO L_correction13 + MOVLW 228 + ADDWF FARG_correction_input+0, 1 + MOVLW 1 + ADDWFC FARG_correction_input+1, 1 + GOTO L_correction14 +L_correction13: +;main.h,52 :: else if(input <= 4623) input += 530; + MOVLW 128 + XORLW 18 + MOVWF R0 + MOVLW 128 + XORWF FARG_correction_input+1, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__correction494 + MOVF FARG_correction_input+0, 0 + SUBLW 15 +L__correction494: + BTFSS STATUS+0, 0 + GOTO L_correction15 + MOVLW 18 + ADDWF FARG_correction_input+0, 1 + MOVLW 2 + ADDWFC FARG_correction_input+1, 1 + GOTO L_correction16 +L_correction15: +;main.h,53 :: else if(input <= 5862) input += 648; + MOVLW 128 + XORLW 22 + MOVWF R0 + MOVLW 128 + XORWF FARG_correction_input+1, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__correction495 + MOVF FARG_correction_input+0, 0 + SUBLW 230 +L__correction495: + BTFSS STATUS+0, 0 + GOTO L_correction17 + MOVLW 136 + ADDWF FARG_correction_input+0, 1 + MOVLW 2 + ADDWFC FARG_correction_input+1, 1 + GOTO L_correction18 +L_correction17: +;main.h,54 :: else if(input <= 7146) input += 743; + MOVLW 128 + XORLW 27 + MOVWF R0 + MOVLW 128 + XORWF FARG_correction_input+1, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__correction496 + MOVF FARG_correction_input+0, 0 + SUBLW 234 +L__correction496: + BTFSS STATUS+0, 0 + GOTO L_correction19 + MOVLW 231 + ADDWF FARG_correction_input+0, 1 + MOVLW 2 + ADDWFC FARG_correction_input+1, 1 + GOTO L_correction20 +L_correction19: +;main.h,55 :: else if(input <= 8502) input += 800; + MOVLW 128 + XORLW 33 + MOVWF R0 + MOVLW 128 + XORWF FARG_correction_input+1, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__correction497 + MOVF FARG_correction_input+0, 0 + SUBLW 54 +L__correction497: + BTFSS STATUS+0, 0 + GOTO L_correction21 + MOVLW 32 + ADDWF FARG_correction_input+0, 1 + MOVLW 3 + ADDWFC FARG_correction_input+1, 1 + GOTO L_correction22 +L_correction21: +;main.h,56 :: else if(input <= 10500) input += 840; + MOVLW 128 + XORLW 41 + MOVWF R0 + MOVLW 128 + XORWF FARG_correction_input+1, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__correction498 + MOVF FARG_correction_input+0, 0 + SUBLW 4 +L__correction498: + BTFSS STATUS+0, 0 + GOTO L_correction23 + MOVLW 72 + ADDWF FARG_correction_input+0, 1 + MOVLW 3 + ADDWFC FARG_correction_input+1, 1 + GOTO L_correction24 +L_correction23: +;main.h,57 :: else input += 860; + MOVLW 92 + ADDWF FARG_correction_input+0, 1 + MOVLW 3 + ADDWFC FARG_correction_input+1, 1 +L_correction24: +L_correction22: +L_correction20: +L_correction18: +L_correction16: +L_correction14: +L_correction12: +L_correction10: +L_correction8: +L_correction6: +L_correction4: +L_correction2: +;main.h,59 :: return input; + MOVF FARG_correction_input+0, 0 + MOVWF R0 + MOVF FARG_correction_input+1, 0 + MOVWF R1 +;main.h,60 :: } +L_end_correction: + RETURN +; end of _correction + +_get_reverse: + +;main.h,64 :: int get_reverse() { +;main.h,66 :: FVRCON = 0b10000001; // ADC 1024 vmV Vref + MOVLW 129 + MOVWF FVRCON+0 +;main.h,67 :: while(FVRCON.B6 == 0); +L_get_reverse25: + BTFSC FVRCON+0, 6 + GOTO L_get_reverse26 + GOTO L_get_reverse25 +L_get_reverse26: +;main.h,68 :: Reverse = ADC_Get_Sample(0); + CLRF FARG_ADC_Get_Sample_channel+0 + CALL _ADC_Get_Sample+0 + MOVF R0, 0 + MOVWF get_reverse_Reverse_L0+0 + MOVF R1, 0 + MOVWF get_reverse_Reverse_L0+1 +;main.h,69 :: if(Reverse <= 1000) return Reverse; + MOVLW 128 + XORLW 3 + MOVWF R2 + MOVLW 128 + XORWF R1, 0 + SUBWF R2, 0 + BTFSS STATUS+0, 2 + GOTO L__get_reverse500 + MOVF R0, 0 + SUBLW 232 +L__get_reverse500: + BTFSS STATUS+0, 0 + GOTO L_get_reverse27 + MOVF get_reverse_Reverse_L0+0, 0 + MOVWF R0 + MOVF get_reverse_Reverse_L0+1, 0 + MOVWF R1 + GOTO L_end_get_reverse +L_get_reverse27: +;main.h,70 :: FVRCON = 0b10000010; // ADC 2048 vmV Vref + MOVLW 130 + MOVWF FVRCON+0 +;main.h,71 :: while(FVRCON.B6 == 0); +L_get_reverse28: + BTFSC FVRCON+0, 6 + GOTO L_get_reverse29 + GOTO L_get_reverse28 +L_get_reverse29: +;main.h,72 :: Reverse = ADC_Get_Sample(0); + CLRF FARG_ADC_Get_Sample_channel+0 + CALL _ADC_Get_Sample+0 + MOVF R0, 0 + MOVWF get_reverse_Reverse_L0+0 + MOVF R1, 0 + MOVWF get_reverse_Reverse_L0+1 +;main.h,73 :: if(Reverse <= 1000) return Reverse * 2; + MOVLW 128 + XORLW 3 + MOVWF R2 + MOVLW 128 + XORWF R1, 0 + SUBWF R2, 0 + BTFSS STATUS+0, 2 + GOTO L__get_reverse501 + MOVF R0, 0 + SUBLW 232 +L__get_reverse501: + BTFSS STATUS+0, 0 + GOTO L_get_reverse30 + MOVF get_reverse_Reverse_L0+0, 0 + MOVWF R0 + MOVF get_reverse_Reverse_L0+1, 0 + MOVWF R1 + LSLF R0, 1 + RLF R1, 1 + GOTO L_end_get_reverse +L_get_reverse30: +;main.h,74 :: FVRCON = 0b10000011; // ADC 4096 vmV Vref + MOVLW 131 + MOVWF FVRCON+0 +;main.h,75 :: while(FVRCON.B6 == 0); +L_get_reverse31: + BTFSC FVRCON+0, 6 + GOTO L_get_reverse32 + GOTO L_get_reverse31 +L_get_reverse32: +;main.h,76 :: Reverse = ADC_Get_Sample(0); + CLRF FARG_ADC_Get_Sample_channel+0 + CALL _ADC_Get_Sample+0 + MOVF R0, 0 + MOVWF get_reverse_Reverse_L0+0 + MOVF R1, 0 + MOVWF get_reverse_Reverse_L0+1 +;main.h,77 :: return Reverse * 4; + MOVF R0, 0 + MOVWF R2 + MOVF R1, 0 + MOVWF R3 + LSLF R2, 1 + RLF R3, 1 + LSLF R2, 1 + RLF R3, 1 + MOVF R2, 0 + MOVWF R0 + MOVF R3, 0 + MOVWF R1 +;main.h,78 :: } +L_end_get_reverse: + RETURN +; end of _get_reverse + +_get_forward: + +;main.h,81 :: int get_forward() { +;main.h,83 :: FVRCON = 0b10000001; // ADC 1024 vmV Vref + MOVLW 129 + MOVWF FVRCON+0 +;main.h,84 :: while(FVRCON.B6 == 0); +L_get_forward33: + BTFSC FVRCON+0, 6 + GOTO L_get_forward34 + GOTO L_get_forward33 +L_get_forward34: +;main.h,85 :: Forward = ADC_Get_Sample(1); + MOVLW 1 + MOVWF FARG_ADC_Get_Sample_channel+0 + CALL _ADC_Get_Sample+0 + MOVF R0, 0 + MOVWF get_forward_Forward_L0+0 + MOVF R1, 0 + MOVWF get_forward_Forward_L0+1 +;main.h,86 :: if(Forward <= 1000) return Forward; + MOVLW 128 + XORLW 3 + MOVWF R2 + MOVLW 128 + XORWF R1, 0 + SUBWF R2, 0 + BTFSS STATUS+0, 2 + GOTO L__get_forward503 + MOVF R0, 0 + SUBLW 232 +L__get_forward503: + BTFSS STATUS+0, 0 + GOTO L_get_forward35 + MOVF get_forward_Forward_L0+0, 0 + MOVWF R0 + MOVF get_forward_Forward_L0+1, 0 + MOVWF R1 + GOTO L_end_get_forward +L_get_forward35: +;main.h,87 :: FVRCON = 0b10000010; // ADC 2048 vmV Vref + MOVLW 130 + MOVWF FVRCON+0 +;main.h,88 :: while(FVRCON.B6 == 0); +L_get_forward36: + BTFSC FVRCON+0, 6 + GOTO L_get_forward37 + GOTO L_get_forward36 +L_get_forward37: +;main.h,89 :: Forward = ADC_Get_Sample(1); + MOVLW 1 + MOVWF FARG_ADC_Get_Sample_channel+0 + CALL _ADC_Get_Sample+0 + MOVF R0, 0 + MOVWF get_forward_Forward_L0+0 + MOVF R1, 0 + MOVWF get_forward_Forward_L0+1 +;main.h,90 :: if(Forward <= 1000) return Forward * 2; + MOVLW 128 + XORLW 3 + MOVWF R2 + MOVLW 128 + XORWF R1, 0 + SUBWF R2, 0 + BTFSS STATUS+0, 2 + GOTO L__get_forward504 + MOVF R0, 0 + SUBLW 232 +L__get_forward504: + BTFSS STATUS+0, 0 + GOTO L_get_forward38 + MOVF get_forward_Forward_L0+0, 0 + MOVWF R0 + MOVF get_forward_Forward_L0+1, 0 + MOVWF R1 + LSLF R0, 1 + RLF R1, 1 + GOTO L_end_get_forward +L_get_forward38: +;main.h,91 :: FVRCON = 0b10000011; // ADC 4096 vmV Vref + MOVLW 131 + MOVWF FVRCON+0 +;main.h,92 :: while(FVRCON.B6 == 0); +L_get_forward39: + BTFSC FVRCON+0, 6 + GOTO L_get_forward40 + GOTO L_get_forward39 +L_get_forward40: +;main.h,93 :: Forward = ADC_Get_Sample(1); + MOVLW 1 + MOVWF FARG_ADC_Get_Sample_channel+0 + CALL _ADC_Get_Sample+0 + MOVF R0, 0 + MOVWF get_forward_Forward_L0+0 + MOVF R1, 0 + MOVWF get_forward_Forward_L0+1 +;main.h,94 :: if(Forward == 1023) Overload = 1; + MOVF R1, 0 + XORLW 3 + BTFSS STATUS+0, 2 + GOTO L__get_forward505 + MOVLW 255 + XORWF R0, 0 +L__get_forward505: + BTFSS STATUS+0, 2 + GOTO L_get_forward41 + MOVLW 1 + MOVWF main_Overload+0 + GOTO L_get_forward42 +L_get_forward41: +;main.h,95 :: else Overload = 0; + CLRF main_Overload+0 +L_get_forward42: +;main.h,96 :: return Forward * 4; + MOVF get_forward_Forward_L0+0, 0 + MOVWF R0 + MOVF get_forward_Forward_L0+1, 0 + MOVWF R1 + LSLF R0, 1 + RLF R1, 1 + LSLF R0, 1 + RLF R1, 1 +;main.h,97 :: } +L_end_get_forward: + RETURN +; end of _get_forward + +_get_pwr: + +;main.h,99 :: void get_pwr() { +;main.h,102 :: asm CLRWDT; + CLRWDT +;main.h,104 :: Forward = get_forward(); + CALL _get_forward+0 + MOVF R0, 0 + MOVWF get_pwr_Forward_L0+0 + MOVF R1, 0 + MOVWF get_pwr_Forward_L0+1 + MOVLW 0 + BTFSC get_pwr_Forward_L0+1, 7 + MOVLW 255 + MOVWF get_pwr_Forward_L0+2 + MOVWF get_pwr_Forward_L0+3 +;main.h,105 :: Reverse = get_reverse(); + CALL _get_reverse+0 + MOVF R0, 0 + MOVWF get_pwr_Reverse_L0+0 + MOVF R1, 0 + MOVWF get_pwr_Reverse_L0+1 + MOVLW 0 + BTFSC get_pwr_Reverse_L0+1, 7 + MOVLW 255 + MOVWF get_pwr_Reverse_L0+2 + MOVWF get_pwr_Reverse_L0+3 +;main.h,106 :: if(D_correction==1) p = correction(Forward * 3); + MOVF main_D_correction+0, 0 + XORLW 1 + BTFSS STATUS+0, 2 + GOTO L_get_pwr43 + MOVF get_pwr_Forward_L0+0, 0 + MOVWF R0 + MOVF get_pwr_Forward_L0+1, 0 + MOVWF R1 + MOVLW 3 + MOVWF R4 + MOVLW 0 + MOVWF R5 + CALL _Mul_16X16_U+0 + MOVF R0, 0 + MOVWF FARG_correction_input+0 + MOVF R1, 0 + MOVWF FARG_correction_input+1 + CALL _correction+0 + CALL _int2double+0 + MOVF R0, 0 + MOVWF get_pwr_p_L0+0 + MOVF R1, 0 + MOVWF get_pwr_p_L0+1 + MOVF R2, 0 + MOVWF get_pwr_p_L0+2 + MOVF R3, 0 + MOVWF get_pwr_p_L0+3 + GOTO L_get_pwr44 +L_get_pwr43: +;main.h,107 :: else p = Forward * 3; + MOVF get_pwr_Forward_L0+0, 0 + MOVWF R0 + MOVF get_pwr_Forward_L0+1, 0 + MOVWF R1 + MOVF get_pwr_Forward_L0+2, 0 + MOVWF R2 + MOVF get_pwr_Forward_L0+3, 0 + MOVWF R3 + MOVLW 3 + MOVWF R4 + CLRF R5 + CLRF R6 + CLRF R7 + CALL _Mul_32x32_U+0 + CALL _longint2double+0 + MOVF R0, 0 + MOVWF get_pwr_p_L0+0 + MOVF R1, 0 + MOVWF get_pwr_p_L0+1 + MOVF R2, 0 + MOVWF get_pwr_p_L0+2 + MOVF R3, 0 + MOVWF get_pwr_p_L0+3 +L_get_pwr44: +;main.h,109 :: if(Reverse >= Forward) + MOVLW 128 + XORWF get_pwr_Reverse_L0+3, 0 + MOVWF R0 + MOVLW 128 + XORWF get_pwr_Forward_L0+3, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__get_pwr507 + MOVF get_pwr_Forward_L0+2, 0 + SUBWF get_pwr_Reverse_L0+2, 0 + BTFSS STATUS+0, 2 + GOTO L__get_pwr507 + MOVF get_pwr_Forward_L0+1, 0 + SUBWF get_pwr_Reverse_L0+1, 0 + BTFSS STATUS+0, 2 + GOTO L__get_pwr507 + MOVF get_pwr_Forward_L0+0, 0 + SUBWF get_pwr_Reverse_L0+0, 0 +L__get_pwr507: + BTFSS STATUS+0, 0 + GOTO L_get_pwr45 +;main.h,110 :: Forward = 999; + MOVLW 231 + MOVWF get_pwr_Forward_L0+0 + MOVLW 3 + MOVWF get_pwr_Forward_L0+1 + CLRF get_pwr_Forward_L0+2 + CLRF get_pwr_Forward_L0+3 + GOTO L_get_pwr46 +L_get_pwr45: +;main.h,112 :: Forward = ((Forward + Reverse) * 100) / (Forward - Reverse); + MOVF get_pwr_Reverse_L0+0, 0 + ADDWF get_pwr_Forward_L0+0, 0 + MOVWF R0 + MOVF get_pwr_Reverse_L0+1, 0 + ADDWFC get_pwr_Forward_L0+1, 0 + MOVWF R1 + MOVF get_pwr_Reverse_L0+2, 0 + ADDWFC get_pwr_Forward_L0+2, 0 + MOVWF R2 + MOVF get_pwr_Reverse_L0+3, 0 + ADDWFC get_pwr_Forward_L0+3, 0 + MOVWF R3 + MOVLW 100 + MOVWF R4 + CLRF R5 + CLRF R6 + CLRF R7 + CALL _Mul_32x32_U+0 + MOVF get_pwr_Forward_L0+0, 0 + MOVWF R4 + MOVF get_pwr_Forward_L0+1, 0 + MOVWF R5 + MOVF get_pwr_Forward_L0+2, 0 + MOVWF R6 + MOVF get_pwr_Forward_L0+3, 0 + MOVWF R7 + MOVF get_pwr_Reverse_L0+0, 0 + SUBWF R4, 1 + MOVF get_pwr_Reverse_L0+1, 0 + SUBWFB R5, 1 + MOVF get_pwr_Reverse_L0+2, 0 + SUBWFB R6, 1 + MOVF get_pwr_Reverse_L0+3, 0 + SUBWFB R7, 1 + CALL _Div_32x32_S+0 + MOVF R0, 0 + MOVWF get_pwr_Forward_L0+0 + MOVF R1, 0 + MOVWF get_pwr_Forward_L0+1 + MOVF R2, 0 + MOVWF get_pwr_Forward_L0+2 + MOVF R3, 0 + MOVWF get_pwr_Forward_L0+3 +;main.h,113 :: if(Forward>999) Forward = 999; + MOVLW 128 + MOVWF R4 + MOVLW 128 + XORWF R3, 0 + SUBWF R4, 0 + BTFSS STATUS+0, 2 + GOTO L__get_pwr508 + MOVF R2, 0 + SUBLW 0 + BTFSS STATUS+0, 2 + GOTO L__get_pwr508 + MOVF R1, 0 + SUBLW 3 + BTFSS STATUS+0, 2 + GOTO L__get_pwr508 + MOVF R0, 0 + SUBLW 231 +L__get_pwr508: + BTFSC STATUS+0, 0 + GOTO L_get_pwr47 + MOVLW 231 + MOVWF get_pwr_Forward_L0+0 + MOVLW 3 + MOVWF get_pwr_Forward_L0+1 + CLRF get_pwr_Forward_L0+2 + CLRF get_pwr_Forward_L0+3 +L_get_pwr47: +;main.h,114 :: } +L_get_pwr46: +;main.h,116 :: p = p * K_Mult / 1000.0; // mV to Volts on Input + MOVF main_K_Mult+0, 0 + MOVWF R0 + CALL _byte2double+0 + MOVF get_pwr_p_L0+0, 0 + MOVWF R4 + MOVF get_pwr_p_L0+1, 0 + MOVWF R5 + MOVF get_pwr_p_L0+2, 0 + MOVWF R6 + MOVF get_pwr_p_L0+3, 0 + MOVWF R7 + CALL _Mul_32x32_FP+0 + MOVLW 0 + MOVWF R4 + MOVLW 0 + MOVWF R5 + MOVLW 122 + MOVWF R6 + MOVLW 136 + MOVWF R7 + CALL _Div_32x32_FP+0 + MOVF R0, 0 + MOVWF get_pwr_p_L0+0 + MOVF R1, 0 + MOVWF get_pwr_p_L0+1 + MOVF R2, 0 + MOVWF get_pwr_p_L0+2 + MOVF R3, 0 + MOVWF get_pwr_p_L0+3 +;main.h,117 :: p = p / 1.414; + MOVLW 244 + MOVWF R4 + MOVLW 253 + MOVWF R5 + MOVLW 52 + MOVWF R6 + MOVLW 127 + MOVWF R7 + CALL _Div_32x32_FP+0 + MOVF R0, 0 + MOVWF get_pwr_p_L0+0 + MOVF R1, 0 + MOVWF get_pwr_p_L0+1 + MOVF R2, 0 + MOVWF get_pwr_p_L0+2 + MOVF R3, 0 + MOVWF get_pwr_p_L0+3 +;main.h,118 :: if(P_High==1) p = p * p / 50; // 0 - 1500 ( 1500 Watts) + MOVF main_P_High+0, 0 + XORLW 1 + BTFSS STATUS+0, 2 + GOTO L_get_pwr48 + MOVF get_pwr_p_L0+0, 0 + MOVWF R0 + MOVF get_pwr_p_L0+1, 0 + MOVWF R1 + MOVF get_pwr_p_L0+2, 0 + MOVWF R2 + MOVF get_pwr_p_L0+3, 0 + MOVWF R3 + MOVF get_pwr_p_L0+0, 0 + MOVWF R4 + MOVF get_pwr_p_L0+1, 0 + MOVWF R5 + MOVF get_pwr_p_L0+2, 0 + MOVWF R6 + MOVF get_pwr_p_L0+3, 0 + MOVWF R7 + CALL _Mul_32x32_FP+0 + MOVLW 0 + MOVWF R4 + MOVLW 0 + MOVWF R5 + MOVLW 72 + MOVWF R6 + MOVLW 132 + MOVWF R7 + CALL _Div_32x32_FP+0 + MOVF R0, 0 + MOVWF get_pwr_p_L0+0 + MOVF R1, 0 + MOVWF get_pwr_p_L0+1 + MOVF R2, 0 + MOVWF get_pwr_p_L0+2 + MOVF R3, 0 + MOVWF get_pwr_p_L0+3 + GOTO L_get_pwr49 +L_get_pwr48: +;main.h,119 :: else p = p * p / 5; // 0 - 1510 (151.0 Watts) + MOVF get_pwr_p_L0+0, 0 + MOVWF R0 + MOVF get_pwr_p_L0+1, 0 + MOVWF R1 + MOVF get_pwr_p_L0+2, 0 + MOVWF R2 + MOVF get_pwr_p_L0+3, 0 + MOVWF R3 + MOVF get_pwr_p_L0+0, 0 + MOVWF R4 + MOVF get_pwr_p_L0+1, 0 + MOVWF R5 + MOVF get_pwr_p_L0+2, 0 + MOVWF R6 + MOVF get_pwr_p_L0+3, 0 + MOVWF R7 + CALL _Mul_32x32_FP+0 + MOVLW 0 + MOVWF R4 + MOVLW 0 + MOVWF R5 + MOVLW 32 + MOVWF R6 + MOVLW 129 + MOVWF R7 + CALL _Div_32x32_FP+0 + MOVF R0, 0 + MOVWF get_pwr_p_L0+0 + MOVF R1, 0 + MOVWF get_pwr_p_L0+1 + MOVF R2, 0 + MOVWF get_pwr_p_L0+2 + MOVF R3, 0 + MOVWF get_pwr_p_L0+3 +L_get_pwr49: +;main.h,120 :: p = p + 0.5; // rounding + MOVF get_pwr_p_L0+0, 0 + MOVWF R0 + MOVF get_pwr_p_L0+1, 0 + MOVWF R1 + MOVF get_pwr_p_L0+2, 0 + MOVWF R2 + MOVF get_pwr_p_L0+3, 0 + MOVWF R3 + MOVLW 0 + MOVWF R4 + MOVLW 0 + MOVWF R5 + MOVLW 0 + MOVWF R6 + MOVLW 126 + MOVWF R7 + CALL _Add_32x32_FP+0 + MOVF R0, 0 + MOVWF get_pwr_p_L0+0 + MOVF R1, 0 + MOVWF get_pwr_p_L0+1 + MOVF R2, 0 + MOVWF get_pwr_p_L0+2 + MOVF R3, 0 + MOVWF get_pwr_p_L0+3 +;main.h,122 :: PWR = p; + CALL _double2int+0 + MOVF R0, 0 + MOVWF _PWR+0 + MOVF R1, 0 + MOVWF _PWR+1 +;main.h,123 :: if(PWR<10) SWR = 1; + MOVLW 128 + XORWF R1, 0 + MOVWF R2 + MOVLW 128 + SUBWF R2, 0 + BTFSS STATUS+0, 2 + GOTO L__get_pwr509 + MOVLW 10 + SUBWF R0, 0 +L__get_pwr509: + BTFSC STATUS+0, 0 + GOTO L_get_pwr50 + MOVLW 1 + MOVWF _SWR+0 + MOVLW 0 + MOVWF _SWR+1 + GOTO L_get_pwr51 +L_get_pwr50: +;main.h,124 :: else if(Forward<100) SWR = 999; + MOVLW 128 + XORWF get_pwr_Forward_L0+3, 0 + MOVWF R0 + MOVLW 128 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__get_pwr510 + MOVLW 0 + SUBWF get_pwr_Forward_L0+2, 0 + BTFSS STATUS+0, 2 + GOTO L__get_pwr510 + MOVLW 0 + SUBWF get_pwr_Forward_L0+1, 0 + BTFSS STATUS+0, 2 + GOTO L__get_pwr510 + MOVLW 100 + SUBWF get_pwr_Forward_L0+0, 0 +L__get_pwr510: + BTFSC STATUS+0, 0 + GOTO L_get_pwr52 + MOVLW 231 + MOVWF _SWR+0 + MOVLW 3 + MOVWF _SWR+1 + GOTO L_get_pwr53 +L_get_pwr52: +;main.h,125 :: else SWR = Forward; + MOVF get_pwr_Forward_L0+0, 0 + MOVWF _SWR+0 + MOVF get_pwr_Forward_L0+1, 0 + MOVWF _SWR+1 +L_get_pwr53: +L_get_pwr51: +;main.h,126 :: return; +;main.h,127 :: } +L_end_get_pwr: + RETURN +; end of _get_pwr + +_get_swr: + +;main.h,129 :: void get_swr() { +;main.h,130 :: get_pwr(); + CALL _get_pwr+0 +;main.h,131 :: if(p_cnt!=100) { + MOVF _p_cnt+0, 0 + XORLW 100 + BTFSC STATUS+0, 2 + GOTO L_get_swr54 +;main.h,132 :: p_cnt += 1; + INCF _p_cnt+0, 1 +;main.h,133 :: if(PWR>P_max) P_max = PWR; + MOVLW 128 + XORWF _P_max+1, 0 + MOVWF R0 + MOVLW 128 + XORWF _PWR+1, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__get_swr512 + MOVF _PWR+0, 0 + SUBWF _P_max+0, 0 +L__get_swr512: + BTFSC STATUS+0, 0 + GOTO L_get_swr55 + MOVF _PWR+0, 0 + MOVWF _P_max+0 + MOVF _PWR+1, 0 + MOVWF _P_max+1 +L_get_swr55: +;main.h,134 :: } + GOTO L_get_swr56 +L_get_swr54: +;main.h,136 :: p_cnt = 0; + CLRF _p_cnt+0 +;main.h,137 :: show_pwr(P_max, SWR); + MOVF _P_max+0, 0 + MOVWF FARG_show_pwr+0 + MOVF _P_max+1, 0 + MOVWF FARG_show_pwr+1 + MOVF _SWR+0, 0 + MOVWF FARG_show_pwr+0 + MOVF _SWR+1, 0 + MOVWF FARG_show_pwr+1 + CALL _show_pwr+0 +;main.h,138 :: P_max = 0; + CLRF _P_max+0 + CLRF _P_max+1 +;main.h,139 :: } +L_get_swr56: +;main.h,140 :: while(PWR max_for_start & max_for_start>0)) { // waiting for good power +L_get_swr57: + MOVLW 128 + XORWF _PWR+1, 0 + MOVWF R2 + MOVLW 128 + XORWF main_min_for_start+1, 0 + SUBWF R2, 0 + BTFSS STATUS+0, 2 + GOTO L__get_swr513 + MOVF main_min_for_start+0, 0 + SUBWF _PWR+0, 0 +L__get_swr513: + MOVLW 1 + BTFSC STATUS+0, 0 + MOVLW 0 + MOVWF R2 + MOVLW 128 + XORWF main_max_for_start+1, 0 + MOVWF R1 + MOVLW 128 + XORWF _PWR+1, 0 + SUBWF R1, 0 + BTFSS STATUS+0, 2 + GOTO L__get_swr514 + MOVF _PWR+0, 0 + SUBWF main_max_for_start+0, 0 +L__get_swr514: + MOVLW 1 + BTFSC STATUS+0, 0 + MOVLW 0 + MOVWF R1 + MOVLW 128 + MOVWF R0 + MOVLW 128 + XORWF main_max_for_start+1, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__get_swr515 + MOVF main_max_for_start+0, 0 + SUBLW 0 +L__get_swr515: + MOVLW 1 + BTFSC STATUS+0, 0 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + ANDWF R0, 1 + MOVF R2, 0 + IORWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_get_swr58 +;main.h,141 :: asm CLRWDT; + CLRWDT +;main.h,142 :: get_pwr(); + CALL _get_pwr+0 +;main.h,143 :: if(p_cnt!=100) { + MOVF _p_cnt+0, 0 + XORLW 100 + BTFSC STATUS+0, 2 + GOTO L_get_swr59 +;main.h,144 :: p_cnt += 1; + INCF _p_cnt+0, 1 +;main.h,145 :: if(PWR>P_max) P_max = PWR; + MOVLW 128 + XORWF _P_max+1, 0 + MOVWF R0 + MOVLW 128 + XORWF _PWR+1, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__get_swr516 + MOVF _PWR+0, 0 + SUBWF _P_max+0, 0 +L__get_swr516: + BTFSC STATUS+0, 0 + GOTO L_get_swr60 + MOVF _PWR+0, 0 + MOVWF _P_max+0 + MOVF _PWR+1, 0 + MOVWF _P_max+1 +L_get_swr60: +;main.h,146 :: } + GOTO L_get_swr61 +L_get_swr59: +;main.h,148 :: p_cnt = 0; + CLRF _p_cnt+0 +;main.h,149 :: show_pwr(P_max, SWR); + MOVF _P_max+0, 0 + MOVWF FARG_show_pwr+0 + MOVF _P_max+1, 0 + MOVWF FARG_show_pwr+1 + MOVF _SWR+0, 0 + MOVWF FARG_show_pwr+0 + MOVF _SWR+1, 0 + MOVWF FARG_show_pwr+1 + CALL _show_pwr+0 +;main.h,150 :: P_max = 0; + CLRF _P_max+0 + CLRF _P_max+1 +;main.h,151 :: } +L_get_swr61: +;main.h,153 :: if(Button(&PORTB, 0, 5, 1)) rready = 1; + MOVLW PORTB+0 + MOVWF FARG_Button_port+0 + MOVLW hi_addr(PORTB+0) + MOVWF FARG_Button_port+1 + CLRF FARG_Button_pin+0 + MOVLW 5 + MOVWF FARG_Button_time_ms+0 + MOVLW 1 + MOVWF FARG_Button_active_state+0 + CALL _Button+0 + MOVF R0, 0 + BTFSC STATUS+0, 2 + GOTO L_get_swr62 + MOVLW 1 + MOVWF _rready+0 +L_get_swr62: +;main.h,154 :: if(rready==1 & Button(&PORTB, 0, 5, 0)) { // press button Tune + MOVF _rready+0, 0 + XORLW 1 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF FLOC__get_swr+0 + MOVLW PORTB+0 + MOVWF FARG_Button_port+0 + MOVLW hi_addr(PORTB+0) + MOVWF FARG_Button_port+1 + CLRF FARG_Button_pin+0 + MOVLW 5 + MOVWF FARG_Button_time_ms+0 + CLRF FARG_Button_active_state+0 + CALL _Button+0 + MOVF FLOC__get_swr+0, 0 + ANDWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_get_swr63 +;main.h,155 :: show_reset(); + CALL _show_reset+0 +;main.h,156 :: SWR = 0; + CLRF _SWR+0 + CLRF _SWR+1 +;main.h,157 :: return; + GOTO L_end_get_swr +;main.h,158 :: } +L_get_swr63: +;main.h,159 :: } // good power + GOTO L_get_swr57 +L_get_swr58: +;main.h,160 :: return; +;main.h,161 :: } +L_end_get_swr: + RETURN +; end of _get_swr + +_set_ind: + +;main.h,163 :: void set_ind(char Ind) { // 0 - 31 +;main.h,164 :: if(L_invert == 0) { + MOVF main_L_invert+0, 0 + XORLW 0 + BTFSS STATUS+0, 2 + GOTO L_set_ind64 +;main.h,165 :: Ind_005 = Ind.B0; + BTFSC FARG_set_ind_Ind+0, 0 + GOTO L__set_ind518 + BCF LATB3_bit+0, BitPos(LATB3_bit+0) + GOTO L__set_ind519 +L__set_ind518: + BSF LATB3_bit+0, BitPos(LATB3_bit+0) +L__set_ind519: +;main.h,166 :: Ind_011 = Ind.B1; + BTFSC FARG_set_ind_Ind+0, 1 + GOTO L__set_ind520 + BCF LATA2_bit+0, BitPos(LATA2_bit+0) + GOTO L__set_ind521 +L__set_ind520: + BSF LATA2_bit+0, BitPos(LATA2_bit+0) +L__set_ind521: +;main.h,167 :: Ind_022 = Ind.B2; + BTFSC FARG_set_ind_Ind+0, 2 + GOTO L__set_ind522 + BCF LATB4_bit+0, BitPos(LATB4_bit+0) + GOTO L__set_ind523 +L__set_ind522: + BSF LATB4_bit+0, BitPos(LATB4_bit+0) +L__set_ind523: +;main.h,168 :: Ind_045 = Ind.B3; + BTFSC FARG_set_ind_Ind+0, 3 + GOTO L__set_ind524 + BCF LATA3_bit+0, BitPos(LATA3_bit+0) + GOTO L__set_ind525 +L__set_ind524: + BSF LATA3_bit+0, BitPos(LATA3_bit+0) +L__set_ind525: +;main.h,169 :: Ind_1 = Ind.B4; + BTFSC FARG_set_ind_Ind+0, 4 + GOTO L__set_ind526 + BCF LATB5_bit+0, BitPos(LATB5_bit+0) + GOTO L__set_ind527 +L__set_ind526: + BSF LATB5_bit+0, BitPos(LATB5_bit+0) +L__set_ind527: +;main.h,170 :: Ind_22 = Ind.B5; + BTFSC FARG_set_ind_Ind+0, 5 + GOTO L__set_ind528 + BCF LATA5_bit+0, BitPos(LATA5_bit+0) + GOTO L__set_ind529 +L__set_ind528: + BSF LATA5_bit+0, BitPos(LATA5_bit+0) +L__set_ind529: +;main.h,171 :: Ind_45 = Ind.B6; + BTFSC FARG_set_ind_Ind+0, 6 + GOTO L__set_ind530 + BCF LATA4_bit+0, BitPos(LATA4_bit+0) + GOTO L__set_ind531 +L__set_ind530: + BSF LATA4_bit+0, BitPos(LATA4_bit+0) +L__set_ind531: +;main.h,173 :: } + GOTO L_set_ind65 +L_set_ind64: +;main.h,175 :: Ind_005 = ~Ind.B0; + BTFSC FARG_set_ind_Ind+0, 0 + GOTO L__set_ind532 + BSF LATB3_bit+0, BitPos(LATB3_bit+0) + GOTO L__set_ind533 +L__set_ind532: + BCF LATB3_bit+0, BitPos(LATB3_bit+0) +L__set_ind533: +;main.h,176 :: Ind_011 = ~Ind.B1; + BTFSC FARG_set_ind_Ind+0, 1 + GOTO L__set_ind534 + BSF LATA2_bit+0, BitPos(LATA2_bit+0) + GOTO L__set_ind535 +L__set_ind534: + BCF LATA2_bit+0, BitPos(LATA2_bit+0) +L__set_ind535: +;main.h,177 :: Ind_022 = ~Ind.B2; + BTFSC FARG_set_ind_Ind+0, 2 + GOTO L__set_ind536 + BSF LATB4_bit+0, BitPos(LATB4_bit+0) + GOTO L__set_ind537 +L__set_ind536: + BCF LATB4_bit+0, BitPos(LATB4_bit+0) +L__set_ind537: +;main.h,178 :: Ind_045 = ~Ind.B3; + BTFSC FARG_set_ind_Ind+0, 3 + GOTO L__set_ind538 + BSF LATA3_bit+0, BitPos(LATA3_bit+0) + GOTO L__set_ind539 +L__set_ind538: + BCF LATA3_bit+0, BitPos(LATA3_bit+0) +L__set_ind539: +;main.h,179 :: Ind_1 = ~Ind.B4; + BTFSC FARG_set_ind_Ind+0, 4 + GOTO L__set_ind540 + BSF LATB5_bit+0, BitPos(LATB5_bit+0) + GOTO L__set_ind541 +L__set_ind540: + BCF LATB5_bit+0, BitPos(LATB5_bit+0) +L__set_ind541: +;main.h,180 :: Ind_22 = ~Ind.B5; + BTFSC FARG_set_ind_Ind+0, 5 + GOTO L__set_ind542 + BSF LATA5_bit+0, BitPos(LATA5_bit+0) + GOTO L__set_ind543 +L__set_ind542: + BCF LATA5_bit+0, BitPos(LATA5_bit+0) +L__set_ind543: +;main.h,181 :: Ind_45 = ~Ind.B6; + BTFSC FARG_set_ind_Ind+0, 6 + GOTO L__set_ind544 + BSF LATA4_bit+0, BitPos(LATA4_bit+0) + GOTO L__set_ind545 +L__set_ind544: + BCF LATA4_bit+0, BitPos(LATA4_bit+0) +L__set_ind545: +;main.h,183 :: } +L_set_ind65: +;main.h,184 :: Vdelay_ms(Rel_Del); + MOVF main_Rel_Del+0, 0 + MOVWF FARG_VDelay_ms_Time_ms+0 + MOVF main_Rel_Del+1, 0 + MOVWF FARG_VDelay_ms_Time_ms+1 + CALL _VDelay_ms+0 +;main.h,185 :: } +L_end_set_ind: + RETURN +; end of _set_ind + +_set_cap: + +;main.h,187 :: void set_cap(char Cap) { // 0 - 31 +;main.h,188 :: Cap_10 = Cap.B0; + BTFSC FARG_set_cap_Cap+0, 0 + GOTO L__set_cap547 + BCF LATC7_bit+0, BitPos(LATC7_bit+0) + GOTO L__set_cap548 +L__set_cap547: + BSF LATC7_bit+0, BitPos(LATC7_bit+0) +L__set_cap548: +;main.h,189 :: Cap_22 = Cap.B1; + BTFSC FARG_set_cap_Cap+0, 1 + GOTO L__set_cap549 + BCF LATC3_bit+0, BitPos(LATC3_bit+0) + GOTO L__set_cap550 +L__set_cap549: + BSF LATC3_bit+0, BitPos(LATC3_bit+0) +L__set_cap550: +;main.h,190 :: Cap_47 = Cap.B2; + BTFSC FARG_set_cap_Cap+0, 2 + GOTO L__set_cap551 + BCF LATC6_bit+0, BitPos(LATC6_bit+0) + GOTO L__set_cap552 +L__set_cap551: + BSF LATC6_bit+0, BitPos(LATC6_bit+0) +L__set_cap552: +;main.h,191 :: Cap_100 = Cap.B3; + BTFSC FARG_set_cap_Cap+0, 3 + GOTO L__set_cap553 + BCF LATC2_bit+0, BitPos(LATC2_bit+0) + GOTO L__set_cap554 +L__set_cap553: + BSF LATC2_bit+0, BitPos(LATC2_bit+0) +L__set_cap554: +;main.h,192 :: Cap_220 = Cap.B4; + BTFSC FARG_set_cap_Cap+0, 4 + GOTO L__set_cap555 + BCF LATC5_bit+0, BitPos(LATC5_bit+0) + GOTO L__set_cap556 +L__set_cap555: + BSF LATC5_bit+0, BitPos(LATC5_bit+0) +L__set_cap556: +;main.h,193 :: Cap_470 = Cap.B5; + BTFSC FARG_set_cap_Cap+0, 5 + GOTO L__set_cap557 + BCF LATC1_bit+0, BitPos(LATC1_bit+0) + GOTO L__set_cap558 +L__set_cap557: + BSF LATC1_bit+0, BitPos(LATC1_bit+0) +L__set_cap558: +;main.h,194 :: Cap_1000 = Cap.B6; + BTFSC FARG_set_cap_Cap+0, 6 + GOTO L__set_cap559 + BCF LATC4_bit+0, BitPos(LATC4_bit+0) + GOTO L__set_cap560 +L__set_cap559: + BSF LATC4_bit+0, BitPos(LATC4_bit+0) +L__set_cap560: +;main.h,196 :: Vdelay_ms(Rel_Del); + MOVF main_Rel_Del+0, 0 + MOVWF FARG_VDelay_ms_Time_ms+0 + MOVF main_Rel_Del+1, 0 + MOVWF FARG_VDelay_ms_Time_ms+1 + CALL _VDelay_ms+0 +;main.h,197 :: } +L_end_set_cap: + RETURN +; end of _set_cap + +_set_sw: + +;main.h,199 :: void set_sw(char SW) { // 0 - IN, 1 - OUT +;main.h,200 :: Cap_sw = SW; + BTFSC FARG_set_sw_SW+0, 0 + GOTO L__set_sw562 + BCF LATC0_bit+0, BitPos(LATC0_bit+0) + GOTO L__set_sw563 +L__set_sw562: + BSF LATC0_bit+0, BitPos(LATC0_bit+0) +L__set_sw563: +;main.h,201 :: Vdelay_ms(Rel_Del); + MOVF main_Rel_Del+0, 0 + MOVWF FARG_VDelay_ms_Time_ms+0 + MOVF main_Rel_Del+1, 0 + MOVWF FARG_VDelay_ms_Time_ms+1 + CALL _VDelay_ms+0 +;main.h,202 :: } +L_end_set_sw: + RETURN +; end of _set_sw + +_atu_reset: + +;main.h,204 :: void atu_reset() { +;main.h,205 :: ind = 0; + CLRF main_ind+0 +;main.h,206 :: cap = 0; + CLRF main_cap+0 +;main.h,207 :: set_ind(ind); + CLRF FARG_set_ind_Ind+0 + CALL _set_ind+0 +;main.h,208 :: set_cap(cap); + MOVF main_cap+0, 0 + MOVWF FARG_set_cap_Cap+0 + CALL _set_cap+0 +;main.h,209 :: Vdelay_ms(Rel_Del); + MOVF main_Rel_Del+0, 0 + MOVWF FARG_VDelay_ms_Time_ms+0 + MOVF main_Rel_Del+1, 0 + MOVWF FARG_VDelay_ms_Time_ms+1 + CALL _VDelay_ms+0 +;main.h,210 :: } +L_end_atu_reset: + RETURN +; end of _atu_reset + +_coarse_cap: + +;main.h,213 :: void coarse_cap() { +;main.h,214 :: char step = 3; + MOVLW 3 + MOVWF coarse_cap_step_L0+0 +;main.h,218 :: cap = 0; + CLRF main_cap+0 +;main.h,219 :: set_cap(cap); + CLRF FARG_set_cap_Cap+0 + CALL _set_cap+0 +;main.h,220 :: step_cap = step; + MOVF coarse_cap_step_L0+0, 0 + MOVWF main_step_cap+0 +;main.h,221 :: get_swr(); if(SWR==0) return; + CALL _get_swr+0 + MOVLW 0 + XORWF _SWR+1, 0 + BTFSS STATUS+0, 2 + GOTO L__coarse_cap566 + MOVLW 0 + XORWF _SWR+0, 0 +L__coarse_cap566: + BTFSS STATUS+0, 2 + GOTO L_coarse_cap66 + GOTO L_end_coarse_cap +L_coarse_cap66: +;main.h,222 :: min_swr = SWR + SWR/20; + MOVLW 20 + MOVWF R4 + MOVLW 0 + MOVWF R5 + MOVF _SWR+0, 0 + MOVWF R0 + MOVF _SWR+1, 0 + MOVWF R1 + CALL _Div_16x16_S+0 + MOVF R0, 0 + ADDWF _SWR+0, 0 + MOVWF coarse_cap_min_swr_L0+0 + MOVF R1, 0 + ADDWFC _SWR+1, 0 + MOVWF coarse_cap_min_swr_L0+1 +;main.h,223 :: for(count=step; count<=31;) { + MOVF coarse_cap_step_L0+0, 0 + MOVWF coarse_cap_count_L0+0 +L_coarse_cap67: + MOVF coarse_cap_count_L0+0, 0 + SUBLW 31 + BTFSS STATUS+0, 0 + GOTO L_coarse_cap68 +;main.h,224 :: set_cap(count*C_mult); + MOVF coarse_cap_count_L0+0, 0 + MOVWF R0 + MOVF main_C_mult+0, 0 + MOVWF R4 + CALL _Mul_8X8_U+0 + MOVF R0, 0 + MOVWF FARG_set_cap_Cap+0 + CALL _set_cap+0 +;main.h,225 :: get_swr(); if(SWR==0) return; + CALL _get_swr+0 + MOVLW 0 + XORWF _SWR+1, 0 + BTFSS STATUS+0, 2 + GOTO L__coarse_cap567 + MOVLW 0 + XORWF _SWR+0, 0 +L__coarse_cap567: + BTFSS STATUS+0, 2 + GOTO L_coarse_cap70 + GOTO L_end_coarse_cap +L_coarse_cap70: +;main.h,226 :: if(SWR < min_swr) { + MOVLW 128 + XORWF _SWR+1, 0 + MOVWF R0 + MOVLW 128 + XORWF coarse_cap_min_swr_L0+1, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__coarse_cap568 + MOVF coarse_cap_min_swr_L0+0, 0 + SUBWF _SWR+0, 0 +L__coarse_cap568: + BTFSC STATUS+0, 0 + GOTO L_coarse_cap71 +;main.h,227 :: min_swr = SWR + SWR/20; + MOVLW 20 + MOVWF R4 + MOVLW 0 + MOVWF R5 + MOVF _SWR+0, 0 + MOVWF R0 + MOVF _SWR+1, 0 + MOVWF R1 + CALL _Div_16x16_S+0 + MOVF R0, 0 + ADDWF _SWR+0, 0 + MOVWF coarse_cap_min_swr_L0+0 + MOVF R1, 0 + ADDWFC _SWR+1, 0 + MOVWF coarse_cap_min_swr_L0+1 +;main.h,228 :: cap = count*C_mult; + MOVF coarse_cap_count_L0+0, 0 + MOVWF R0 + MOVF main_C_mult+0, 0 + MOVWF R4 + CALL _Mul_8X8_U+0 + MOVF R0, 0 + MOVWF main_cap+0 +;main.h,229 :: step_cap = step; + MOVF coarse_cap_step_L0+0, 0 + MOVWF main_step_cap+0 +;main.h,230 :: if(SWR<120) break; + MOVLW 128 + XORWF _SWR+1, 0 + MOVWF R0 + MOVLW 128 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__coarse_cap569 + MOVLW 120 + SUBWF _SWR+0, 0 +L__coarse_cap569: + BTFSC STATUS+0, 0 + GOTO L_coarse_cap72 + GOTO L_coarse_cap68 +L_coarse_cap72: +;main.h,231 :: count +=step; + MOVF coarse_cap_step_L0+0, 0 + ADDWF coarse_cap_count_L0+0, 0 + MOVWF R2 + MOVF R2, 0 + MOVWF coarse_cap_count_L0+0 +;main.h,232 :: if(C_linear==0 & count==9) count = 8; + MOVF main_C_linear+0, 0 + XORLW 0 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF R2, 0 + XORLW 9 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + ANDWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_coarse_cap73 + MOVLW 8 + MOVWF coarse_cap_count_L0+0 + GOTO L_coarse_cap74 +L_coarse_cap73: +;main.h,233 :: else if(C_linear==0 & count==17) {count = 16; step = 4;} + MOVF main_C_linear+0, 0 + XORLW 0 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF coarse_cap_count_L0+0, 0 + XORLW 17 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + ANDWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_coarse_cap75 + MOVLW 16 + MOVWF coarse_cap_count_L0+0 + MOVLW 4 + MOVWF coarse_cap_step_L0+0 +L_coarse_cap75: +L_coarse_cap74: +;main.h,234 :: } + GOTO L_coarse_cap76 +L_coarse_cap71: +;main.h,235 :: else break; + GOTO L_coarse_cap68 +L_coarse_cap76: +;main.h,236 :: } + GOTO L_coarse_cap67 +L_coarse_cap68: +;main.h,237 :: set_cap(cap); + MOVF main_cap+0, 0 + MOVWF FARG_set_cap_Cap+0 + CALL _set_cap+0 +;main.h,238 :: return; +;main.h,239 :: } +L_end_coarse_cap: + RETURN +; end of _coarse_cap + +_coarse_tune: + +;main.h,241 :: void coarse_tune() { +;main.h,242 :: char step = 3; + MOVLW 3 + MOVWF coarse_tune_step_L0+0 +;main.h,247 :: mem_cap = 0; + CLRF coarse_tune_mem_cap_L0+0 +;main.h,248 :: step_ind = step; + MOVF coarse_tune_step_L0+0, 0 + MOVWF main_step_ind+0 +;main.h,249 :: mem_step_cap = 3; + MOVLW 3 + MOVWF coarse_tune_mem_step_cap_L0+0 +;main.h,250 :: min_swr = SWR + SWR/20; + MOVLW 20 + MOVWF R4 + MOVLW 0 + MOVWF R5 + MOVF _SWR+0, 0 + MOVWF R0 + MOVF _SWR+1, 0 + MOVWF R1 + CALL _Div_16x16_S+0 + MOVF R0, 0 + ADDWF _SWR+0, 0 + MOVWF coarse_tune_min_swr_L0+0 + MOVF R1, 0 + ADDWFC _SWR+1, 0 + MOVWF coarse_tune_min_swr_L0+1 +;main.h,251 :: for(count=0; count<=31;) { + CLRF coarse_tune_count_L0+0 +L_coarse_tune77: + MOVF coarse_tune_count_L0+0, 0 + SUBLW 31 + BTFSS STATUS+0, 0 + GOTO L_coarse_tune78 +;main.h,252 :: set_ind(count*L_mult); + MOVF coarse_tune_count_L0+0, 0 + MOVWF R0 + MOVF main_L_mult+0, 0 + MOVWF R4 + CALL _Mul_8X8_U+0 + MOVF R0, 0 + MOVWF FARG_set_ind_Ind+0 + CALL _set_ind+0 +;main.h,253 :: coarse_cap(); + CALL _coarse_cap+0 +;main.h,254 :: get_swr(); if(SWR==0) return; + CALL _get_swr+0 + MOVLW 0 + XORWF _SWR+1, 0 + BTFSS STATUS+0, 2 + GOTO L__coarse_tune571 + MOVLW 0 + XORWF _SWR+0, 0 +L__coarse_tune571: + BTFSS STATUS+0, 2 + GOTO L_coarse_tune80 + GOTO L_end_coarse_tune +L_coarse_tune80: +;main.h,255 :: if(SWR < min_swr) { + MOVLW 128 + XORWF _SWR+1, 0 + MOVWF R0 + MOVLW 128 + XORWF coarse_tune_min_swr_L0+1, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__coarse_tune572 + MOVF coarse_tune_min_swr_L0+0, 0 + SUBWF _SWR+0, 0 +L__coarse_tune572: + BTFSC STATUS+0, 0 + GOTO L_coarse_tune81 +;main.h,256 :: min_swr = SWR + SWR/20; + MOVLW 20 + MOVWF R4 + MOVLW 0 + MOVWF R5 + MOVF _SWR+0, 0 + MOVWF R0 + MOVF _SWR+1, 0 + MOVWF R1 + CALL _Div_16x16_S+0 + MOVF R0, 0 + ADDWF _SWR+0, 0 + MOVWF coarse_tune_min_swr_L0+0 + MOVF R1, 0 + ADDWFC _SWR+1, 0 + MOVWF coarse_tune_min_swr_L0+1 +;main.h,257 :: ind = count*L_mult; + MOVF coarse_tune_count_L0+0, 0 + MOVWF R0 + MOVF main_L_mult+0, 0 + MOVWF R4 + CALL _Mul_8X8_U+0 + MOVF R0, 0 + MOVWF main_ind+0 +;main.h,258 :: mem_cap = cap; + MOVF main_cap+0, 0 + MOVWF coarse_tune_mem_cap_L0+0 +;main.h,259 :: step_ind = step; + MOVF coarse_tune_step_L0+0, 0 + MOVWF main_step_ind+0 +;main.h,260 :: mem_step_cap = step_cap; + MOVF main_step_cap+0, 0 + MOVWF coarse_tune_mem_step_cap_L0+0 +;main.h,261 :: if(SWR<120) break; + MOVLW 128 + XORWF _SWR+1, 0 + MOVWF R0 + MOVLW 128 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__coarse_tune573 + MOVLW 120 + SUBWF _SWR+0, 0 +L__coarse_tune573: + BTFSC STATUS+0, 0 + GOTO L_coarse_tune82 + GOTO L_coarse_tune78 +L_coarse_tune82: +;main.h,262 :: count +=step; + MOVF coarse_tune_step_L0+0, 0 + ADDWF coarse_tune_count_L0+0, 0 + MOVWF R2 + MOVF R2, 0 + MOVWF coarse_tune_count_L0+0 +;main.h,263 :: if(L_linear==0 & count==9) count = 8; + MOVF main_L_linear+0, 0 + XORLW 0 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF R2, 0 + XORLW 9 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + ANDWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_coarse_tune83 + MOVLW 8 + MOVWF coarse_tune_count_L0+0 + GOTO L_coarse_tune84 +L_coarse_tune83: +;main.h,264 :: else if(L_linear==0 & count==17) {count = 16; step = 4;} + MOVF main_L_linear+0, 0 + XORLW 0 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF coarse_tune_count_L0+0, 0 + XORLW 17 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + ANDWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_coarse_tune85 + MOVLW 16 + MOVWF coarse_tune_count_L0+0 + MOVLW 4 + MOVWF coarse_tune_step_L0+0 +L_coarse_tune85: +L_coarse_tune84: +;main.h,265 :: } + GOTO L_coarse_tune86 +L_coarse_tune81: +;main.h,266 :: else break; + GOTO L_coarse_tune78 +L_coarse_tune86: +;main.h,267 :: } + GOTO L_coarse_tune77 +L_coarse_tune78: +;main.h,268 :: cap = mem_cap; + MOVF coarse_tune_mem_cap_L0+0, 0 + MOVWF main_cap+0 +;main.h,269 :: set_ind(ind); + MOVF main_ind+0, 0 + MOVWF FARG_set_ind_Ind+0 + CALL _set_ind+0 +;main.h,270 :: set_cap(cap); + MOVF main_cap+0, 0 + MOVWF FARG_set_cap_Cap+0 + CALL _set_cap+0 +;main.h,271 :: step_cap = mem_step_cap; + MOVF coarse_tune_mem_step_cap_L0+0, 0 + MOVWF main_step_cap+0 +;main.h,272 :: Delay_ms(10); + MOVLW 52 + MOVWF R12 + MOVLW 241 + MOVWF R13 +L_coarse_tune87: + DECFSZ R13, 1 + GOTO L_coarse_tune87 + DECFSZ R12, 1 + GOTO L_coarse_tune87 + NOP + NOP +;main.h,273 :: return; +;main.h,274 :: } +L_end_coarse_tune: + RETURN +; end of _coarse_tune + +_sharp_cap: + +;main.h,276 :: void sharp_cap() { +;main.h,279 :: range = step_cap*C_mult; + MOVF main_step_cap+0, 0 + MOVWF R0 + MOVF main_C_mult+0, 0 + MOVWF R4 + CALL _Mul_8X8_U+0 + MOVF R0, 0 + MOVWF sharp_cap_range_L0+0 +;main.h,281 :: max_range = cap + range; + MOVF R0, 0 + ADDWF main_cap+0, 0 + MOVWF R4 + MOVF R4, 0 + MOVWF sharp_cap_max_range_L0+0 +;main.h,282 :: if(max_range>32*C_mult-1) max_range = 32*C_mult-1; + MOVLW 5 + MOVWF R2 + MOVF main_C_mult+0, 0 + MOVWF R0 + CLRF R1 + MOVF R2, 0 +L__sharp_cap575: + BTFSC STATUS+0, 2 + GOTO L__sharp_cap576 + LSLF R0, 1 + RLF R1, 1 + ADDLW 255 + GOTO L__sharp_cap575 +L__sharp_cap576: + MOVLW 1 + SUBWF R0, 0 + MOVWF R2 + MOVLW 0 + SUBWFB R1, 0 + MOVWF R3 + MOVLW 128 + XORWF R3, 0 + MOVWF R0 + MOVLW 128 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__sharp_cap577 + MOVF R4, 0 + SUBWF R2, 0 +L__sharp_cap577: + BTFSC STATUS+0, 0 + GOTO L_sharp_cap88 + MOVLW 5 + MOVWF R0 + MOVF main_C_mult+0, 0 + MOVWF sharp_cap_max_range_L0+0 + MOVF R0, 0 +L__sharp_cap578: + BTFSC STATUS+0, 2 + GOTO L__sharp_cap579 + LSLF sharp_cap_max_range_L0+0, 1 + ADDLW 255 + GOTO L__sharp_cap578 +L__sharp_cap579: + DECF sharp_cap_max_range_L0+0, 1 +L_sharp_cap88: +;main.h,283 :: if(cap>range) min_range = cap - range; else min_range = 0; + MOVF main_cap+0, 0 + SUBWF sharp_cap_range_L0+0, 0 + BTFSC STATUS+0, 0 + GOTO L_sharp_cap89 + MOVF sharp_cap_range_L0+0, 0 + SUBWF main_cap+0, 0 + MOVWF sharp_cap_min_range_L0+0 + GOTO L_sharp_cap90 +L_sharp_cap89: + CLRF sharp_cap_min_range_L0+0 +L_sharp_cap90: +;main.h,284 :: cap = min_range; + MOVF sharp_cap_min_range_L0+0, 0 + MOVWF main_cap+0 +;main.h,285 :: set_cap(cap); + MOVF sharp_cap_min_range_L0+0, 0 + MOVWF FARG_set_cap_Cap+0 + CALL _set_cap+0 +;main.h,286 :: get_swr(); if(SWR==0) return; + CALL _get_swr+0 + MOVLW 0 + XORWF _SWR+1, 0 + BTFSS STATUS+0, 2 + GOTO L__sharp_cap580 + MOVLW 0 + XORWF _SWR+0, 0 +L__sharp_cap580: + BTFSS STATUS+0, 2 + GOTO L_sharp_cap91 + GOTO L_end_sharp_cap +L_sharp_cap91: +;main.h,287 :: min_SWR = SWR; + MOVF _SWR+0, 0 + MOVWF sharp_cap_min_swr_L0+0 + MOVF _SWR+1, 0 + MOVWF sharp_cap_min_swr_L0+1 +;main.h,288 :: for(count=min_range+C_mult; count<=max_range; count+=C_mult) { + MOVF main_C_mult+0, 0 + ADDWF sharp_cap_min_range_L0+0, 0 + MOVWF sharp_cap_count_L0+0 +L_sharp_cap92: + MOVF sharp_cap_count_L0+0, 0 + SUBWF sharp_cap_max_range_L0+0, 0 + BTFSS STATUS+0, 0 + GOTO L_sharp_cap93 +;main.h,289 :: set_cap(count); + MOVF sharp_cap_count_L0+0, 0 + MOVWF FARG_set_cap_Cap+0 + CALL _set_cap+0 +;main.h,290 :: get_swr(); if(SWR==0) return; + CALL _get_swr+0 + MOVLW 0 + XORWF _SWR+1, 0 + BTFSS STATUS+0, 2 + GOTO L__sharp_cap581 + MOVLW 0 + XORWF _SWR+0, 0 +L__sharp_cap581: + BTFSS STATUS+0, 2 + GOTO L_sharp_cap95 + GOTO L_end_sharp_cap +L_sharp_cap95: +;main.h,291 :: if(SWR>=min_SWR) { Delay_ms(10); get_swr(); } + MOVLW 128 + XORWF _SWR+1, 0 + MOVWF R0 + MOVLW 128 + XORWF sharp_cap_min_swr_L0+1, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__sharp_cap582 + MOVF sharp_cap_min_swr_L0+0, 0 + SUBWF _SWR+0, 0 +L__sharp_cap582: + BTFSS STATUS+0, 0 + GOTO L_sharp_cap96 + MOVLW 52 + MOVWF R12 + MOVLW 241 + MOVWF R13 +L_sharp_cap97: + DECFSZ R13, 1 + GOTO L_sharp_cap97 + DECFSZ R12, 1 + GOTO L_sharp_cap97 + NOP + NOP + CALL _get_swr+0 +L_sharp_cap96: +;main.h,292 :: if(SWR>=min_SWR) { Delay_ms(10); get_swr(); } + MOVLW 128 + XORWF _SWR+1, 0 + MOVWF R0 + MOVLW 128 + XORWF sharp_cap_min_swr_L0+1, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__sharp_cap583 + MOVF sharp_cap_min_swr_L0+0, 0 + SUBWF _SWR+0, 0 +L__sharp_cap583: + BTFSS STATUS+0, 0 + GOTO L_sharp_cap98 + MOVLW 52 + MOVWF R12 + MOVLW 241 + MOVWF R13 +L_sharp_cap99: + DECFSZ R13, 1 + GOTO L_sharp_cap99 + DECFSZ R12, 1 + GOTO L_sharp_cap99 + NOP + NOP + CALL _get_swr+0 +L_sharp_cap98: +;main.h,293 :: if(SWR < min_SWR) { + MOVLW 128 + XORWF _SWR+1, 0 + MOVWF R0 + MOVLW 128 + XORWF sharp_cap_min_swr_L0+1, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__sharp_cap584 + MOVF sharp_cap_min_swr_L0+0, 0 + SUBWF _SWR+0, 0 +L__sharp_cap584: + BTFSC STATUS+0, 0 + GOTO L_sharp_cap100 +;main.h,294 :: min_SWR = SWR; + MOVF _SWR+0, 0 + MOVWF sharp_cap_min_swr_L0+0 + MOVF _SWR+1, 0 + MOVWF sharp_cap_min_swr_L0+1 +;main.h,295 :: cap = count; + MOVF sharp_cap_count_L0+0, 0 + MOVWF main_cap+0 +;main.h,296 :: if(SWR<120) break; + MOVLW 128 + XORWF _SWR+1, 0 + MOVWF R0 + MOVLW 128 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__sharp_cap585 + MOVLW 120 + SUBWF _SWR+0, 0 +L__sharp_cap585: + BTFSC STATUS+0, 0 + GOTO L_sharp_cap101 + GOTO L_sharp_cap93 +L_sharp_cap101: +;main.h,297 :: } + GOTO L_sharp_cap102 +L_sharp_cap100: +;main.h,298 :: else break; + GOTO L_sharp_cap93 +L_sharp_cap102: +;main.h,288 :: for(count=min_range+C_mult; count<=max_range; count+=C_mult) { + MOVF main_C_mult+0, 0 + ADDWF sharp_cap_count_L0+0, 1 +;main.h,299 :: } + GOTO L_sharp_cap92 +L_sharp_cap93: +;main.h,300 :: set_cap(cap); + MOVF main_cap+0, 0 + MOVWF FARG_set_cap_Cap+0 + CALL _set_cap+0 +;main.h,301 :: return; +;main.h,302 :: } +L_end_sharp_cap: + RETURN +; end of _sharp_cap + +_sharp_ind: + +;main.h,304 :: void sharp_ind() { +;main.h,307 :: range = step_ind * L_mult; + MOVF main_step_ind+0, 0 + MOVWF R0 + MOVF main_L_mult+0, 0 + MOVWF R4 + CALL _Mul_8X8_U+0 + MOVF R0, 0 + MOVWF sharp_ind_range_L0+0 +;main.h,309 :: max_range = ind + range; + MOVF R0, 0 + ADDWF main_ind+0, 0 + MOVWF R4 + MOVF R4, 0 + MOVWF sharp_ind_max_range_L0+0 +;main.h,310 :: if(max_range>32*L_mult-1) max_range = 32*L_mult-1; + MOVLW 5 + MOVWF R2 + MOVF main_L_mult+0, 0 + MOVWF R0 + CLRF R1 + MOVF R2, 0 +L__sharp_ind587: + BTFSC STATUS+0, 2 + GOTO L__sharp_ind588 + LSLF R0, 1 + RLF R1, 1 + ADDLW 255 + GOTO L__sharp_ind587 +L__sharp_ind588: + MOVLW 1 + SUBWF R0, 0 + MOVWF R2 + MOVLW 0 + SUBWFB R1, 0 + MOVWF R3 + MOVLW 128 + XORWF R3, 0 + MOVWF R0 + MOVLW 128 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__sharp_ind589 + MOVF R4, 0 + SUBWF R2, 0 +L__sharp_ind589: + BTFSC STATUS+0, 0 + GOTO L_sharp_ind103 + MOVLW 5 + MOVWF R0 + MOVF main_L_mult+0, 0 + MOVWF sharp_ind_max_range_L0+0 + MOVF R0, 0 +L__sharp_ind590: + BTFSC STATUS+0, 2 + GOTO L__sharp_ind591 + LSLF sharp_ind_max_range_L0+0, 1 + ADDLW 255 + GOTO L__sharp_ind590 +L__sharp_ind591: + DECF sharp_ind_max_range_L0+0, 1 +L_sharp_ind103: +;main.h,311 :: if(ind>range) min_range = ind - range; else min_range = 0; + MOVF main_ind+0, 0 + SUBWF sharp_ind_range_L0+0, 0 + BTFSC STATUS+0, 0 + GOTO L_sharp_ind104 + MOVF sharp_ind_range_L0+0, 0 + SUBWF main_ind+0, 0 + MOVWF sharp_ind_min_range_L0+0 + GOTO L_sharp_ind105 +L_sharp_ind104: + CLRF sharp_ind_min_range_L0+0 +L_sharp_ind105: +;main.h,312 :: ind = min_range; + MOVF sharp_ind_min_range_L0+0, 0 + MOVWF main_ind+0 +;main.h,313 :: set_ind(ind); + MOVF sharp_ind_min_range_L0+0, 0 + MOVWF FARG_set_ind_Ind+0 + CALL _set_ind+0 +;main.h,314 :: get_swr(); if(SWR==0) return; + CALL _get_swr+0 + MOVLW 0 + XORWF _SWR+1, 0 + BTFSS STATUS+0, 2 + GOTO L__sharp_ind592 + MOVLW 0 + XORWF _SWR+0, 0 +L__sharp_ind592: + BTFSS STATUS+0, 2 + GOTO L_sharp_ind106 + GOTO L_end_sharp_ind +L_sharp_ind106: +;main.h,315 :: min_SWR = SWR; + MOVF _SWR+0, 0 + MOVWF sharp_ind_min_SWR_L0+0 + MOVF _SWR+1, 0 + MOVWF sharp_ind_min_SWR_L0+1 +;main.h,316 :: for(count=min_range+L_mult; count<=max_range; count+=L_mult) { + MOVF main_L_mult+0, 0 + ADDWF sharp_ind_min_range_L0+0, 0 + MOVWF sharp_ind_count_L0+0 +L_sharp_ind107: + MOVF sharp_ind_count_L0+0, 0 + SUBWF sharp_ind_max_range_L0+0, 0 + BTFSS STATUS+0, 0 + GOTO L_sharp_ind108 +;main.h,317 :: set_ind(count); + MOVF sharp_ind_count_L0+0, 0 + MOVWF FARG_set_ind_Ind+0 + CALL _set_ind+0 +;main.h,318 :: get_swr(); if(SWR==0) return; + CALL _get_swr+0 + MOVLW 0 + XORWF _SWR+1, 0 + BTFSS STATUS+0, 2 + GOTO L__sharp_ind593 + MOVLW 0 + XORWF _SWR+0, 0 +L__sharp_ind593: + BTFSS STATUS+0, 2 + GOTO L_sharp_ind110 + GOTO L_end_sharp_ind +L_sharp_ind110: +;main.h,319 :: if(SWR>=min_SWR) { Delay_ms(10); get_swr(); } + MOVLW 128 + XORWF _SWR+1, 0 + MOVWF R0 + MOVLW 128 + XORWF sharp_ind_min_SWR_L0+1, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__sharp_ind594 + MOVF sharp_ind_min_SWR_L0+0, 0 + SUBWF _SWR+0, 0 +L__sharp_ind594: + BTFSS STATUS+0, 0 + GOTO L_sharp_ind111 + MOVLW 52 + MOVWF R12 + MOVLW 241 + MOVWF R13 +L_sharp_ind112: + DECFSZ R13, 1 + GOTO L_sharp_ind112 + DECFSZ R12, 1 + GOTO L_sharp_ind112 + NOP + NOP + CALL _get_swr+0 +L_sharp_ind111: +;main.h,320 :: if(SWR>=min_SWR) { Delay_ms(10); get_swr(); } + MOVLW 128 + XORWF _SWR+1, 0 + MOVWF R0 + MOVLW 128 + XORWF sharp_ind_min_SWR_L0+1, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__sharp_ind595 + MOVF sharp_ind_min_SWR_L0+0, 0 + SUBWF _SWR+0, 0 +L__sharp_ind595: + BTFSS STATUS+0, 0 + GOTO L_sharp_ind113 + MOVLW 52 + MOVWF R12 + MOVLW 241 + MOVWF R13 +L_sharp_ind114: + DECFSZ R13, 1 + GOTO L_sharp_ind114 + DECFSZ R12, 1 + GOTO L_sharp_ind114 + NOP + NOP + CALL _get_swr+0 +L_sharp_ind113: +;main.h,321 :: if(SWR < min_SWR) { + MOVLW 128 + XORWF _SWR+1, 0 + MOVWF R0 + MOVLW 128 + XORWF sharp_ind_min_SWR_L0+1, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__sharp_ind596 + MOVF sharp_ind_min_SWR_L0+0, 0 + SUBWF _SWR+0, 0 +L__sharp_ind596: + BTFSC STATUS+0, 0 + GOTO L_sharp_ind115 +;main.h,322 :: min_SWR = SWR; + MOVF _SWR+0, 0 + MOVWF sharp_ind_min_SWR_L0+0 + MOVF _SWR+1, 0 + MOVWF sharp_ind_min_SWR_L0+1 +;main.h,323 :: ind = count; + MOVF sharp_ind_count_L0+0, 0 + MOVWF main_ind+0 +;main.h,324 :: if(SWR<120) break; + MOVLW 128 + XORWF _SWR+1, 0 + MOVWF R0 + MOVLW 128 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__sharp_ind597 + MOVLW 120 + SUBWF _SWR+0, 0 +L__sharp_ind597: + BTFSC STATUS+0, 0 + GOTO L_sharp_ind116 + GOTO L_sharp_ind108 +L_sharp_ind116: +;main.h,325 :: } + GOTO L_sharp_ind117 +L_sharp_ind115: +;main.h,326 :: else break; + GOTO L_sharp_ind108 +L_sharp_ind117: +;main.h,316 :: for(count=min_range+L_mult; count<=max_range; count+=L_mult) { + MOVF main_L_mult+0, 0 + ADDWF sharp_ind_count_L0+0, 1 +;main.h,327 :: } + GOTO L_sharp_ind107 +L_sharp_ind108: +;main.h,328 :: set_ind(ind); + MOVF main_ind+0, 0 + MOVWF FARG_set_ind_Ind+0 + CALL _set_ind+0 +;main.h,329 :: return; +;main.h,330 :: } +L_end_sharp_ind: + RETURN +; end of _sharp_ind + +_sub_tune: + +;main.h,333 :: void sub_tune () { +;main.h,336 :: swr_mem = SWR; + MOVF _SWR+0, 0 + MOVWF sub_tune_swr_mem_L0+0 + MOVF _SWR+1, 0 + MOVWF sub_tune_swr_mem_L0+1 +;main.h,337 :: coarse_tune(); if(SWR==0) {atu_reset(); return;} + CALL _coarse_tune+0 + MOVLW 0 + XORWF _SWR+1, 0 + BTFSS STATUS+0, 2 + GOTO L__sub_tune599 + MOVLW 0 + XORWF _SWR+0, 0 +L__sub_tune599: + BTFSS STATUS+0, 2 + GOTO L_sub_tune118 + CALL _atu_reset+0 + GOTO L_end_sub_tune +L_sub_tune118: +;main.h,338 :: get_swr(); if(SWR<120) return; + CALL _get_swr+0 + MOVLW 128 + XORWF _SWR+1, 0 + MOVWF R0 + MOVLW 128 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__sub_tune600 + MOVLW 120 + SUBWF _SWR+0, 0 +L__sub_tune600: + BTFSC STATUS+0, 0 + GOTO L_sub_tune119 + GOTO L_end_sub_tune +L_sub_tune119: +;main.h,339 :: sharp_ind(); if(SWR==0) {atu_reset(); return;} + CALL _sharp_ind+0 + MOVLW 0 + XORWF _SWR+1, 0 + BTFSS STATUS+0, 2 + GOTO L__sub_tune601 + MOVLW 0 + XORWF _SWR+0, 0 +L__sub_tune601: + BTFSS STATUS+0, 2 + GOTO L_sub_tune120 + CALL _atu_reset+0 + GOTO L_end_sub_tune +L_sub_tune120: +;main.h,340 :: get_swr(); if(SWR<120) return; + CALL _get_swr+0 + MOVLW 128 + XORWF _SWR+1, 0 + MOVWF R0 + MOVLW 128 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__sub_tune602 + MOVLW 120 + SUBWF _SWR+0, 0 +L__sub_tune602: + BTFSC STATUS+0, 0 + GOTO L_sub_tune121 + GOTO L_end_sub_tune +L_sub_tune121: +;main.h,341 :: sharp_cap(); if(SWR==0) {atu_reset(); return;} + CALL _sharp_cap+0 + MOVLW 0 + XORWF _SWR+1, 0 + BTFSS STATUS+0, 2 + GOTO L__sub_tune603 + MOVLW 0 + XORWF _SWR+0, 0 +L__sub_tune603: + BTFSS STATUS+0, 2 + GOTO L_sub_tune122 + CALL _atu_reset+0 + GOTO L_end_sub_tune +L_sub_tune122: +;main.h,342 :: get_swr(); if(SWR<120) return; + CALL _get_swr+0 + MOVLW 128 + XORWF _SWR+1, 0 + MOVWF R0 + MOVLW 128 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__sub_tune604 + MOVLW 120 + SUBWF _SWR+0, 0 +L__sub_tune604: + BTFSC STATUS+0, 0 + GOTO L_sub_tune123 + GOTO L_end_sub_tune +L_sub_tune123: +;main.h,344 :: if(SWR<200 & SWR100) return; + MOVLW 128 + XORWF _SWR+1, 0 + MOVWF R1 + MOVLW 128 + SUBWF R1, 0 + BTFSS STATUS+0, 2 + GOTO L__sub_tune605 + MOVLW 200 + SUBWF _SWR+0, 0 +L__sub_tune605: + MOVLW 1 + BTFSC STATUS+0, 0 + MOVLW 0 + MOVWF R1 + MOVLW 128 + XORWF _SWR+1, 0 + MOVWF R0 + MOVLW 128 + XORWF sub_tune_swr_mem_L0+1, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__sub_tune606 + MOVF sub_tune_swr_mem_L0+0, 0 + SUBWF _SWR+0, 0 +L__sub_tune606: + MOVLW 1 + BTFSC STATUS+0, 0 + MOVLW 0 + MOVWF R0 + MOVF R0, 0 + ANDWF R1, 0 + MOVWF R3 + MOVF _SWR+0, 0 + SUBWF sub_tune_swr_mem_L0+0, 0 + MOVWF R1 + MOVF _SWR+1, 0 + SUBWFB sub_tune_swr_mem_L0+1, 0 + MOVWF R2 + MOVLW 128 + MOVWF R0 + MOVLW 128 + XORWF R2, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__sub_tune607 + MOVF R1, 0 + SUBLW 100 +L__sub_tune607: + MOVLW 1 + BTFSC STATUS+0, 0 + MOVLW 0 + MOVWF R0 + MOVF R3, 0 + ANDWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_sub_tune124 + GOTO L_end_sub_tune +L_sub_tune124: +;main.h,345 :: swr_mem = SWR; + MOVF _SWR+0, 0 + MOVWF sub_tune_swr_mem_L0+0 + MOVF _SWR+1, 0 + MOVWF sub_tune_swr_mem_L0+1 +;main.h,346 :: ind_mem = ind; + MOVF main_ind+0, 0 + MOVWF sub_tune_ind_mem_L0+0 + CLRF sub_tune_ind_mem_L0+1 +;main.h,347 :: cap_mem = cap; + MOVF main_cap+0, 0 + MOVWF sub_tune_cap_mem_L0+0 + CLRF sub_tune_cap_mem_L0+1 +;main.h,349 :: if(SW==1) SW = 0; else SW = 1; + MOVF main_SW+0, 0 + XORLW 1 + BTFSS STATUS+0, 2 + GOTO L_sub_tune125 + CLRF main_SW+0 + GOTO L_sub_tune126 +L_sub_tune125: + MOVLW 1 + MOVWF main_SW+0 +L_sub_tune126: +;main.h,350 :: atu_reset(); + CALL _atu_reset+0 +;main.h,351 :: set_sw(SW); + MOVF main_SW+0, 0 + MOVWF FARG_set_sw_SW+0 + CALL _set_sw+0 +;main.h,352 :: Delay_ms(50); + MOVLW 2 + MOVWF R11 + MOVLW 4 + MOVWF R12 + MOVLW 186 + MOVWF R13 +L_sub_tune127: + DECFSZ R13, 1 + GOTO L_sub_tune127 + DECFSZ R12, 1 + GOTO L_sub_tune127 + DECFSZ R11, 1 + GOTO L_sub_tune127 + NOP +;main.h,353 :: get_swr(); if(SWR<120) return; + CALL _get_swr+0 + MOVLW 128 + XORWF _SWR+1, 0 + MOVWF R0 + MOVLW 128 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__sub_tune608 + MOVLW 120 + SUBWF _SWR+0, 0 +L__sub_tune608: + BTFSC STATUS+0, 0 + GOTO L_sub_tune128 + GOTO L_end_sub_tune +L_sub_tune128: +;main.h,355 :: coarse_tune(); if(SWR==0) {atu_reset(); return;} + CALL _coarse_tune+0 + MOVLW 0 + XORWF _SWR+1, 0 + BTFSS STATUS+0, 2 + GOTO L__sub_tune609 + MOVLW 0 + XORWF _SWR+0, 0 +L__sub_tune609: + BTFSS STATUS+0, 2 + GOTO L_sub_tune129 + CALL _atu_reset+0 + GOTO L_end_sub_tune +L_sub_tune129: +;main.h,356 :: get_swr(); if(SWR<120) return; + CALL _get_swr+0 + MOVLW 128 + XORWF _SWR+1, 0 + MOVWF R0 + MOVLW 128 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__sub_tune610 + MOVLW 120 + SUBWF _SWR+0, 0 +L__sub_tune610: + BTFSC STATUS+0, 0 + GOTO L_sub_tune130 + GOTO L_end_sub_tune +L_sub_tune130: +;main.h,357 :: sharp_ind(); if(SWR==0) {atu_reset(); return;} + CALL _sharp_ind+0 + MOVLW 0 + XORWF _SWR+1, 0 + BTFSS STATUS+0, 2 + GOTO L__sub_tune611 + MOVLW 0 + XORWF _SWR+0, 0 +L__sub_tune611: + BTFSS STATUS+0, 2 + GOTO L_sub_tune131 + CALL _atu_reset+0 + GOTO L_end_sub_tune +L_sub_tune131: +;main.h,358 :: get_swr(); if(SWR<120) return; + CALL _get_swr+0 + MOVLW 128 + XORWF _SWR+1, 0 + MOVWF R0 + MOVLW 128 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__sub_tune612 + MOVLW 120 + SUBWF _SWR+0, 0 +L__sub_tune612: + BTFSC STATUS+0, 0 + GOTO L_sub_tune132 + GOTO L_end_sub_tune +L_sub_tune132: +;main.h,359 :: sharp_cap(); if(SWR==0) {atu_reset(); return;} + CALL _sharp_cap+0 + MOVLW 0 + XORWF _SWR+1, 0 + BTFSS STATUS+0, 2 + GOTO L__sub_tune613 + MOVLW 0 + XORWF _SWR+0, 0 +L__sub_tune613: + BTFSS STATUS+0, 2 + GOTO L_sub_tune133 + CALL _atu_reset+0 + GOTO L_end_sub_tune +L_sub_tune133: +;main.h,360 :: get_swr(); if(SWR<120) return; + CALL _get_swr+0 + MOVLW 128 + XORWF _SWR+1, 0 + MOVWF R0 + MOVLW 128 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__sub_tune614 + MOVLW 120 + SUBWF _SWR+0, 0 +L__sub_tune614: + BTFSC STATUS+0, 0 + GOTO L_sub_tune134 + GOTO L_end_sub_tune +L_sub_tune134: +;main.h,362 :: if(SWR>swr_mem) { + MOVLW 128 + XORWF sub_tune_swr_mem_L0+1, 0 + MOVWF R0 + MOVLW 128 + XORWF _SWR+1, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__sub_tune615 + MOVF _SWR+0, 0 + SUBWF sub_tune_swr_mem_L0+0, 0 +L__sub_tune615: + BTFSC STATUS+0, 0 + GOTO L_sub_tune135 +;main.h,363 :: if(SW==1) SW = 0; else SW = 1; + MOVF main_SW+0, 0 + XORLW 1 + BTFSS STATUS+0, 2 + GOTO L_sub_tune136 + CLRF main_SW+0 + GOTO L_sub_tune137 +L_sub_tune136: + MOVLW 1 + MOVWF main_SW+0 +L_sub_tune137: +;main.h,364 :: set_sw(SW); + MOVF main_SW+0, 0 + MOVWF FARG_set_sw_SW+0 + CALL _set_sw+0 +;main.h,365 :: ind = ind_mem; + MOVF sub_tune_ind_mem_L0+0, 0 + MOVWF main_ind+0 +;main.h,366 :: cap = cap_mem; + MOVF sub_tune_cap_mem_L0+0, 0 + MOVWF main_cap+0 +;main.h,367 :: set_ind(ind); + MOVF sub_tune_ind_mem_L0+0, 0 + MOVWF FARG_set_ind_Ind+0 + CALL _set_ind+0 +;main.h,368 :: set_cap(cap); + MOVF main_cap+0, 0 + MOVWF FARG_set_cap_Cap+0 + CALL _set_cap+0 +;main.h,369 :: SWR = swr_mem; + MOVF sub_tune_swr_mem_L0+0, 0 + MOVWF _SWR+0 + MOVF sub_tune_swr_mem_L0+1, 0 + MOVWF _SWR+1 +;main.h,370 :: } +L_sub_tune135: +;main.h,372 :: asm CLRWDT; + CLRWDT +;main.h,373 :: return; +;main.h,374 :: } +L_end_sub_tune: + RETURN +; end of _sub_tune + +_tune: + +;main.h,378 :: void tune() { +;main.h,380 :: asm CLRWDT; + CLRWDT +;main.h,382 :: p_cnt = 0; + CLRF _p_cnt+0 +;main.h,383 :: P_max = 0; + CLRF _P_max+0 + CLRF _P_max+1 +;main.h,385 :: rready = 0; + CLRF _rready+0 +;main.h,386 :: get_swr(); + CALL _get_swr+0 +;main.h,387 :: if(SWR<110) return; + MOVLW 128 + XORWF _SWR+1, 0 + MOVWF R0 + MOVLW 128 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__tune617 + MOVLW 110 + SUBWF _SWR+0, 0 +L__tune617: + BTFSC STATUS+0, 0 + GOTO L_tune138 + GOTO L_end_tune +L_tune138: +;main.h,388 :: atu_reset(); + CALL _atu_reset+0 +;main.h,389 :: if(Loss_ind==0) lcd_ind(); + MOVF main_Loss_ind+0, 0 + XORLW 0 + BTFSS STATUS+0, 2 + GOTO L_tune139 + CALL _lcd_ind+0 +L_tune139: +;main.h,390 :: Delay_ms(50); + MOVLW 2 + MOVWF R11 + MOVLW 4 + MOVWF R12 + MOVLW 186 + MOVWF R13 +L_tune140: + DECFSZ R13, 1 + GOTO L_tune140 + DECFSZ R12, 1 + GOTO L_tune140 + DECFSZ R11, 1 + GOTO L_tune140 + NOP +;main.h,391 :: get_swr(); + CALL _get_swr+0 +;main.h,392 :: swr_a = SWR; + MOVF _SWR+0, 0 + MOVWF _swr_a+0 + MOVF _SWR+1, 0 + MOVWF _swr_a+1 +;main.h,393 :: if(SWR<110) return; + MOVLW 128 + XORWF _SWR+1, 0 + MOVWF R0 + MOVLW 128 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__tune618 + MOVLW 110 + SUBWF _SWR+0, 0 +L__tune618: + BTFSC STATUS+0, 0 + GOTO L_tune141 + GOTO L_end_tune +L_tune141: +;main.h,394 :: if(max_swr>110 & SWR>max_swr) return; + MOVLW 128 + MOVWF R1 + MOVLW 128 + XORWF main_max_swr+1, 0 + SUBWF R1, 0 + BTFSS STATUS+0, 2 + GOTO L__tune619 + MOVF main_max_swr+0, 0 + SUBLW 110 +L__tune619: + MOVLW 1 + BTFSC STATUS+0, 0 + MOVLW 0 + MOVWF R1 + MOVLW 128 + XORWF main_max_swr+1, 0 + MOVWF R0 + MOVLW 128 + XORWF _SWR+1, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__tune620 + MOVF _SWR+0, 0 + SUBWF main_max_swr+0, 0 +L__tune620: + MOVLW 1 + BTFSC STATUS+0, 0 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + ANDWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_tune142 + GOTO L_end_tune +L_tune142: +;main.h,396 :: sub_tune(); if(SWR==0) {atu_reset(); return;} + CALL _sub_tune+0 + MOVLW 0 + XORWF _SWR+1, 0 + BTFSS STATUS+0, 2 + GOTO L__tune621 + MOVLW 0 + XORWF _SWR+0, 0 +L__tune621: + BTFSS STATUS+0, 2 + GOTO L_tune143 + CALL _atu_reset+0 + GOTO L_end_tune +L_tune143: +;main.h,397 :: if(SWR<120) return; + MOVLW 128 + XORWF _SWR+1, 0 + MOVWF R0 + MOVLW 128 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__tune622 + MOVLW 120 + SUBWF _SWR+0, 0 +L__tune622: + BTFSC STATUS+0, 0 + GOTO L_tune144 + GOTO L_end_tune +L_tune144: +;main.h,398 :: if(C_q==5 & L_q==5) return; + MOVF main_C_q+0, 0 + XORLW 5 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF main_L_q+0, 0 + XORLW 5 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + ANDWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_tune145 + GOTO L_end_tune +L_tune145: +;main.h,400 :: if(L_q>5) { + MOVF main_L_q+0, 0 + SUBLW 5 + BTFSC STATUS+0, 0 + GOTO L_tune146 +;main.h,401 :: step_ind = L_mult; + MOVF main_L_mult+0, 0 + MOVWF main_step_ind+0 +;main.h,402 :: L_mult = 1; + MOVLW 1 + MOVWF main_L_mult+0 +;main.h,403 :: sharp_ind(); + CALL _sharp_ind+0 +;main.h,404 :: } +L_tune146: +;main.h,405 :: if(SWR<120) return; + MOVLW 128 + XORWF _SWR+1, 0 + MOVWF R0 + MOVLW 128 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__tune623 + MOVLW 120 + SUBWF _SWR+0, 0 +L__tune623: + BTFSC STATUS+0, 0 + GOTO L_tune147 + GOTO L_end_tune +L_tune147: +;main.h,406 :: if(C_q>5) { + MOVF main_C_q+0, 0 + SUBLW 5 + BTFSC STATUS+0, 0 + GOTO L_tune148 +;main.h,407 :: step_cap = C_mult; // = C_mult + MOVF main_C_mult+0, 0 + MOVWF main_step_cap+0 +;main.h,408 :: C_mult = 1; + MOVLW 1 + MOVWF main_C_mult+0 +;main.h,409 :: sharp_cap(); + CALL _sharp_cap+0 +;main.h,410 :: } +L_tune148: +;main.h,411 :: if(L_q==5)L_mult = 1; + MOVF main_L_q+0, 0 + XORLW 5 + BTFSS STATUS+0, 2 + GOTO L_tune149 + MOVLW 1 + MOVWF main_L_mult+0 + GOTO L_tune150 +L_tune149: +;main.h,412 :: else if(L_q==6) L_mult = 2; + MOVF main_L_q+0, 0 + XORLW 6 + BTFSS STATUS+0, 2 + GOTO L_tune151 + MOVLW 2 + MOVWF main_L_mult+0 + GOTO L_tune152 +L_tune151: +;main.h,413 :: else if(L_q==7) L_mult = 4; + MOVF main_L_q+0, 0 + XORLW 7 + BTFSS STATUS+0, 2 + GOTO L_tune153 + MOVLW 4 + MOVWF main_L_mult+0 +L_tune153: +L_tune152: +L_tune150: +;main.h,414 :: if(C_q==5) C_mult =1; + MOVF main_C_q+0, 0 + XORLW 5 + BTFSS STATUS+0, 2 + GOTO L_tune154 + MOVLW 1 + MOVWF main_C_mult+0 + GOTO L_tune155 +L_tune154: +;main.h,415 :: else if(C_q==6) C_mult = 2; + MOVF main_C_q+0, 0 + XORLW 6 + BTFSS STATUS+0, 2 + GOTO L_tune156 + MOVLW 2 + MOVWF main_C_mult+0 + GOTO L_tune157 +L_tune156: +;main.h,416 :: else if(C_q==7) C_mult = 4; + MOVF main_C_q+0, 0 + XORLW 7 + BTFSS STATUS+0, 2 + GOTO L_tune158 + MOVLW 4 + MOVWF main_C_mult+0 +L_tune158: +L_tune157: +L_tune155: +;main.h,417 :: asm CLRWDT; + CLRWDT +;main.h,418 :: return; +;main.h,419 :: } +L_end_tune: + RETURN +; end of _tune + +_main: + +;main.c,32 :: void main() { +;main.c,33 :: if(STATUS.B4==0) Restart = 1; + BTFSC STATUS+0, 4 + GOTO L_main159 + MOVLW 1 + MOVWF _Restart+0 +L_main159: +;main.c,34 :: pic_init(); + CALL _pic_init+0 +;main.c,36 :: Delay_ms (300); + MOVLW 7 + MOVWF R11 + MOVLW 23 + MOVWF R12 + MOVLW 106 + MOVWF R13 +L_main160: + DECFSZ R13, 1 + GOTO L_main160 + DECFSZ R12, 1 + GOTO L_main160 + DECFSZ R11, 1 + GOTO L_main160 + NOP +;main.c,37 :: asm CLRWDT; + CLRWDT +;main.c,38 :: cells_init(); + CALL _cells_init+0 +;main.c,39 :: Soft_I2C_Init(); + CALL _Soft_I2C_Init+0 +;main.c,40 :: if(type==0) { // 2-colors led reset + MOVF _type+0, 0 + XORLW 0 + BTFSS STATUS+0, 2 + GOTO L_main161 +;main.c,41 :: LATB.B6 = 1; + BSF LATB+0, 6 +;main.c,42 :: LATB.B7 = 1; + BSF LATB+0, 7 +;main.c,43 :: } +L_main161: +;main.c,44 :: dysp_cnt = Dysp_delay * dysp_cnt_mult; + MOVF _Dysp_delay+0, 0 + MOVWF R0 + CALL _byte2double+0 + MOVF _dysp_cnt_mult+0, 0 + MOVWF R4 + MOVF _dysp_cnt_mult+1, 0 + MOVWF R5 + MOVF _dysp_cnt_mult+2, 0 + MOVWF R6 + MOVF _dysp_cnt_mult+3, 0 + MOVWF R7 + CALL _Mul_32x32_FP+0 + CALL _double2int+0 + MOVF R0, 0 + MOVWF _dysp_cnt+0 + MOVF R1, 0 + MOVWF _dysp_cnt+1 +;main.c,46 :: Delay_ms(300); + MOVLW 7 + MOVWF R11 + MOVLW 23 + MOVWF R12 + MOVLW 106 + MOVWF R13 +L_main162: + DECFSZ R13, 1 + GOTO L_main162 + DECFSZ R12, 1 + GOTO L_main162 + DECFSZ R11, 1 + GOTO L_main162 + NOP +;main.c,47 :: asm CLRWDT; + CLRWDT +;main.c,49 :: if(PORTB.B1==0 & PORTB.B2==0) { // Test mode + BTFSC PORTB+0, 1 + GOTO L__main625 + BSF R4, 0 + GOTO L__main626 +L__main625: + BCF R4, 0 +L__main626: + BTFSC PORTB+0, 2 + GOTO L__main627 + BSF 3, 0 + GOTO L__main628 +L__main627: + BCF 3, 0 +L__main628: + BTFSS R4, 0 + GOTO L__main629 + BTFSS 3, 0 + GOTO L__main629 + BSF R4, 0 + GOTO L__main630 +L__main629: + BCF R4, 0 +L__main630: + BTFSS R4, 0 + GOTO L_main163 +;main.c,50 :: Test = 1; + MOVLW 1 + MOVWF _Test+0 +;main.c,51 :: Auto =0; + CLRF _Auto+0 +;main.c,52 :: } +L_main163: +;main.c,53 :: if(L_q==5)L_mult = 1; + MOVF main_L_q+0, 0 + XORLW 5 + BTFSS STATUS+0, 2 + GOTO L_main164 + MOVLW 1 + MOVWF main_L_mult+0 + GOTO L_main165 +L_main164: +;main.c,54 :: else if(L_q==6) L_mult = 2; + MOVF main_L_q+0, 0 + XORLW 6 + BTFSS STATUS+0, 2 + GOTO L_main166 + MOVLW 2 + MOVWF main_L_mult+0 + GOTO L_main167 +L_main166: +;main.c,55 :: else if(L_q==7) L_mult = 4; + MOVF main_L_q+0, 0 + XORLW 7 + BTFSS STATUS+0, 2 + GOTO L_main168 + MOVLW 4 + MOVWF main_L_mult+0 +L_main168: +L_main167: +L_main165: +;main.c,56 :: if(C_q==5) C_mult =1; + MOVF main_C_q+0, 0 + XORLW 5 + BTFSS STATUS+0, 2 + GOTO L_main169 + MOVLW 1 + MOVWF main_C_mult+0 + GOTO L_main170 +L_main169: +;main.c,57 :: else if(C_q==6) C_mult = 2; + MOVF main_C_q+0, 0 + XORLW 6 + BTFSS STATUS+0, 2 + GOTO L_main171 + MOVLW 2 + MOVWF main_C_mult+0 + GOTO L_main172 +L_main171: +;main.c,58 :: else if(C_q==7) C_mult = 4; + MOVF main_C_q+0, 0 + XORLW 7 + BTFSS STATUS+0, 2 + GOTO L_main173 + MOVLW 4 + MOVWF main_C_mult+0 +L_main173: +L_main172: +L_main170: +;main.c,60 :: Delay_ms(300); + MOVLW 7 + MOVWF R11 + MOVLW 23 + MOVWF R12 + MOVLW 106 + MOVWF R13 +L_main174: + DECFSZ R13, 1 + GOTO L_main174 + DECFSZ R12, 1 + GOTO L_main174 + DECFSZ R11, 1 + GOTO L_main174 + NOP +;main.c,61 :: asm CLRWDT; + CLRWDT +;main.c,62 :: led_init(); + CALL _led_init+0 +;main.c,64 :: if(PORTB.B1==0 & PORTB.B2==0 & PORTB.B0==0) { // Fast Test mode (loop) + BTFSC PORTB+0, 1 + GOTO L__main631 + BSF R4, 0 + GOTO L__main632 +L__main631: + BCF R4, 0 +L__main632: + BTFSC PORTB+0, 2 + GOTO L__main633 + BSF 3, 0 + GOTO L__main634 +L__main633: + BCF 3, 0 +L__main634: + BTFSS R4, 0 + GOTO L__main635 + BTFSS 3, 0 + GOTO L__main635 + BSF R4, 0 + GOTO L__main636 +L__main635: + BCF R4, 0 +L__main636: + BTFSC PORTB+0, 0 + GOTO L__main637 + BSF 3, 0 + GOTO L__main638 +L__main637: + BCF 3, 0 +L__main638: + BTFSS R4, 0 + GOTO L__main639 + BTFSS 3, 0 + GOTO L__main639 + BSF R4, 0 + GOTO L__main640 +L__main639: + BCF R4, 0 +L__main640: + BTFSS R4, 0 + GOTO L_main175 +;main.c,65 :: if(type==4 | type==5) led_wr_str (0, 12, "FAST TEST", 9); // 128*64 + MOVF _type+0, 0 + XORLW 4 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF _type+0, 0 + XORLW 5 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + IORWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_main176 + CLRF FARG_led_wr_str+0 + MOVLW 12 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr1_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr1_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 9 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 + GOTO L_main177 +L_main176: +;main.c,66 :: else if(type!=0) led_wr_str (0, 3, "FAST TEST", 9); // 1602 | 128*32 + MOVF _type+0, 0 + XORLW 0 + BTFSC STATUS+0, 2 + GOTO L_main178 + CLRF FARG_led_wr_str+0 + MOVLW 3 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr2_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr2_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 9 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +L_main178: +L_main177: +;main.c,67 :: set_cap(255); + MOVLW 255 + MOVWF FARG_set_cap_Cap+0 + CALL _set_cap+0 +;main.c,68 :: if(L_invert==0) set_ind(255); + MOVF main_L_invert+0, 0 + XORLW 0 + BTFSS STATUS+0, 2 + GOTO L_main179 + MOVLW 255 + MOVWF FARG_set_ind_Ind+0 + CALL _set_ind+0 + GOTO L_main180 +L_main179: +;main.c,69 :: else set_ind(0); + CLRF FARG_set_ind_Ind+0 + CALL _set_ind+0 +L_main180: +;main.c,70 :: set_sw(1); + MOVLW 1 + MOVWF FARG_set_sw_SW+0 + CALL _set_sw+0 +;main.c,71 :: asm CLRWDT; + CLRWDT +;main.c,72 :: while(1) {Delay_ms(500);asm CLRWDT;} +L_main181: + MOVLW 11 + MOVWF R11 + MOVLW 38 + MOVWF R12 + MOVLW 93 + MOVWF R13 +L_main183: + DECFSZ R13, 1 + GOTO L_main183 + DECFSZ R12, 1 + GOTO L_main183 + DECFSZ R11, 1 + GOTO L_main183 + NOP + NOP + CLRWDT + GOTO L_main181 +;main.c,73 :: } +L_main175: +;main.c,74 :: asm CLRWDT; + CLRWDT +;main.c,76 :: if(Button(&PORTB, 0, 100, 0)) { // Fider loss input + MOVLW PORTB+0 + MOVWF FARG_Button_port+0 + MOVLW hi_addr(PORTB+0) + MOVWF FARG_Button_port+1 + CLRF FARG_Button_pin+0 + MOVLW 100 + MOVWF FARG_Button_time_ms+0 + CLRF FARG_Button_active_state+0 + CALL _Button+0 + MOVF R0, 0 + BTFSC STATUS+0, 2 + GOTO L_main184 +;main.c,77 :: if(type==4 | type==5) { led_wr_str (0, 6, "Fider Loss", 10); // 128*64 + MOVF _type+0, 0 + XORLW 4 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF _type+0, 0 + XORLW 5 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + IORWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_main185 + CLRF FARG_led_wr_str+0 + MOVLW 6 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr3_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr3_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 10 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,78 :: led_wr_str (1, 6, "input", 5); } + MOVLW 1 + MOVWF FARG_led_wr_str+0 + MOVLW 6 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr4_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr4_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 5 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 + GOTO L_main186 +L_main185: +;main.c,79 :: else if(type!=0) led_wr_str (0, 0, "Fider Loss input", 16); // 1602 | 128*32 + MOVF _type+0, 0 + XORLW 0 + BTFSC STATUS+0, 2 + GOTO L_main187 + CLRF FARG_led_wr_str+0 + CLRF FARG_led_wr_str+0 + MOVLW ?lstr5_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr5_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 16 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +L_main187: +L_main186: +;main.c,80 :: Fid_loss = Bcd2Dec(EEPROM_Read(0x34)); + MOVLW 52 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF FARG_Bcd2Dec_bcdnum+0 + CALL _Bcd2Dec+0 + MOVF R0, 0 + MOVWF _Fid_loss+0 +;main.c,81 :: show_loss(); + CALL _show_loss+0 +;main.c,83 :: while(1) { +L_main188: +;main.c,84 :: if(Button(&PORTB, 2, 50, 0)){ // BYP button + MOVLW PORTB+0 + MOVWF FARG_Button_port+0 + MOVLW hi_addr(PORTB+0) + MOVWF FARG_Button_port+1 + MOVLW 2 + MOVWF FARG_Button_pin+0 + MOVLW 50 + MOVWF FARG_Button_time_ms+0 + CLRF FARG_Button_active_state+0 + CALL _Button+0 + MOVF R0, 0 + BTFSC STATUS+0, 2 + GOTO L_main190 +;main.c,85 :: if(Fid_loss<99) { + MOVLW 99 + SUBWF _Fid_loss+0, 0 + BTFSC STATUS+0, 0 + GOTO L_main191 +;main.c,86 :: Fid_loss ++; + INCF _Fid_loss+0, 1 +;main.c,87 :: show_loss(); + CALL _show_loss+0 +;main.c,88 :: EEPROM_Write(0x34, Dec2Bcd(Fid_loss)); + MOVF _Fid_loss+0, 0 + MOVWF FARG_Dec2Bcd_decnum+0 + CALL _Dec2Bcd+0 + MOVF R0, 0 + MOVWF FARG_EEPROM_Write_data_+0 + MOVLW 52 + MOVWF FARG_EEPROM_Write_Address+0 + CALL _EEPROM_Write+0 +;main.c,89 :: } +L_main191: +;main.c,90 :: while(Button(&PORTB, 2, 50, 0)) asm CLRWDT; +L_main192: + MOVLW PORTB+0 + MOVWF FARG_Button_port+0 + MOVLW hi_addr(PORTB+0) + MOVWF FARG_Button_port+1 + MOVLW 2 + MOVWF FARG_Button_pin+0 + MOVLW 50 + MOVWF FARG_Button_time_ms+0 + CLRF FARG_Button_active_state+0 + CALL _Button+0 + MOVF R0, 0 + BTFSC STATUS+0, 2 + GOTO L_main193 + CLRWDT + GOTO L_main192 +L_main193: +;main.c,91 :: } +L_main190: +;main.c,93 :: if(Button(&PORTB, 1, 50, 0)){ // AUTO button + MOVLW PORTB+0 + MOVWF FARG_Button_port+0 + MOVLW hi_addr(PORTB+0) + MOVWF FARG_Button_port+1 + MOVLW 1 + MOVWF FARG_Button_pin+0 + MOVLW 50 + MOVWF FARG_Button_time_ms+0 + CLRF FARG_Button_active_state+0 + CALL _Button+0 + MOVF R0, 0 + BTFSC STATUS+0, 2 + GOTO L_main194 +;main.c,94 :: if(Fid_loss>0) { + MOVF _Fid_loss+0, 0 + SUBLW 0 + BTFSC STATUS+0, 0 + GOTO L_main195 +;main.c,95 :: Fid_loss --; + DECF _Fid_loss+0, 1 +;main.c,96 :: show_loss(); + CALL _show_loss+0 +;main.c,97 :: EEPROM_Write(0x34, Dec2Bcd(Fid_loss)); + MOVF _Fid_loss+0, 0 + MOVWF FARG_Dec2Bcd_decnum+0 + CALL _Dec2Bcd+0 + MOVF R0, 0 + MOVWF FARG_EEPROM_Write_data_+0 + MOVLW 52 + MOVWF FARG_EEPROM_Write_Address+0 + CALL _EEPROM_Write+0 +;main.c,98 :: } +L_main195: +;main.c,99 :: while(Button(&PORTB, 1, 50, 0)) asm CLRWDT; +L_main196: + MOVLW PORTB+0 + MOVWF FARG_Button_port+0 + MOVLW hi_addr(PORTB+0) + MOVWF FARG_Button_port+1 + MOVLW 1 + MOVWF FARG_Button_pin+0 + MOVLW 50 + MOVWF FARG_Button_time_ms+0 + CLRF FARG_Button_active_state+0 + CALL _Button+0 + MOVF R0, 0 + BTFSC STATUS+0, 2 + GOTO L_main197 + CLRWDT + GOTO L_main196 +L_main197: +;main.c,100 :: } +L_main194: +;main.c,101 :: asm CLRWDT; + CLRWDT +;main.c,102 :: } // while + GOTO L_main188 +;main.c,103 :: } // Fider loss input +L_main184: +;main.c,105 :: if(Test==0) { + MOVF _Test+0, 0 + XORLW 0 + BTFSS STATUS+0, 2 + GOTO L_main198 +;main.c,106 :: cap = EEPROM_Read(255); + MOVLW 255 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF main_cap+0 +;main.c,107 :: ind = EEPROM_Read(254); + MOVLW 254 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF main_ind+0 +;main.c,108 :: SW = EEPROM_Read(253); + MOVLW 253 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF main_SW+0 +;main.c,109 :: swr_a = EEPROM_Read(252) * 256; + MOVLW 252 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF _swr_a+1 + CLRF _swr_a+0 +;main.c,110 :: swr_a += EEPROM_Read(251); + MOVLW 251 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + ADDWF _swr_a+0, 1 + MOVLW 0 + ADDWFC _swr_a+1, 1 +;main.c,111 :: set_ind(ind); + MOVF main_ind+0, 0 + MOVWF FARG_set_ind_Ind+0 + CALL _set_ind+0 +;main.c,112 :: set_cap(cap); + MOVF main_cap+0, 0 + MOVWF FARG_set_cap_Cap+0 + CALL _set_cap+0 +;main.c,113 :: set_sw(SW); + MOVF main_SW+0, 0 + MOVWF FARG_set_sw_SW+0 + CALL _set_sw+0 +;main.c,114 :: if(Restart==1 ) lcd_prep_short = 1; + MOVF _Restart+0, 0 + XORLW 1 + BTFSS STATUS+0, 2 + GOTO L_main199 + MOVLW 1 + MOVWF _lcd_prep_short+0 +L_main199: +;main.c,115 :: lcd_prep(); + CALL _lcd_prep+0 +;main.c,116 :: } + GOTO L_main200 +L_main198: +;main.c,117 :: else Test_init(); + CALL _test_init+0 +L_main200: +;main.c,119 :: lcd_ind(); + CALL _lcd_ind+0 +;main.c,125 :: while(1) { +L_main201: +;main.c,126 :: asm CLRWDT; + CLRWDT +;main.c,127 :: lcd_pwr(); + CALL _lcd_pwr+0 +;main.c,129 :: if(Test==0) button_proc(); + MOVF _Test+0, 0 + XORLW 0 + BTFSS STATUS+0, 2 + GOTO L_main203 + CALL _button_proc+0 + GOTO L_main204 +L_main203: +;main.c,130 :: else button_proc_test(); + CALL _button_proc_test+0 +L_main204: +;main.c,132 :: if(dysp_cnt!=0) dysp_cnt --; + MOVLW 0 + XORWF _dysp_cnt+1, 0 + BTFSS STATUS+0, 2 + GOTO L__main641 + MOVLW 0 + XORWF _dysp_cnt+0, 0 +L__main641: + BTFSC STATUS+0, 2 + GOTO L_main205 + MOVLW 1 + SUBWF _dysp_cnt+0, 1 + MOVLW 0 + SUBWFB _dysp_cnt+1, 1 + GOTO L_main206 +L_main205: +;main.c,133 :: else if(Test==0 & Dysp_delay!=0) dysp_off(); + MOVF _Test+0, 0 + XORLW 0 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF _Dysp_delay+0, 0 + XORLW 0 + MOVLW 1 + BTFSC STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + ANDWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_main207 + CALL _dysp_off+0 +L_main207: +L_main206: +;main.c,137 :: } + GOTO L_main201 +;main.c,138 :: } +L_end_main: + GOTO $+0 +; end of _main + +_button_proc_test: + +;main.c,143 :: void button_proc_test(void) { +;main.c,144 :: if(Button(&PORTB, 0, 50, 0)){ // Tune btn + MOVLW PORTB+0 + MOVWF FARG_Button_port+0 + MOVLW hi_addr(PORTB+0) + MOVWF FARG_Button_port+1 + CLRF FARG_Button_pin+0 + MOVLW 50 + MOVWF FARG_Button_time_ms+0 + CLRF FARG_Button_active_state+0 + CALL _Button+0 + MOVF R0, 0 + BTFSC STATUS+0, 2 + GOTO L_button_proc_test208 +;main.c,145 :: Delay_ms(250); + MOVLW 6 + MOVWF R11 + MOVLW 19 + MOVWF R12 + MOVLW 173 + MOVWF R13 +L_button_proc_test209: + DECFSZ R13, 1 + GOTO L_button_proc_test209 + DECFSZ R12, 1 + GOTO L_button_proc_test209 + DECFSZ R11, 1 + GOTO L_button_proc_test209 + NOP + NOP +;main.c,146 :: asm CLRWDT; + CLRWDT +;main.c,147 :: if(PORTB.B0==1) { // short press button + BTFSS PORTB+0, 0 + GOTO L_button_proc_test210 +;main.c,148 :: if(SW==0) SW = 1; else SW = 0; + MOVF main_SW+0, 0 + XORLW 0 + BTFSS STATUS+0, 2 + GOTO L_button_proc_test211 + MOVLW 1 + MOVWF main_SW+0 + GOTO L_button_proc_test212 +L_button_proc_test211: + CLRF main_SW+0 +L_button_proc_test212: +;main.c,149 :: set_sw(SW); + MOVF main_SW+0, 0 + MOVWF FARG_set_sw_SW+0 + CALL _set_sw+0 +;main.c,150 :: lcd_ind(); + CALL _lcd_ind+0 +;main.c,151 :: } + GOTO L_button_proc_test213 +L_button_proc_test210: +;main.c,153 :: if(L==1) L = 0; else L = 1; + MOVF _L+0, 0 + XORLW 1 + BTFSS STATUS+0, 2 + GOTO L_button_proc_test214 + CLRF _L+0 + GOTO L_button_proc_test215 +L_button_proc_test214: + MOVLW 1 + MOVWF _L+0 +L_button_proc_test215: +;main.c,154 :: if(L==1) { + MOVF _L+0, 0 + XORLW 1 + BTFSS STATUS+0, 2 + GOTO L_button_proc_test216 +;main.c,155 :: if(type==4 |type==5) // 128*64 OLED + MOVF _type+0, 0 + XORLW 4 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF _type+0, 0 + XORLW 5 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + IORWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_button_proc_test217 +;main.c,156 :: led_wr_str (0, 16+12*8, "l", 1); + CLRF FARG_led_wr_str+0 + MOVLW 112 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr6_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr6_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 1 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 + GOTO L_button_proc_test218 +L_button_proc_test217: +;main.c,157 :: else if(type!=0) // 1602 LCD & 128*32 OLED + MOVF _type+0, 0 + XORLW 0 + BTFSC STATUS+0, 2 + GOTO L_button_proc_test219 +;main.c,158 :: led_wr_str (0, 8, "l", 1); + CLRF FARG_led_wr_str+0 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr7_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr7_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 1 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +L_button_proc_test219: +L_button_proc_test218: +;main.c,159 :: } + GOTO L_button_proc_test220 +L_button_proc_test216: +;main.c,161 :: if(type==4 |type==5) // 128*64 OLED + MOVF _type+0, 0 + XORLW 4 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF _type+0, 0 + XORLW 5 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + IORWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_button_proc_test221 +;main.c,162 :: led_wr_str (0, 16+12*8, "c", 1); + CLRF FARG_led_wr_str+0 + MOVLW 112 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr8_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr8_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 1 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 + GOTO L_button_proc_test222 +L_button_proc_test221: +;main.c,163 :: else if(type!=0) // 1602 LCD & 128*32 OLED + MOVF _type+0, 0 + XORLW 0 + BTFSC STATUS+0, 2 + GOTO L_button_proc_test223 +;main.c,164 :: led_wr_str (0, 8, "c", 1); + CLRF FARG_led_wr_str+0 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr9_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr9_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 1 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +L_button_proc_test223: +L_button_proc_test222: +;main.c,165 :: } +L_button_proc_test220: +;main.c,166 :: } +L_button_proc_test213: +;main.c,167 :: while(Button(&PORTB, 0, 50, 0)) {lcd_pwr(); asm CLRWDT; } +L_button_proc_test224: + MOVLW PORTB+0 + MOVWF FARG_Button_port+0 + MOVLW hi_addr(PORTB+0) + MOVWF FARG_Button_port+1 + CLRF FARG_Button_pin+0 + MOVLW 50 + MOVWF FARG_Button_time_ms+0 + CLRF FARG_Button_active_state+0 + CALL _Button+0 + MOVF R0, 0 + BTFSC STATUS+0, 2 + GOTO L_button_proc_test225 + CALL _lcd_pwr+0 + CLRWDT + GOTO L_button_proc_test224 +L_button_proc_test225: +;main.c,168 :: } // END Tune btn +L_button_proc_test208: +;main.c,170 :: if(Button(&PORTB, 2, 50, 0)){ // BYP button + MOVLW PORTB+0 + MOVWF FARG_Button_port+0 + MOVLW hi_addr(PORTB+0) + MOVWF FARG_Button_port+1 + MOVLW 2 + MOVWF FARG_Button_pin+0 + MOVLW 50 + MOVWF FARG_Button_time_ms+0 + CLRF FARG_Button_active_state+0 + CALL _Button+0 + MOVF R0, 0 + BTFSC STATUS+0, 2 + GOTO L_button_proc_test226 +;main.c,171 :: asm CLRWDT; + CLRWDT +;main.c,172 :: while(PORTB.B2==0) { +L_button_proc_test227: + BTFSC PORTB+0, 2 + GOTO L_button_proc_test228 +;main.c,173 :: if(L & ind<32*L_mult-1) { + MOVLW 5 + MOVWF R2 + MOVF main_L_mult+0, 0 + MOVWF R0 + CLRF R1 + MOVF R2, 0 +L__button_proc_test643: + BTFSC STATUS+0, 2 + GOTO L__button_proc_test644 + LSLF R0, 1 + RLF R1, 1 + ADDLW 255 + GOTO L__button_proc_test643 +L__button_proc_test644: + MOVLW 1 + SUBWF R0, 0 + MOVWF R2 + MOVLW 0 + SUBWFB R1, 0 + MOVWF R3 + MOVLW 128 + MOVWF R0 + MOVLW 128 + XORWF R3, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__button_proc_test645 + MOVF R2, 0 + SUBWF main_ind+0, 0 +L__button_proc_test645: + MOVLW 1 + BTFSC STATUS+0, 0 + MOVLW 0 + MOVWF R0 + MOVF _L+0, 0 + ANDWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_button_proc_test229 +;main.c,174 :: ind ++; + INCF main_ind+0, 1 +;main.c,175 :: set_ind(ind); + MOVF main_ind+0, 0 + MOVWF FARG_set_ind_Ind+0 + CALL _set_ind+0 +;main.c,176 :: } + GOTO L_button_proc_test230 +L_button_proc_test229: +;main.c,177 :: else if(!L & cap<32*L_mult-1) { + MOVF _L+0, 0 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R4 + MOVLW 5 + MOVWF R2 + MOVF main_L_mult+0, 0 + MOVWF R0 + CLRF R1 + MOVF R2, 0 +L__button_proc_test646: + BTFSC STATUS+0, 2 + GOTO L__button_proc_test647 + LSLF R0, 1 + RLF R1, 1 + ADDLW 255 + GOTO L__button_proc_test646 +L__button_proc_test647: + MOVLW 1 + SUBWF R0, 0 + MOVWF R2 + MOVLW 0 + SUBWFB R1, 0 + MOVWF R3 + MOVLW 128 + MOVWF R0 + MOVLW 128 + XORWF R3, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__button_proc_test648 + MOVF R2, 0 + SUBWF main_cap+0, 0 +L__button_proc_test648: + MOVLW 1 + BTFSC STATUS+0, 0 + MOVLW 0 + MOVWF R0 + MOVF R4, 0 + ANDWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_button_proc_test231 +;main.c,178 :: cap ++; + INCF main_cap+0, 1 +;main.c,179 :: set_cap(cap); + MOVF main_cap+0, 0 + MOVWF FARG_set_cap_Cap+0 + CALL _set_cap+0 +;main.c,180 :: } +L_button_proc_test231: +L_button_proc_test230: +;main.c,181 :: lcd_ind(); + CALL _lcd_ind+0 +;main.c,182 :: lcd_pwr(); + CALL _lcd_pwr+0 +;main.c,183 :: Delay_ms(30); + MOVLW 156 + MOVWF R12 + MOVLW 215 + MOVWF R13 +L_button_proc_test232: + DECFSZ R13, 1 + GOTO L_button_proc_test232 + DECFSZ R12, 1 + GOTO L_button_proc_test232 +;main.c,184 :: asm CLRWDT; + CLRWDT +;main.c,185 :: } + GOTO L_button_proc_test227 +L_button_proc_test228: +;main.c,186 :: } // end of BYP button +L_button_proc_test226: +;main.c,188 :: if(Button(&PORTB, 1, 50, 0) & Bypas==0){ // Auto button + MOVLW PORTB+0 + MOVWF FARG_Button_port+0 + MOVLW hi_addr(PORTB+0) + MOVWF FARG_Button_port+1 + MOVLW 1 + MOVWF FARG_Button_pin+0 + MOVLW 50 + MOVWF FARG_Button_time_ms+0 + CLRF FARG_Button_active_state+0 + CALL _Button+0 + MOVF _bypas+0, 0 + XORLW 0 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF R1, 0 + ANDWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_button_proc_test233 +;main.c,189 :: asm CLRWDT; + CLRWDT +;main.c,190 :: while(PORTB.B1==0) { +L_button_proc_test234: + BTFSC PORTB+0, 1 + GOTO L_button_proc_test235 +;main.c,191 :: if(L & ind>0) { + MOVF main_ind+0, 0 + SUBLW 0 + MOVLW 1 + BTFSC STATUS+0, 0 + MOVLW 0 + MOVWF R0 + MOVF _L+0, 0 + ANDWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_button_proc_test236 +;main.c,192 :: ind --; + DECF main_ind+0, 1 +;main.c,193 :: set_ind(ind); + MOVF main_ind+0, 0 + MOVWF FARG_set_ind_Ind+0 + CALL _set_ind+0 +;main.c,194 :: } + GOTO L_button_proc_test237 +L_button_proc_test236: +;main.c,195 :: else if(!L & cap>0) { + MOVF _L+0, 0 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF main_cap+0, 0 + SUBLW 0 + MOVLW 1 + BTFSC STATUS+0, 0 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + ANDWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_button_proc_test238 +;main.c,196 :: cap --; + DECF main_cap+0, 1 +;main.c,197 :: set_cap(cap); + MOVF main_cap+0, 0 + MOVWF FARG_set_cap_Cap+0 + CALL _set_cap+0 +;main.c,198 :: } +L_button_proc_test238: +L_button_proc_test237: +;main.c,199 :: lcd_ind(); + CALL _lcd_ind+0 +;main.c,200 :: lcd_pwr(); + CALL _lcd_pwr+0 +;main.c,201 :: Delay_ms(30); + MOVLW 156 + MOVWF R12 + MOVLW 215 + MOVWF R13 +L_button_proc_test239: + DECFSZ R13, 1 + GOTO L_button_proc_test239 + DECFSZ R12, 1 + GOTO L_button_proc_test239 +;main.c,202 :: asm CLRWDT; + CLRWDT +;main.c,203 :: } + GOTO L_button_proc_test234 +L_button_proc_test235: +;main.c,204 :: } +L_button_proc_test233: +;main.c,205 :: return; +;main.c,206 :: } +L_end_button_proc_test: + RETURN +; end of _button_proc_test + +_button_proc: + +;main.c,209 :: void button_proc(void) { +;main.c,210 :: if(Button(&PORTB, 0, 50, 0) | Soft_tune){ + MOVLW PORTB+0 + MOVWF FARG_Button_port+0 + MOVLW hi_addr(PORTB+0) + MOVWF FARG_Button_port+1 + CLRF FARG_Button_pin+0 + MOVLW 50 + MOVWF FARG_Button_time_ms+0 + CLRF FARG_Button_active_state+0 + CALL _Button+0 + MOVF _Soft_tune+0, 0 + IORWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_button_proc240 +;main.c,211 :: dysp_on(); + CALL _dysp_on+0 +;main.c,212 :: dysp_cnt = Dysp_delay * dysp_cnt_mult; + MOVF _Dysp_delay+0, 0 + MOVWF R0 + CALL _byte2double+0 + MOVF _dysp_cnt_mult+0, 0 + MOVWF R4 + MOVF _dysp_cnt_mult+1, 0 + MOVWF R5 + MOVF _dysp_cnt_mult+2, 0 + MOVWF R6 + MOVF _dysp_cnt_mult+3, 0 + MOVWF R7 + CALL _Mul_32x32_FP+0 + CALL _double2int+0 + MOVF R0, 0 + MOVWF _dysp_cnt+0 + MOVF R1, 0 + MOVWF _dysp_cnt+1 +;main.c,213 :: Delay_ms(250); + MOVLW 6 + MOVWF R11 + MOVLW 19 + MOVWF R12 + MOVLW 173 + MOVWF R13 +L_button_proc241: + DECFSZ R13, 1 + GOTO L_button_proc241 + DECFSZ R12, 1 + GOTO L_button_proc241 + DECFSZ R11, 1 + GOTO L_button_proc241 + NOP + NOP +;main.c,214 :: asm CLRWDT; + CLRWDT +;main.c,215 :: if(Soft_tune == 0 & PORTB.B0==1) { // short press button + MOVF _Soft_tune+0, 0 + XORLW 0 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + BTFSC PORTB+0, 0 + GOTO L__button_proc650 + BCF 3, 0 + GOTO L__button_proc651 +L__button_proc650: + BSF 3, 0 +L__button_proc651: + CLRF R0 + BTFSC 3, 0 + INCF R0, 1 + MOVF R1, 0 + ANDWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_button_proc242 +;main.c,216 :: show_reset(); + CALL _show_reset+0 +;main.c,217 :: bypas =0; + CLRF _bypas+0 +;main.c,218 :: } + GOTO L_button_proc243 +L_button_proc242: +;main.c,220 :: p_Tx = 1; // + BSF LATA7_bit+0, BitPos(LATA7_bit+0) +;main.c,221 :: n_Tx = 0; // TX request + BCF LATA6_bit+0, BitPos(LATA6_bit+0) +;main.c,222 :: Delay_ms(250); // + MOVLW 6 + MOVWF R11 + MOVLW 19 + MOVWF R12 + MOVLW 173 + MOVWF R13 +L_button_proc244: + DECFSZ R13, 1 + GOTO L_button_proc244 + DECFSZ R12, 1 + GOTO L_button_proc244 + DECFSZ R11, 1 + GOTO L_button_proc244 + NOP + NOP +;main.c,223 :: btn_push(); + CALL _btn_push+0 +;main.c,224 :: bypas = 0; + CLRF _bypas+0 +;main.c,225 :: while(Button(&PORTB, 0, 50, 0)) {lcd_pwr(); asm CLRWDT; } +L_button_proc245: + MOVLW PORTB+0 + MOVWF FARG_Button_port+0 + MOVLW hi_addr(PORTB+0) + MOVWF FARG_Button_port+1 + CLRF FARG_Button_pin+0 + MOVLW 50 + MOVWF FARG_Button_time_ms+0 + CLRF FARG_Button_active_state+0 + CALL _Button+0 + MOVF R0, 0 + BTFSC STATUS+0, 2 + GOTO L_button_proc246 + CALL _lcd_pwr+0 + CLRWDT + GOTO L_button_proc245 +L_button_proc246: +;main.c,226 :: Soft_tune = 0; + CLRF _Soft_tune+0 +;main.c,227 :: } +L_button_proc243: +;main.c,228 :: } +L_button_proc240: +;main.c,230 :: if(Button(&PORTB, 2, 50, 0)){ // BYP button + MOVLW PORTB+0 + MOVWF FARG_Button_port+0 + MOVLW hi_addr(PORTB+0) + MOVWF FARG_Button_port+1 + MOVLW 2 + MOVWF FARG_Button_pin+0 + MOVLW 50 + MOVWF FARG_Button_time_ms+0 + CLRF FARG_Button_active_state+0 + CALL _Button+0 + MOVF R0, 0 + BTFSC STATUS+0, 2 + GOTO L_button_proc247 +;main.c,231 :: dysp_on(); + CALL _dysp_on+0 +;main.c,232 :: dysp_cnt = Dysp_delay * dysp_cnt_mult; + MOVF _Dysp_delay+0, 0 + MOVWF R0 + CALL _byte2double+0 + MOVF _dysp_cnt_mult+0, 0 + MOVWF R4 + MOVF _dysp_cnt_mult+1, 0 + MOVWF R5 + MOVF _dysp_cnt_mult+2, 0 + MOVWF R6 + MOVF _dysp_cnt_mult+3, 0 + MOVWF R7 + CALL _Mul_32x32_FP+0 + CALL _double2int+0 + MOVF R0, 0 + MOVWF _dysp_cnt+0 + MOVF R1, 0 + MOVWF _dysp_cnt+1 +;main.c,233 :: asm CLRWDT; + CLRWDT +;main.c,234 :: if(bypas == 0) { + MOVF _bypas+0, 0 + XORLW 0 + BTFSS STATUS+0, 2 + GOTO L_button_proc248 +;main.c,235 :: bypas = 1; + MOVLW 1 + MOVWF _bypas+0 +;main.c,236 :: cap_mem = cap; + MOVF main_cap+0, 0 + MOVWF _cap_mem+0 +;main.c,237 :: ind_mem = ind; + MOVF main_ind+0, 0 + MOVWF _ind_mem+0 +;main.c,238 :: SW_mem = SW; + MOVF main_SW+0, 0 + MOVWF _SW_mem+0 +;main.c,239 :: cap = 0; + CLRF main_cap+0 +;main.c,240 :: ind = 0; + CLRF main_ind+0 +;main.c,241 :: SW = 1; + MOVLW 1 + MOVWF main_SW+0 +;main.c,242 :: set_ind(ind); + CLRF FARG_set_ind_Ind+0 + CALL _set_ind+0 +;main.c,243 :: set_cap(cap); + MOVF main_cap+0, 0 + MOVWF FARG_set_cap_Cap+0 + CALL _set_cap+0 +;main.c,244 :: set_SW(SW); + MOVF main_SW+0, 0 + MOVWF FARG_set_sw_SW+0 + CALL _set_sw+0 +;main.c,245 :: if(Loss_mode==0) lcd_ind(); + MOVF _Loss_mode+0, 0 + XORLW 0 + BTFSS STATUS+0, 2 + GOTO L_button_proc249 + CALL _lcd_ind+0 +L_button_proc249: +;main.c,246 :: Auto_mem = Auto; + MOVF _Auto+0, 0 + MOVWF _Auto_mem+0 +;main.c,247 :: Auto = 0; + CLRF _Auto+0 +;main.c,248 :: } + GOTO L_button_proc250 +L_button_proc248: +;main.c,250 :: bypas = 0; + CLRF _bypas+0 +;main.c,251 :: cap = cap_mem; + MOVF _cap_mem+0, 0 + MOVWF main_cap+0 +;main.c,252 :: ind = ind_mem; + MOVF _ind_mem+0, 0 + MOVWF main_ind+0 +;main.c,253 :: SW = SW_mem; + MOVF _SW_mem+0, 0 + MOVWF main_SW+0 +;main.c,254 :: set_cap(cap); + MOVF _cap_mem+0, 0 + MOVWF FARG_set_cap_Cap+0 + CALL _set_cap+0 +;main.c,255 :: set_ind(ind); + MOVF main_ind+0, 0 + MOVWF FARG_set_ind_Ind+0 + CALL _set_ind+0 +;main.c,256 :: set_SW(SW); + MOVF main_SW+0, 0 + MOVWF FARG_set_sw_SW+0 + CALL _set_sw+0 +;main.c,257 :: if(Loss_mode==0) lcd_ind(); + MOVF _Loss_mode+0, 0 + XORLW 0 + BTFSS STATUS+0, 2 + GOTO L_button_proc251 + CALL _lcd_ind+0 +L_button_proc251: +;main.c,258 :: Auto = Auto_mem; + MOVF _Auto_mem+0, 0 + MOVWF _Auto+0 +;main.c,259 :: } +L_button_proc250: +;main.c,260 :: if(type==4 | type==5) { // 128*64 OLED + MOVF _type+0, 0 + XORLW 4 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF _type+0, 0 + XORLW 5 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + IORWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_button_proc252 +;main.c,261 :: if(Auto & !Bypas) led_wr_str (0, 16+8*12, ".", 1); + MOVF _bypas+0, 0 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF _Auto+0, 0 + ANDWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_button_proc253 + CLRF FARG_led_wr_str+0 + MOVLW 112 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr10_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr10_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 1 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 + GOTO L_button_proc254 +L_button_proc253: +;main.c,262 :: else if(!Auto & Bypas) led_wr_str (0, 16+8*12, "_", 1); + MOVF _Auto+0, 0 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF _bypas+0, 0 + ANDWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_button_proc255 + CLRF FARG_led_wr_str+0 + MOVLW 112 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr11_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr11_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 1 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 + GOTO L_button_proc256 +L_button_proc255: +;main.c,263 :: else led_wr_str (0, 16+8*12, " ", 1); + CLRF FARG_led_wr_str+0 + MOVLW 112 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr12_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr12_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 1 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +L_button_proc256: +L_button_proc254: +;main.c,264 :: } + GOTO L_button_proc257 +L_button_proc252: +;main.c,265 :: else if(type!=0) { // 1602 LCD or 128*32 OLED + MOVF _type+0, 0 + XORLW 0 + BTFSC STATUS+0, 2 + GOTO L_button_proc258 +;main.c,266 :: if(Auto & !Bypas) led_wr_str (0, 8, ".", 1); + MOVF _bypas+0, 0 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF _Auto+0, 0 + ANDWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_button_proc259 + CLRF FARG_led_wr_str+0 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr13_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr13_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 1 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 + GOTO L_button_proc260 +L_button_proc259: +;main.c,267 :: else if(!Auto & Bypas) led_wr_str (0, 8, "_", 1); + MOVF _Auto+0, 0 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF _bypas+0, 0 + ANDWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_button_proc261 + CLRF FARG_led_wr_str+0 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr14_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr14_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 1 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 + GOTO L_button_proc262 +L_button_proc261: +;main.c,268 :: else led_wr_str (0, 8, " ", 1); + CLRF FARG_led_wr_str+0 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr15_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr15_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 1 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +L_button_proc262: +L_button_proc260: +;main.c,269 :: } +L_button_proc258: +L_button_proc257: +;main.c,270 :: asm CLRWDT; + CLRWDT +;main.c,271 :: while(Button(&PORTB, 2, 50, 0)) {lcd_pwr(); asm CLRWDT; } +L_button_proc263: + MOVLW PORTB+0 + MOVWF FARG_Button_port+0 + MOVLW hi_addr(PORTB+0) + MOVWF FARG_Button_port+1 + MOVLW 2 + MOVWF FARG_Button_pin+0 + MOVLW 50 + MOVWF FARG_Button_time_ms+0 + CLRF FARG_Button_active_state+0 + CALL _Button+0 + MOVF R0, 0 + BTFSC STATUS+0, 2 + GOTO L_button_proc264 + CALL _lcd_pwr+0 + CLRWDT + GOTO L_button_proc263 +L_button_proc264: +;main.c,272 :: } +L_button_proc247: +;main.c,274 :: if(Button(&PORTB, 1, 50, 0) & Bypas==0){ // Auto button + MOVLW PORTB+0 + MOVWF FARG_Button_port+0 + MOVLW hi_addr(PORTB+0) + MOVWF FARG_Button_port+1 + MOVLW 1 + MOVWF FARG_Button_pin+0 + MOVLW 50 + MOVWF FARG_Button_time_ms+0 + CLRF FARG_Button_active_state+0 + CALL _Button+0 + MOVF _bypas+0, 0 + XORLW 0 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF R1, 0 + ANDWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_button_proc265 +;main.c,275 :: dysp_on(); + CALL _dysp_on+0 +;main.c,276 :: dysp_cnt = Dysp_delay * dysp_cnt_mult; + MOVF _Dysp_delay+0, 0 + MOVWF R0 + CALL _byte2double+0 + MOVF _dysp_cnt_mult+0, 0 + MOVWF R4 + MOVF _dysp_cnt_mult+1, 0 + MOVWF R5 + MOVF _dysp_cnt_mult+2, 0 + MOVWF R6 + MOVF _dysp_cnt_mult+3, 0 + MOVWF R7 + CALL _Mul_32x32_FP+0 + CALL _double2int+0 + MOVF R0, 0 + MOVWF _dysp_cnt+0 + MOVF R1, 0 + MOVWF _dysp_cnt+1 +;main.c,277 :: asm CLRWDT; + CLRWDT +;main.c,278 :: if(Auto == 0) Auto = 1; + MOVF _Auto+0, 0 + XORLW 0 + BTFSS STATUS+0, 2 + GOTO L_button_proc266 + MOVLW 1 + MOVWF _Auto+0 + GOTO L_button_proc267 +L_button_proc266: +;main.c,279 :: else Auto = 0; + CLRF _Auto+0 +L_button_proc267: +;main.c,280 :: EEPROM_Write(2, Auto); + MOVLW 2 + MOVWF FARG_EEPROM_Write_Address+0 + MOVF _Auto+0, 0 + MOVWF FARG_EEPROM_Write_data_+0 + CALL _EEPROM_Write+0 +;main.c,281 :: if(type==4 | type==5) { // 128*64 OLED + MOVF _type+0, 0 + XORLW 4 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF _type+0, 0 + XORLW 5 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + IORWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_button_proc268 +;main.c,282 :: if(Auto & !Bypas) led_wr_str (0, 16+8*12, ".", 1); + MOVF _bypas+0, 0 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF _Auto+0, 0 + ANDWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_button_proc269 + CLRF FARG_led_wr_str+0 + MOVLW 112 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr16_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr16_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 1 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 + GOTO L_button_proc270 +L_button_proc269: +;main.c,283 :: else if(!Auto & Bypas) led_wr_str (0, 16+8*12, "_", 1); + MOVF _Auto+0, 0 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF _bypas+0, 0 + ANDWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_button_proc271 + CLRF FARG_led_wr_str+0 + MOVLW 112 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr17_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr17_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 1 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 + GOTO L_button_proc272 +L_button_proc271: +;main.c,284 :: else led_wr_str (0, 16+8*12, " ", 1); + CLRF FARG_led_wr_str+0 + MOVLW 112 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr18_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr18_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 1 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +L_button_proc272: +L_button_proc270: +;main.c,285 :: } + GOTO L_button_proc273 +L_button_proc268: +;main.c,286 :: else if(type!=0) { // 1602 LCD or 128*32 OLED + MOVF _type+0, 0 + XORLW 0 + BTFSC STATUS+0, 2 + GOTO L_button_proc274 +;main.c,287 :: if(Auto & !Bypas) led_wr_str (0, 8, ".", 1); + MOVF _bypas+0, 0 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF _Auto+0, 0 + ANDWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_button_proc275 + CLRF FARG_led_wr_str+0 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr19_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr19_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 1 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 + GOTO L_button_proc276 +L_button_proc275: +;main.c,288 :: else if(!Auto & Bypas) led_wr_str (0, 8, "_", 1); + MOVF _Auto+0, 0 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF _bypas+0, 0 + ANDWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_button_proc277 + CLRF FARG_led_wr_str+0 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr20_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr20_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 1 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 + GOTO L_button_proc278 +L_button_proc277: +;main.c,289 :: else led_wr_str (0, 8, " ", 1); + CLRF FARG_led_wr_str+0 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr21_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr21_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 1 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +L_button_proc278: +L_button_proc276: +;main.c,290 :: } +L_button_proc274: +L_button_proc273: +;main.c,291 :: asm CLRWDT; + CLRWDT +;main.c,292 :: while(Button(&PORTB, 1, 50, 0)) {lcd_pwr(); asm CLRWDT; } +L_button_proc279: + MOVLW PORTB+0 + MOVWF FARG_Button_port+0 + MOVLW hi_addr(PORTB+0) + MOVWF FARG_Button_port+1 + MOVLW 1 + MOVWF FARG_Button_pin+0 + MOVLW 50 + MOVWF FARG_Button_time_ms+0 + CLRF FARG_Button_active_state+0 + CALL _Button+0 + MOVF R0, 0 + BTFSC STATUS+0, 2 + GOTO L_button_proc280 + CALL _lcd_pwr+0 + CLRWDT + GOTO L_button_proc279 +L_button_proc280: +;main.c,293 :: } +L_button_proc265: +;main.c,294 :: return; +;main.c,295 :: } +L_end_button_proc: + RETURN +; end of _button_proc + +_show_reset: + +;main.c,297 :: void show_reset() { +;main.c,298 :: atu_reset(); + CALL _atu_reset+0 +;main.c,299 :: SW = 1; + MOVLW 1 + MOVWF main_SW+0 +;main.c,300 :: set_sw(SW); + MOVLW 1 + MOVWF FARG_set_sw_SW+0 + CALL _set_sw+0 +;main.c,301 :: EEPROM_Write(255, 0); + MOVLW 255 + MOVWF FARG_EEPROM_Write_Address+0 + CLRF FARG_EEPROM_Write_data_+0 + CALL _EEPROM_Write+0 +;main.c,302 :: EEPROM_Write(254, 0); + MOVLW 254 + MOVWF FARG_EEPROM_Write_Address+0 + CLRF FARG_EEPROM_Write_data_+0 + CALL _EEPROM_Write+0 +;main.c,303 :: EEPROM_Write(253, 1); + MOVLW 253 + MOVWF FARG_EEPROM_Write_Address+0 + MOVLW 1 + MOVWF FARG_EEPROM_Write_data_+0 + CALL _EEPROM_Write+0 +;main.c,304 :: EEPROM_Write(252, 0); + MOVLW 252 + MOVWF FARG_EEPROM_Write_Address+0 + CLRF FARG_EEPROM_Write_data_+0 + CALL _EEPROM_Write+0 +;main.c,305 :: EEPROM_Write(251, 0); + MOVLW 251 + MOVWF FARG_EEPROM_Write_Address+0 + CLRF FARG_EEPROM_Write_data_+0 + CALL _EEPROM_Write+0 +;main.c,306 :: lcd_ind(); + CALL _lcd_ind+0 +;main.c,307 :: Loss_mode = 0; + CLRF _Loss_mode+0 +;main.c,308 :: p_Tx = 0; + BCF LATA7_bit+0, BitPos(LATA7_bit+0) +;main.c,309 :: n_Tx = 1; + BSF LATA6_bit+0, BitPos(LATA6_bit+0) +;main.c,310 :: SWR = 0; + CLRF _SWR+0 + CLRF _SWR+1 +;main.c,311 :: PWR = 0; + CLRF _PWR+0 + CLRF _PWR+1 +;main.c,312 :: SWR_fixed_old = 0; + CLRF _SWR_fixed_old+0 + CLRF _SWR_fixed_old+1 +;main.c,313 :: if(type==4 | type==5) { // 128*64 OLED + MOVF _type+0, 0 + XORLW 4 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF _type+0, 0 + XORLW 5 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + IORWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_show_reset281 +;main.c,314 :: led_wr_str (2, 16, "RESET ", 8); + MOVLW 2 + MOVWF FARG_led_wr_str+0 + MOVLW 16 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr22_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr22_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,315 :: asm CLRWDT; + CLRWDT +;main.c,316 :: delay_ms(600); + MOVLW 13 + MOVWF R11 + MOVLW 45 + MOVWF R12 + MOVLW 215 + MOVWF R13 +L_show_reset282: + DECFSZ R13, 1 + GOTO L_show_reset282 + DECFSZ R12, 1 + GOTO L_show_reset282 + DECFSZ R11, 1 + GOTO L_show_reset282 + NOP + NOP +;main.c,317 :: led_wr_str (2, 16, "SWR=0.00", 8); + MOVLW 2 + MOVWF FARG_led_wr_str+0 + MOVLW 16 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr23_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr23_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,318 :: asm CLRWDT; + CLRWDT +;main.c,319 :: } + GOTO L_show_reset283 +L_show_reset281: +;main.c,320 :: else if(type!=0) {// 1602 LCD & 128*32 OLED + MOVF _type+0, 0 + XORLW 0 + BTFSC STATUS+0, 2 + GOTO L_show_reset284 +;main.c,321 :: led_wr_str (1, 0, "RESET ", 8); + MOVLW 1 + MOVWF FARG_led_wr_str+0 + CLRF FARG_led_wr_str+0 + MOVLW ?lstr24_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr24_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,322 :: asm CLRWDT; + CLRWDT +;main.c,323 :: delay_ms(600); + MOVLW 13 + MOVWF R11 + MOVLW 45 + MOVWF R12 + MOVLW 215 + MOVWF R13 +L_show_reset285: + DECFSZ R13, 1 + GOTO L_show_reset285 + DECFSZ R12, 1 + GOTO L_show_reset285 + DECFSZ R11, 1 + GOTO L_show_reset285 + NOP + NOP +;main.c,324 :: led_wr_str (1, 0, "SWR=0.00", 8); + MOVLW 1 + MOVWF FARG_led_wr_str+0 + CLRF FARG_led_wr_str+0 + MOVLW ?lstr25_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr25_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,325 :: asm CLRWDT; + CLRWDT +;main.c,326 :: } + GOTO L_show_reset286 +L_show_reset284: +;main.c,328 :: LATB.B6 = 1; + BSF LATB+0, 6 +;main.c,329 :: LATB.B7 = 1; + BSF LATB+0, 7 +;main.c,330 :: } +L_show_reset286: +L_show_reset283: +;main.c,331 :: SWR_old = 10000; + MOVLW 16 + MOVWF _SWR_old+0 + MOVLW 39 + MOVWF _SWR_old+1 +;main.c,332 :: Power_old = 10000; + MOVLW 16 + MOVWF _Power_old+0 + MOVLW 39 + MOVWF _Power_old+1 +;main.c,333 :: lcd_pwr(); + CALL _lcd_pwr+0 +;main.c,334 :: return; +;main.c,335 :: } +L_end_show_reset: + RETURN +; end of _show_reset + +_btn_push: + +;main.c,337 :: void btn_push() { +;main.c,338 :: asm CLRWDT; + CLRWDT +;main.c,339 :: if(type==4 | type==5) { // 128*64 OLED + MOVF _type+0, 0 + XORLW 4 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF _type+0, 0 + XORLW 5 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + IORWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_btn_push287 +;main.c,340 :: led_wr_str (2, 16+12*4, "TUNE", 4); + MOVLW 2 + MOVWF FARG_led_wr_str+0 + MOVLW 64 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr26_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr26_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 4 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,341 :: } + GOTO L_btn_push288 +L_btn_push287: +;main.c,342 :: else if(type!=0) { // 1602 LCD & 128*32 OLED + MOVF _type+0, 0 + XORLW 0 + BTFSC STATUS+0, 2 + GOTO L_btn_push289 +;main.c,343 :: led_wr_str (1, 4, "TUNE", 4); + MOVLW 1 + MOVWF FARG_led_wr_str+0 + MOVLW 4 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr27_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr27_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 4 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,344 :: } + GOTO L_btn_push290 +L_btn_push289: +;main.c,346 :: LATB.B6 = 1; + BSF LATB+0, 6 +;main.c,347 :: LATB.B7 = 1; + BSF LATB+0, 7 +;main.c,348 :: } +L_btn_push290: +L_btn_push288: +;main.c,349 :: tune(); + CALL _tune+0 +;main.c,350 :: if(type==0) { // real-time 2-colors led work + MOVF _type+0, 0 + XORLW 0 + BTFSS STATUS+0, 2 + GOTO L_btn_push291 +;main.c,351 :: if(swr<=150) { LATB.B6 = 0; LATB.B7 = 1; } // Green + MOVLW 128 + MOVWF R0 + MOVLW 128 + XORWF _SWR+1, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__btn_push654 + MOVF _SWR+0, 0 + SUBLW 150 +L__btn_push654: + BTFSS STATUS+0, 0 + GOTO L_btn_push292 + BCF LATB+0, 6 + BSF LATB+0, 7 + GOTO L_btn_push293 +L_btn_push292: +;main.c,352 :: else if(swr<=250) {PORTB.B6 = 0; PORTB.B7 = 0;} // Orange + MOVLW 128 + MOVWF R0 + MOVLW 128 + XORWF _SWR+1, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__btn_push655 + MOVF _SWR+0, 0 + SUBLW 250 +L__btn_push655: + BTFSS STATUS+0, 0 + GOTO L_btn_push294 + BCF PORTB+0, 6 + BCF PORTB+0, 7 + GOTO L_btn_push295 +L_btn_push294: +;main.c,353 :: else { PORTB.B6 = 1; PORTB.B7 = 0; } // Red + BSF PORTB+0, 6 + BCF PORTB+0, 7 +L_btn_push295: +L_btn_push293: +;main.c,354 :: } + GOTO L_btn_push296 +L_btn_push291: +;main.c,355 :: else if(Loss_mode==0 | Loss_ind==0) lcd_ind(); + MOVF _Loss_mode+0, 0 + XORLW 0 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF main_Loss_ind+0, 0 + XORLW 0 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + IORWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_btn_push297 + CALL _lcd_ind+0 +L_btn_push297: +L_btn_push296: +;main.c,356 :: EEPROM_Write(255, cap); + MOVLW 255 + MOVWF FARG_EEPROM_Write_Address+0 + MOVF main_cap+0, 0 + MOVWF FARG_EEPROM_Write_data_+0 + CALL _EEPROM_Write+0 +;main.c,357 :: EEPROM_Write(254, ind); + MOVLW 254 + MOVWF FARG_EEPROM_Write_Address+0 + MOVF main_ind+0, 0 + MOVWF FARG_EEPROM_Write_data_+0 + CALL _EEPROM_Write+0 +;main.c,358 :: EEPROM_Write(253, SW); + MOVLW 253 + MOVWF FARG_EEPROM_Write_Address+0 + MOVF main_SW+0, 0 + MOVWF FARG_EEPROM_Write_data_+0 + CALL _EEPROM_Write+0 +;main.c,359 :: EEPROM_Write(252, swr_a/256); + MOVLW 252 + MOVWF FARG_EEPROM_Write_Address+0 + MOVLW 0 + MOVWF R4 + MOVLW 1 + MOVWF R5 + MOVF _swr_a+0, 0 + MOVWF R0 + MOVF _swr_a+1, 0 + MOVWF R1 + CALL _Div_16x16_S+0 + MOVF R0, 0 + MOVWF FARG_EEPROM_Write_data_+0 + CALL _EEPROM_Write+0 +;main.c,360 :: EEPROM_Write(251, swr_a%256); + MOVLW 251 + MOVWF FARG_EEPROM_Write_Address+0 + MOVLW 0 + MOVWF R4 + MOVLW 1 + MOVWF R5 + MOVF _swr_a+0, 0 + MOVWF R0 + MOVF _swr_a+1, 0 + MOVWF R1 + CALL _Div_16x16_S+0 + MOVF R8, 0 + MOVWF R0 + MOVF R9, 0 + MOVWF R1 + MOVF R0, 0 + MOVWF FARG_EEPROM_Write_data_+0 + CALL _EEPROM_Write+0 +;main.c,361 :: SWR_old = 10000; + MOVLW 16 + MOVWF _SWR_old+0 + MOVLW 39 + MOVWF _SWR_old+1 +;main.c,362 :: Power_old = 10000; + MOVLW 16 + MOVWF _Power_old+0 + MOVLW 39 + MOVWF _Power_old+1 +;main.c,363 :: lcd_pwr(); + CALL _lcd_pwr+0 +;main.c,364 :: SWR_fixed_old = SWR; + MOVF _SWR+0, 0 + MOVWF _SWR_fixed_old+0 + MOVF _SWR+1, 0 + MOVWF _SWR_fixed_old+1 +;main.c,365 :: p_Tx = 0; + BCF LATA7_bit+0, BitPos(LATA7_bit+0) +;main.c,366 :: n_Tx = 1; + BSF LATA6_bit+0, BitPos(LATA6_bit+0) +;main.c,367 :: asm CLRWDT; + CLRWDT +;main.c,368 :: return; +;main.c,369 :: } +L_end_btn_push: + RETURN +; end of _btn_push + +_lcd_prep: + +;main.c,372 :: void lcd_prep() { +;main.c,373 :: asm CLRWDT; + CLRWDT +;main.c,374 :: if(type==4 |type==5){ // 128*64 OLED + MOVF _type+0, 0 + XORLW 4 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF _type+0, 0 + XORLW 5 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + IORWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_lcd_prep298 +;main.c,375 :: if(lcd_prep_short==0) { + MOVF _lcd_prep_short+0, 0 + XORLW 0 + BTFSS STATUS+0, 2 + GOTO L_lcd_prep299 +;main.c,376 :: led_wr_str (0, 22, "ATU-100", 7); + CLRF FARG_led_wr_str+0 + MOVLW 22 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr28_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr28_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 7 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,377 :: led_wr_str (2, 6, "EXT board", 9); + MOVLW 2 + MOVWF FARG_led_wr_str+0 + MOVLW 6 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr29_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr29_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 9 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,378 :: led_wr_str (4, 16, "by N7DDC", 8); + MOVLW 4 + MOVWF FARG_led_wr_str+0 + MOVLW 16 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr30_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr30_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,379 :: led_wr_str (6, 4, "FW ver 3.1", 10); + MOVLW 6 + MOVWF FARG_led_wr_str+0 + MOVLW 4 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr31_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr31_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 10 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,380 :: asm CLRWDT; + CLRWDT +;main.c,381 :: Delay_ms(600); + MOVLW 13 + MOVWF R11 + MOVLW 45 + MOVWF R12 + MOVLW 215 + MOVWF R13 +L_lcd_prep300: + DECFSZ R13, 1 + GOTO L_lcd_prep300 + DECFSZ R12, 1 + GOTO L_lcd_prep300 + DECFSZ R11, 1 + GOTO L_lcd_prep300 + NOP + NOP +;main.c,382 :: asm CLRWDT; + CLRWDT +;main.c,383 :: Delay_ms(500); + MOVLW 11 + MOVWF R11 + MOVLW 38 + MOVWF R12 + MOVLW 93 + MOVWF R13 +L_lcd_prep301: + DECFSZ R13, 1 + GOTO L_lcd_prep301 + DECFSZ R12, 1 + GOTO L_lcd_prep301 + DECFSZ R11, 1 + GOTO L_lcd_prep301 + NOP + NOP +;main.c,384 :: asm CLRWDT; + CLRWDT +;main.c,385 :: led_wr_str (0, 16, " ", 8); + CLRF FARG_led_wr_str+0 + MOVLW 16 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr32_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr32_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,386 :: led_wr_str (2, 4, " ", 10); + MOVLW 2 + MOVWF FARG_led_wr_str+0 + MOVLW 4 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr33_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr33_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 10 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,387 :: led_wr_str (4, 16, " ", 8); + MOVLW 4 + MOVWF FARG_led_wr_str+0 + MOVLW 16 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr34_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr34_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,388 :: led_wr_str (6, 4, " ", 10); + MOVLW 6 + MOVWF FARG_led_wr_str+0 + MOVLW 4 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr35_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr35_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 10 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,389 :: } +L_lcd_prep299: +;main.c,390 :: Delay_ms(150); + MOVLW 4 + MOVWF R11 + MOVLW 12 + MOVWF R12 + MOVLW 51 + MOVWF R13 +L_lcd_prep302: + DECFSZ R13, 1 + GOTO L_lcd_prep302 + DECFSZ R12, 1 + GOTO L_lcd_prep302 + DECFSZ R11, 1 + GOTO L_lcd_prep302 + NOP + NOP +;main.c,391 :: if(P_High==1) led_wr_str (0, 16, "PWR= 0W", 8); + MOVF main_P_High+0, 0 + XORLW 1 + BTFSS STATUS+0, 2 + GOTO L_lcd_prep303 + CLRF FARG_led_wr_str+0 + MOVLW 16 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr36_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr36_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 + GOTO L_lcd_prep304 +L_lcd_prep303: +;main.c,392 :: else led_wr_str (0, 16, "PWR=0.0W", 8); + CLRF FARG_led_wr_str+0 + MOVLW 16 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr37_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr37_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +L_lcd_prep304: +;main.c,393 :: led_wr_str (2, 16, "SWR=0.00", 8); + MOVLW 2 + MOVWF FARG_led_wr_str+0 + MOVLW 16 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr38_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr38_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,394 :: if(Auto) led_wr_str (0, 16+8*12, ".", 1); + MOVF _Auto+0, 0 + BTFSC STATUS+0, 2 + GOTO L_lcd_prep305 + CLRF FARG_led_wr_str+0 + MOVLW 112 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr39_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr39_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 1 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +L_lcd_prep305: +;main.c,395 :: } + GOTO L_lcd_prep306 +L_lcd_prep298: +;main.c,396 :: else if(type!=0) { // 1602 LCD & 128*32 OLED + MOVF _type+0, 0 + XORLW 0 + BTFSC STATUS+0, 2 + GOTO L_lcd_prep307 +;main.c,397 :: if(lcd_prep_short==0) { + MOVF _lcd_prep_short+0, 0 + XORLW 0 + BTFSS STATUS+0, 2 + GOTO L_lcd_prep308 +;main.c,398 :: led_wr_str (0, 4, "ATU-100", 7); + CLRF FARG_led_wr_str+0 + MOVLW 4 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr40_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr40_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 7 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,399 :: led_wr_str (1, 3, "EXT board", 9); + MOVLW 1 + MOVWF FARG_led_wr_str+0 + MOVLW 3 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr41_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr41_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 9 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,400 :: asm CLRWDT; + CLRWDT +;main.c,401 :: Delay_ms(700); + MOVLW 15 + MOVWF R11 + MOVLW 53 + MOVWF R12 + MOVLW 81 + MOVWF R13 +L_lcd_prep309: + DECFSZ R13, 1 + GOTO L_lcd_prep309 + DECFSZ R12, 1 + GOTO L_lcd_prep309 + DECFSZ R11, 1 + GOTO L_lcd_prep309 +;main.c,402 :: asm CLRWDT; + CLRWDT +;main.c,403 :: Delay_ms(500); + MOVLW 11 + MOVWF R11 + MOVLW 38 + MOVWF R12 + MOVLW 93 + MOVWF R13 +L_lcd_prep310: + DECFSZ R13, 1 + GOTO L_lcd_prep310 + DECFSZ R12, 1 + GOTO L_lcd_prep310 + DECFSZ R11, 1 + GOTO L_lcd_prep310 + NOP + NOP +;main.c,404 :: asm CLRWDT; + CLRWDT +;main.c,405 :: led_wr_str (0, 4, "by N7DDC", 8); + CLRF FARG_led_wr_str+0 + MOVLW 4 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr42_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr42_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,406 :: led_wr_str (1, 3, "FW ver 3.1", 10); + MOVLW 1 + MOVWF FARG_led_wr_str+0 + MOVLW 3 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr43_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr43_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 10 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,407 :: asm CLRWDT; + CLRWDT +;main.c,408 :: Delay_ms(600); + MOVLW 13 + MOVWF R11 + MOVLW 45 + MOVWF R12 + MOVLW 215 + MOVWF R13 +L_lcd_prep311: + DECFSZ R13, 1 + GOTO L_lcd_prep311 + DECFSZ R12, 1 + GOTO L_lcd_prep311 + DECFSZ R11, 1 + GOTO L_lcd_prep311 + NOP + NOP +;main.c,409 :: asm CLRWDT; + CLRWDT +;main.c,410 :: Delay_ms(500); + MOVLW 11 + MOVWF R11 + MOVLW 38 + MOVWF R12 + MOVLW 93 + MOVWF R13 +L_lcd_prep312: + DECFSZ R13, 1 + GOTO L_lcd_prep312 + DECFSZ R12, 1 + GOTO L_lcd_prep312 + DECFSZ R11, 1 + GOTO L_lcd_prep312 + NOP + NOP +;main.c,411 :: asm CLRWDT; + CLRWDT +;main.c,412 :: led_wr_str (0, 4, " ", 8); + CLRF FARG_led_wr_str+0 + MOVLW 4 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr44_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr44_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,413 :: led_wr_str (1, 3, " ", 10); + MOVLW 1 + MOVWF FARG_led_wr_str+0 + MOVLW 3 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr45_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr45_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 10 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,414 :: } +L_lcd_prep308: +;main.c,415 :: Delay_ms(150); + MOVLW 4 + MOVWF R11 + MOVLW 12 + MOVWF R12 + MOVLW 51 + MOVWF R13 +L_lcd_prep313: + DECFSZ R13, 1 + GOTO L_lcd_prep313 + DECFSZ R12, 1 + GOTO L_lcd_prep313 + DECFSZ R11, 1 + GOTO L_lcd_prep313 + NOP + NOP +;main.c,416 :: if(P_High==1) led_wr_str (0, 0, "PWR= 0W", 8); + MOVF main_P_High+0, 0 + XORLW 1 + BTFSS STATUS+0, 2 + GOTO L_lcd_prep314 + CLRF FARG_led_wr_str+0 + CLRF FARG_led_wr_str+0 + MOVLW ?lstr46_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr46_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 + GOTO L_lcd_prep315 +L_lcd_prep314: +;main.c,417 :: else led_wr_str (0, 0, "PWR=0.0W", 8); + CLRF FARG_led_wr_str+0 + CLRF FARG_led_wr_str+0 + MOVLW ?lstr47_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr47_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +L_lcd_prep315: +;main.c,418 :: led_wr_str (1, 0, "SWR=0.00", 8); + MOVLW 1 + MOVWF FARG_led_wr_str+0 + CLRF FARG_led_wr_str+0 + MOVLW ?lstr48_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr48_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,419 :: if(Auto) led_wr_str (0, 8, ".", 1); + MOVF _Auto+0, 0 + BTFSC STATUS+0, 2 + GOTO L_lcd_prep316 + CLRF FARG_led_wr_str+0 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr49_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr49_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 1 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +L_lcd_prep316: +;main.c,420 :: } +L_lcd_prep307: +L_lcd_prep306: +;main.c,421 :: asm CLRWDT; + CLRWDT +;main.c,422 :: lcd_ind(); + CALL _lcd_ind+0 +;main.c,423 :: return; +;main.c,424 :: } +L_end_lcd_prep: + RETURN +; end of _lcd_prep + +_lcd_swr: + +;main.c,427 :: void lcd_swr(int swr) { +;main.c,428 :: asm CLRWDT; + CLRWDT +;main.c,429 :: if(swr!=SWR_old) { + MOVF FARG_lcd_swr_swr+1, 0 + XORWF _SWR_old+1, 0 + BTFSS STATUS+0, 2 + GOTO L__lcd_swr658 + MOVF _SWR_old+0, 0 + XORWF FARG_lcd_swr_swr+0, 0 +L__lcd_swr658: + BTFSC STATUS+0, 2 + GOTO L_lcd_swr317 +;main.c,430 :: SWR_old = swr; + MOVF FARG_lcd_swr_swr+0, 0 + MOVWF _SWR_old+0 + MOVF FARG_lcd_swr_swr+1, 0 + MOVWF _SWR_old+1 +;main.c,431 :: if(swr==1) { // Low power + MOVLW 0 + XORWF FARG_lcd_swr_swr+1, 0 + BTFSS STATUS+0, 2 + GOTO L__lcd_swr659 + MOVLW 1 + XORWF FARG_lcd_swr_swr+0, 0 +L__lcd_swr659: + BTFSS STATUS+0, 2 + GOTO L_lcd_swr318 +;main.c,432 :: if(type==4 | type==5) led_wr_str (2, 16+4*12, "0.00", 4); // 128*64 OLED + MOVF _type+0, 0 + XORLW 4 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF _type+0, 0 + XORLW 5 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + IORWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_lcd_swr319 + MOVLW 2 + MOVWF FARG_led_wr_str+0 + MOVLW 64 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr50_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr50_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 4 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 + GOTO L_lcd_swr320 +L_lcd_swr319: +;main.c,433 :: else if(type!=0) led_wr_str (1, 4, "0.00", 4); // 1602 & 128*32 OLED + MOVF _type+0, 0 + XORLW 0 + BTFSC STATUS+0, 2 + GOTO L_lcd_swr321 + MOVLW 1 + MOVWF FARG_led_wr_str+0 + MOVLW 4 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr51_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr51_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 4 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 + GOTO L_lcd_swr322 +L_lcd_swr321: +;main.c,434 :: else if(type==0) { // real-time 2-colors led work + MOVF _type+0, 0 + XORLW 0 + BTFSS STATUS+0, 2 + GOTO L_lcd_swr323 +;main.c,435 :: LATB.B6 = 1; + BSF LATB+0, 6 +;main.c,436 :: LATB.B7 = 1; + BSF LATB+0, 7 +;main.c,437 :: } +L_lcd_swr323: +L_lcd_swr322: +L_lcd_swr320: +;main.c,438 :: SWR_old = 0; + CLRF _SWR_old+0 + CLRF _SWR_old+1 +;main.c,439 :: } + GOTO L_lcd_swr324 +L_lcd_swr318: +;main.c,441 :: SWR_old = swr; + MOVF FARG_lcd_swr_swr+0, 0 + MOVWF _SWR_old+0 + MOVF FARG_lcd_swr_swr+1, 0 + MOVWF _SWR_old+1 +;main.c,442 :: IntToStr(swr, work_str); + MOVF FARG_lcd_swr_swr+0, 0 + MOVWF FARG_IntToStr_input+0 + MOVF FARG_lcd_swr_swr+1, 0 + MOVWF FARG_IntToStr_input+1 + MOVLW _work_str+0 + MOVWF FARG_IntToStr_output+0 + MOVLW hi_addr(_work_str+0) + MOVWF FARG_IntToStr_output+1 + CALL _IntToStr+0 +;main.c,443 :: work_str_2[0] = work_str[3]; + MOVF _work_str+3, 0 + MOVWF _work_str_2+0 +;main.c,444 :: work_str_2[1] = '.'; + MOVLW 46 + MOVWF _work_str_2+1 +;main.c,445 :: work_str_2[2] = work_str[4]; + MOVF _work_str+4, 0 + MOVWF _work_str_2+2 +;main.c,446 :: work_str_2[3] = work_str[5]; + MOVF _work_str+5, 0 + MOVWF _work_str_2+3 +;main.c,447 :: if(type==4 | type==5) led_wr_str (2, 16+4*12, work_str_2, 4); // 128*64 OLED + MOVF _type+0, 0 + XORLW 4 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF _type+0, 0 + XORLW 5 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + IORWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_lcd_swr325 + MOVLW 2 + MOVWF FARG_led_wr_str+0 + MOVLW 64 + MOVWF FARG_led_wr_str+0 + MOVLW _work_str_2+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(_work_str_2+0) + MOVWF FARG_led_wr_str+1 + MOVLW 4 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 + GOTO L_lcd_swr326 +L_lcd_swr325: +;main.c,448 :: else if(type!=0) led_wr_str (1, 4, work_str_2, 4); // 1602 & 128*32 + MOVF _type+0, 0 + XORLW 0 + BTFSC STATUS+0, 2 + GOTO L_lcd_swr327 + MOVLW 1 + MOVWF FARG_led_wr_str+0 + MOVLW 4 + MOVWF FARG_led_wr_str+0 + MOVLW _work_str_2+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(_work_str_2+0) + MOVWF FARG_led_wr_str+1 + MOVLW 4 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 + GOTO L_lcd_swr328 +L_lcd_swr327: +;main.c,449 :: else if(type==0) { // real-time 2-colors led work + MOVF _type+0, 0 + XORLW 0 + BTFSS STATUS+0, 2 + GOTO L_lcd_swr329 +;main.c,450 :: if(swr<=150) { LATB.B6 = 0; LATB.B7 = 1; } // Green + MOVLW 128 + MOVWF R0 + MOVLW 128 + XORWF FARG_lcd_swr_swr+1, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__lcd_swr660 + MOVF FARG_lcd_swr_swr+0, 0 + SUBLW 150 +L__lcd_swr660: + BTFSS STATUS+0, 0 + GOTO L_lcd_swr330 + BCF LATB+0, 6 + BSF LATB+0, 7 + GOTO L_lcd_swr331 +L_lcd_swr330: +;main.c,451 :: else if(swr<=250) {PORTB.B6 = 0; PORTB.B7 = 0;} // Orange + MOVLW 128 + MOVWF R0 + MOVLW 128 + XORWF FARG_lcd_swr_swr+1, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__lcd_swr661 + MOVF FARG_lcd_swr_swr+0, 0 + SUBLW 250 +L__lcd_swr661: + BTFSS STATUS+0, 0 + GOTO L_lcd_swr332 + BCF PORTB+0, 6 + BCF PORTB+0, 7 + GOTO L_lcd_swr333 +L_lcd_swr332: +;main.c,452 :: else { PORTB.B6 = 1; PORTB.B7 = 0; } // Red + BSF PORTB+0, 6 + BCF PORTB+0, 7 +L_lcd_swr333: +L_lcd_swr331: +;main.c,453 :: } +L_lcd_swr329: +L_lcd_swr328: +L_lcd_swr326: +;main.c,454 :: } +L_lcd_swr324: +;main.c,455 :: } +L_lcd_swr317: +;main.c,456 :: asm CLRWDT; + CLRWDT +;main.c,457 :: return; +;main.c,458 :: } +L_end_lcd_swr: + RETURN +; end of _lcd_swr + +_button_delay: + +;main.c,461 :: void button_delay() { +;main.c,462 :: if((Button(&PORTB, 0, 25, 0)) | (Button(&PORTB, 1, 25, 0)) | (Button(&PORTB, 2, 25, 0))) { + MOVLW PORTB+0 + MOVWF FARG_Button_port+0 + MOVLW hi_addr(PORTB+0) + MOVWF FARG_Button_port+1 + CLRF FARG_Button_pin+0 + MOVLW 25 + MOVWF FARG_Button_time_ms+0 + CLRF FARG_Button_active_state+0 + CALL _Button+0 + MOVF R0, 0 + MOVWF FLOC__button_delay+0 + MOVLW PORTB+0 + MOVWF FARG_Button_port+0 + MOVLW hi_addr(PORTB+0) + MOVWF FARG_Button_port+1 + MOVLW 1 + MOVWF FARG_Button_pin+0 + MOVLW 25 + MOVWF FARG_Button_time_ms+0 + CLRF FARG_Button_active_state+0 + CALL _Button+0 + MOVF R0, 0 + IORWF FLOC__button_delay+0, 1 + MOVLW PORTB+0 + MOVWF FARG_Button_port+0 + MOVLW hi_addr(PORTB+0) + MOVWF FARG_Button_port+1 + MOVLW 2 + MOVWF FARG_Button_pin+0 + MOVLW 25 + MOVWF FARG_Button_time_ms+0 + CLRF FARG_Button_active_state+0 + CALL _Button+0 + MOVF FLOC__button_delay+0, 0 + IORWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_button_delay334 +;main.c,463 :: but = 1; + MOVLW 1 + MOVWF _but+0 +;main.c,464 :: } +L_button_delay334: +;main.c,465 :: return; +;main.c,466 :: } +L_end_button_delay: + RETURN +; end of _button_delay + +_show_pwr: + +;main.c,468 :: void show_pwr(int Power, int SWR) { +;main.c,471 :: a = 100; + MOVLW 0 + MOVWF show_pwr_a_L0+0 + MOVLW 0 + MOVWF show_pwr_a_L0+1 + MOVLW 72 + MOVWF show_pwr_a_L0+2 + MOVLW 133 + MOVWF show_pwr_a_L0+3 +;main.c,472 :: asm CLRWDT; + CLRWDT +;main.c,474 :: if(Test==0 & Loss_ind==1 & SWR>=100) { + MOVF _Test+0, 0 + XORLW 0 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF main_Loss_ind+0, 0 + XORLW 1 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R0, 0 + ANDWF R1, 1 + MOVLW 128 + XORWF FARG_show_pwr_SWR+1, 0 + MOVWF R0 + MOVLW 128 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__show_pwr664 + MOVLW 100 + SUBWF FARG_show_pwr_SWR+0, 0 +L__show_pwr664: + MOVLW 1 + BTFSS STATUS+0, 0 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + ANDWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_show_pwr335 +;main.c,475 :: if(Loss_mode==0) { // prepare + MOVF _Loss_mode+0, 0 + XORLW 0 + BTFSS STATUS+0, 2 + GOTO L_show_pwr336 +;main.c,476 :: if(type==4 |type==5){ // 128*64 OLED + MOVF _type+0, 0 + XORLW 4 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF _type+0, 0 + XORLW 5 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + IORWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_show_pwr337 +;main.c,477 :: if(P_High==1) led_wr_str(4, 16, "ANT= 0W", 8); + MOVF main_P_High+0, 0 + XORLW 1 + BTFSS STATUS+0, 2 + GOTO L_show_pwr338 + MOVLW 4 + MOVWF FARG_led_wr_str+0 + MOVLW 16 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr52_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr52_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 + GOTO L_show_pwr339 +L_show_pwr338: +;main.c,478 :: else led_wr_str(4, 16, "ANT=0.0W", 8); + MOVLW 4 + MOVWF FARG_led_wr_str+0 + MOVLW 16 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr53_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr53_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +L_show_pwr339: +;main.c,479 :: led_wr_str(6, 16, "EFF= 0%", 8); + MOVLW 6 + MOVWF FARG_led_wr_str+0 + MOVLW 16 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr54_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr54_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,480 :: } + GOTO L_show_pwr340 +L_show_pwr337: +;main.c,481 :: else if(type==2 | type==3) { // 128*32 OLED + MOVF _type+0, 0 + XORLW 2 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF _type+0, 0 + XORLW 3 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + IORWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_show_pwr341 +;main.c,482 :: if(P_High==1) led_wr_str (0, 9, "ANT= 0W", 8); + MOVF main_P_High+0, 0 + XORLW 1 + BTFSS STATUS+0, 2 + GOTO L_show_pwr342 + CLRF FARG_led_wr_str+0 + MOVLW 9 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr55_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr55_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 + GOTO L_show_pwr343 +L_show_pwr342: +;main.c,483 :: else led_wr_str (0, 9, "ANT=0.0W", 8); + CLRF FARG_led_wr_str+0 + MOVLW 9 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr56_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr56_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +L_show_pwr343: +;main.c,484 :: led_wr_str (1, 9, "EFF= 0%", 8); + MOVLW 1 + MOVWF FARG_led_wr_str+0 + MOVLW 9 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr57_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr57_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,485 :: } + GOTO L_show_pwr344 +L_show_pwr341: +;main.c,486 :: else if(type==1) { // 1602 LCD + MOVF _type+0, 0 + XORLW 1 + BTFSS STATUS+0, 2 + GOTO L_show_pwr345 +;main.c,487 :: if(P_High==1) led_wr_str (0, 9, "AN= 0W", 7); + MOVF main_P_High+0, 0 + XORLW 1 + BTFSS STATUS+0, 2 + GOTO L_show_pwr346 + CLRF FARG_led_wr_str+0 + MOVLW 9 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr58_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr58_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 7 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 + GOTO L_show_pwr347 +L_show_pwr346: +;main.c,488 :: else led_wr_str (0, 9, "AN=0.0W", 7); + CLRF FARG_led_wr_str+0 + MOVLW 9 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr59_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr59_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 7 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +L_show_pwr347: +;main.c,489 :: led_wr_str (1, 9, "EFF= 0%", 7); + MOVLW 1 + MOVWF FARG_led_wr_str+0 + MOVLW 9 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr60_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr60_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 7 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,490 :: } +L_show_pwr345: +L_show_pwr344: +L_show_pwr340: +;main.c,491 :: } +L_show_pwr336: +;main.c,492 :: Loss_mode = 1; + MOVLW 1 + MOVWF _Loss_mode+0 +;main.c,493 :: } + GOTO L_show_pwr348 +L_show_pwr335: +;main.c,495 :: if(Loss_mode==1) lcd_ind(); + MOVF _Loss_mode+0, 0 + XORLW 1 + BTFSS STATUS+0, 2 + GOTO L_show_pwr349 + CALL _lcd_ind+0 +L_show_pwr349: +;main.c,496 :: Loss_mode = 0; + CLRF _Loss_mode+0 +;main.c,497 :: } +L_show_pwr348: +;main.c,498 :: asm CLRWDT; + CLRWDT +;main.c,499 :: if(Power != Power_old) { + MOVF FARG_show_pwr_Power+1, 0 + XORWF _Power_old+1, 0 + BTFSS STATUS+0, 2 + GOTO L__show_pwr665 + MOVF _Power_old+0, 0 + XORWF FARG_show_pwr_Power+0, 0 +L__show_pwr665: + BTFSC STATUS+0, 2 + GOTO L_show_pwr350 +;main.c,500 :: Power_old = Power; + MOVF FARG_show_pwr_Power+0, 0 + MOVWF _Power_old+0 + MOVF FARG_show_pwr_Power+1, 0 + MOVWF _Power_old+1 +;main.c,502 :: if(P_High==0) { + MOVF main_P_High+0, 0 + XORLW 0 + BTFSS STATUS+0, 2 + GOTO L_show_pwr351 +;main.c,503 :: if(Power >= 100) { // > 10 W + MOVLW 128 + XORWF FARG_show_pwr_Power+1, 0 + MOVWF R0 + MOVLW 128 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__show_pwr666 + MOVLW 100 + SUBWF FARG_show_pwr_Power+0, 0 +L__show_pwr666: + BTFSS STATUS+0, 0 + GOTO L_show_pwr352 +;main.c,504 :: Power += 5; // rounding to 1 W + MOVLW 5 + ADDWF FARG_show_pwr_Power+0, 0 + MOVWF R0 + MOVLW 0 + ADDWFC FARG_show_pwr_Power+1, 0 + MOVWF R1 + MOVF R0, 0 + MOVWF FARG_show_pwr_Power+0 + MOVF R1, 0 + MOVWF FARG_show_pwr_Power+1 +;main.c,505 :: IntToStr(Power, work_str); + MOVF R0, 0 + MOVWF FARG_IntToStr_input+0 + MOVF R1, 0 + MOVWF FARG_IntToStr_input+1 + MOVLW _work_str+0 + MOVWF FARG_IntToStr_output+0 + MOVLW hi_addr(_work_str+0) + MOVWF FARG_IntToStr_output+1 + CALL _IntToStr+0 +;main.c,506 :: work_str_2[0] = work_str[2]; + MOVF _work_str+2, 0 + MOVWF _work_str_2+0 +;main.c,507 :: work_str_2[1] = work_str[3]; + MOVF _work_str+3, 0 + MOVWF _work_str_2+1 +;main.c,508 :: work_str_2[2] = work_str[4]; + MOVF _work_str+4, 0 + MOVWF _work_str_2+2 +;main.c,509 :: work_str_2[3] = 'W'; + MOVLW 87 + MOVWF _work_str_2+3 +;main.c,510 :: } + GOTO L_show_pwr353 +L_show_pwr352: +;main.c,512 :: IntToStr(Power, work_str); + MOVF FARG_show_pwr_Power+0, 0 + MOVWF FARG_IntToStr_input+0 + MOVF FARG_show_pwr_Power+1, 0 + MOVWF FARG_IntToStr_input+1 + MOVLW _work_str+0 + MOVWF FARG_IntToStr_output+0 + MOVLW hi_addr(_work_str+0) + MOVWF FARG_IntToStr_output+1 + CALL _IntToStr+0 +;main.c,513 :: if(work_str[4] != ' ') work_str_2[0] = work_str[4]; else work_str_2[0] = '0'; + MOVF _work_str+4, 0 + XORLW 32 + BTFSC STATUS+0, 2 + GOTO L_show_pwr354 + MOVF _work_str+4, 0 + MOVWF _work_str_2+0 + GOTO L_show_pwr355 +L_show_pwr354: + MOVLW 48 + MOVWF _work_str_2+0 +L_show_pwr355: +;main.c,514 :: work_str_2[1] = '.'; + MOVLW 46 + MOVWF _work_str_2+1 +;main.c,515 :: if(work_str[5] != ' ') work_str_2[2] = work_str[5]; else work_str_2[2] = '0'; + MOVF _work_str+5, 0 + XORLW 32 + BTFSC STATUS+0, 2 + GOTO L_show_pwr356 + MOVF _work_str+5, 0 + MOVWF _work_str_2+2 + GOTO L_show_pwr357 +L_show_pwr356: + MOVLW 48 + MOVWF _work_str_2+2 +L_show_pwr357: +;main.c,516 :: work_str_2[3] = 'W'; + MOVLW 87 + MOVWF _work_str_2+3 +;main.c,517 :: } +L_show_pwr353: +;main.c,518 :: } + GOTO L_show_pwr358 +L_show_pwr351: +;main.c,520 :: if(Power<999){ // 0 - 1500 Watts + MOVLW 128 + XORWF FARG_show_pwr_Power+1, 0 + MOVWF R0 + MOVLW 128 + XORLW 3 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__show_pwr667 + MOVLW 231 + SUBWF FARG_show_pwr_Power+0, 0 +L__show_pwr667: + BTFSC STATUS+0, 0 + GOTO L_show_pwr359 +;main.c,521 :: IntToStr(Power, work_str); + MOVF FARG_show_pwr_Power+0, 0 + MOVWF FARG_IntToStr_input+0 + MOVF FARG_show_pwr_Power+1, 0 + MOVWF FARG_IntToStr_input+1 + MOVLW _work_str+0 + MOVWF FARG_IntToStr_output+0 + MOVLW hi_addr(_work_str+0) + MOVWF FARG_IntToStr_output+1 + CALL _IntToStr+0 +;main.c,522 :: work_str_2[0] = work_str[3]; + MOVF _work_str+3, 0 + MOVWF _work_str_2+0 +;main.c,523 :: work_str_2[1] = work_str[4]; + MOVF _work_str+4, 0 + MOVWF _work_str_2+1 +;main.c,524 :: work_str_2[2] = work_str[5]; + MOVF _work_str+5, 0 + MOVWF _work_str_2+2 +;main.c,525 :: work_str_2[3] = 'W'; + MOVLW 87 + MOVWF _work_str_2+3 +;main.c,526 :: } + GOTO L_show_pwr360 +L_show_pwr359: +;main.c,528 :: IntToStr(Power, work_str); + MOVF FARG_show_pwr_Power+0, 0 + MOVWF FARG_IntToStr_input+0 + MOVF FARG_show_pwr_Power+1, 0 + MOVWF FARG_IntToStr_input+1 + MOVLW _work_str+0 + MOVWF FARG_IntToStr_output+0 + MOVLW hi_addr(_work_str+0) + MOVWF FARG_IntToStr_output+1 + CALL _IntToStr+0 +;main.c,529 :: work_str_2[0] = work_str[2]; + MOVF _work_str+2, 0 + MOVWF _work_str_2+0 +;main.c,530 :: work_str_2[1] = work_str[3]; + MOVF _work_str+3, 0 + MOVWF _work_str_2+1 +;main.c,531 :: work_str_2[2] = work_str[4]; + MOVF _work_str+4, 0 + MOVWF _work_str_2+2 +;main.c,532 :: work_str_2[3] = work_str[5]; + MOVF _work_str+5, 0 + MOVWF _work_str_2+3 +;main.c,533 :: } +L_show_pwr360: +;main.c,534 :: } +L_show_pwr358: +;main.c,535 :: if(type==4 | type==5) led_wr_str (0, 16+4*12, work_str_2, 4); // 128*64 OLED + MOVF _type+0, 0 + XORLW 4 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF _type+0, 0 + XORLW 5 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + IORWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_show_pwr361 + CLRF FARG_led_wr_str+0 + MOVLW 64 + MOVWF FARG_led_wr_str+0 + MOVLW _work_str_2+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(_work_str_2+0) + MOVWF FARG_led_wr_str+1 + MOVLW 4 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 + GOTO L_show_pwr362 +L_show_pwr361: +;main.c,536 :: else if(type!=0) led_wr_str (0, 4, work_str_2, 4); // 1602 & 128*32 + MOVF _type+0, 0 + XORLW 0 + BTFSC STATUS+0, 2 + GOTO L_show_pwr363 + CLRF FARG_led_wr_str+0 + MOVLW 4 + MOVWF FARG_led_wr_str+0 + MOVLW _work_str_2+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(_work_str_2+0) + MOVWF FARG_led_wr_str+1 + MOVLW 4 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +L_show_pwr363: +L_show_pwr362: +;main.c,538 :: asm CLRWDT; + CLRWDT +;main.c,540 :: if(Loss_mode==1) { + MOVF _Loss_mode+0, 0 + XORLW 1 + BTFSS STATUS+0, 2 + GOTO L_show_pwr364 +;main.c,541 :: if(ind==0 & cap==0) swr_a = SWR; + MOVF main_ind+0, 0 + XORLW 0 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF main_cap+0, 0 + XORLW 0 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + ANDWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_show_pwr365 + MOVF FARG_show_pwr_SWR+0, 0 + MOVWF _swr_a+0 + MOVF FARG_show_pwr_SWR+1, 0 + MOVWF _swr_a+1 +L_show_pwr365: +;main.c,542 :: a = 1.0 / ((swr_a/100.0 + 100.0/swr_a) * Fid_loss/10.0 * 0.115 + 1.0); // Fider loss + MOVF _swr_a+0, 0 + MOVWF R0 + MOVF _swr_a+1, 0 + MOVWF R1 + CALL _int2double+0 + MOVF R0, 0 + MOVWF FLOC__show_pwr+4 + MOVF R1, 0 + MOVWF FLOC__show_pwr+5 + MOVF R2, 0 + MOVWF FLOC__show_pwr+6 + MOVF R3, 0 + MOVWF FLOC__show_pwr+7 + MOVLW 0 + MOVWF R4 + MOVLW 0 + MOVWF R5 + MOVLW 72 + MOVWF R6 + MOVLW 133 + MOVWF R7 + MOVF FLOC__show_pwr+4, 0 + MOVWF R0 + MOVF FLOC__show_pwr+5, 0 + MOVWF R1 + MOVF FLOC__show_pwr+6, 0 + MOVWF R2 + MOVF FLOC__show_pwr+7, 0 + MOVWF R3 + CALL _Div_32x32_FP+0 + MOVF R0, 0 + MOVWF FLOC__show_pwr+0 + MOVF R1, 0 + MOVWF FLOC__show_pwr+1 + MOVF R2, 0 + MOVWF FLOC__show_pwr+2 + MOVF R3, 0 + MOVWF FLOC__show_pwr+3 + MOVF FLOC__show_pwr+4, 0 + MOVWF R4 + MOVF FLOC__show_pwr+5, 0 + MOVWF R5 + MOVF FLOC__show_pwr+6, 0 + MOVWF R6 + MOVF FLOC__show_pwr+7, 0 + MOVWF R7 + MOVLW 0 + MOVWF R0 + MOVLW 0 + MOVWF R1 + MOVLW 72 + MOVWF R2 + MOVLW 133 + MOVWF R3 + CALL _Div_32x32_FP+0 + MOVF FLOC__show_pwr+0, 0 + MOVWF R4 + MOVF FLOC__show_pwr+1, 0 + MOVWF R5 + MOVF FLOC__show_pwr+2, 0 + MOVWF R6 + MOVF FLOC__show_pwr+3, 0 + MOVWF R7 + CALL _Add_32x32_FP+0 + MOVF R0, 0 + MOVWF FLOC__show_pwr+0 + MOVF R1, 0 + MOVWF FLOC__show_pwr+1 + MOVF R2, 0 + MOVWF FLOC__show_pwr+2 + MOVF R3, 0 + MOVWF FLOC__show_pwr+3 + MOVF _Fid_loss+0, 0 + MOVWF R0 + CALL _byte2double+0 + MOVF FLOC__show_pwr+0, 0 + MOVWF R4 + MOVF FLOC__show_pwr+1, 0 + MOVWF R5 + MOVF FLOC__show_pwr+2, 0 + MOVWF R6 + MOVF FLOC__show_pwr+3, 0 + MOVWF R7 + CALL _Mul_32x32_FP+0 + MOVLW 0 + MOVWF R4 + MOVLW 0 + MOVWF R5 + MOVLW 32 + MOVWF R6 + MOVLW 130 + MOVWF R7 + CALL _Div_32x32_FP+0 + MOVLW 31 + MOVWF R4 + MOVLW 133 + MOVWF R5 + MOVLW 107 + MOVWF R6 + MOVLW 123 + MOVWF R7 + CALL _Mul_32x32_FP+0 + MOVLW 0 + MOVWF R4 + MOVLW 0 + MOVWF R5 + MOVLW 0 + MOVWF R6 + MOVLW 127 + MOVWF R7 + CALL _Add_32x32_FP+0 + MOVF R0, 0 + MOVWF R4 + MOVF R1, 0 + MOVWF R5 + MOVF R2, 0 + MOVWF R6 + MOVF R3, 0 + MOVWF R7 + MOVLW 0 + MOVWF R0 + MOVLW 0 + MOVWF R1 + MOVLW 0 + MOVWF R2 + MOVLW 127 + MOVWF R3 + CALL _Div_32x32_FP+0 + MOVF R0, 0 + MOVWF FLOC__show_pwr+8 + MOVF R1, 0 + MOVWF FLOC__show_pwr+9 + MOVF R2, 0 + MOVWF FLOC__show_pwr+10 + MOVF R3, 0 + MOVWF FLOC__show_pwr+11 + MOVF FLOC__show_pwr+8, 0 + MOVWF show_pwr_a_L0+0 + MOVF FLOC__show_pwr+9, 0 + MOVWF show_pwr_a_L0+1 + MOVF FLOC__show_pwr+10, 0 + MOVWF show_pwr_a_L0+2 + MOVF FLOC__show_pwr+11, 0 + MOVWF show_pwr_a_L0+3 +;main.c,543 :: b = 4.0 / (2.0 + SWR/100.0 + 100.0/SWR); // SWR loss + MOVF FARG_show_pwr_SWR+0, 0 + MOVWF R0 + MOVF FARG_show_pwr_SWR+1, 0 + MOVWF R1 + CALL _int2double+0 + MOVF R0, 0 + MOVWF FLOC__show_pwr+4 + MOVF R1, 0 + MOVWF FLOC__show_pwr+5 + MOVF R2, 0 + MOVWF FLOC__show_pwr+6 + MOVF R3, 0 + MOVWF FLOC__show_pwr+7 + MOVLW 0 + MOVWF R4 + MOVLW 0 + MOVWF R5 + MOVLW 72 + MOVWF R6 + MOVLW 133 + MOVWF R7 + MOVF FLOC__show_pwr+4, 0 + MOVWF R0 + MOVF FLOC__show_pwr+5, 0 + MOVWF R1 + MOVF FLOC__show_pwr+6, 0 + MOVWF R2 + MOVF FLOC__show_pwr+7, 0 + MOVWF R3 + CALL _Div_32x32_FP+0 + MOVLW 0 + MOVWF R4 + MOVLW 0 + MOVWF R5 + MOVLW 0 + MOVWF R6 + MOVLW 128 + MOVWF R7 + CALL _Add_32x32_FP+0 + MOVF R0, 0 + MOVWF FLOC__show_pwr+0 + MOVF R1, 0 + MOVWF FLOC__show_pwr+1 + MOVF R2, 0 + MOVWF FLOC__show_pwr+2 + MOVF R3, 0 + MOVWF FLOC__show_pwr+3 + MOVF FLOC__show_pwr+4, 0 + MOVWF R4 + MOVF FLOC__show_pwr+5, 0 + MOVWF R5 + MOVF FLOC__show_pwr+6, 0 + MOVWF R6 + MOVF FLOC__show_pwr+7, 0 + MOVWF R7 + MOVLW 0 + MOVWF R0 + MOVLW 0 + MOVWF R1 + MOVLW 72 + MOVWF R2 + MOVLW 133 + MOVWF R3 + CALL _Div_32x32_FP+0 + MOVF FLOC__show_pwr+0, 0 + MOVWF R4 + MOVF FLOC__show_pwr+1, 0 + MOVWF R5 + MOVF FLOC__show_pwr+2, 0 + MOVWF R6 + MOVF FLOC__show_pwr+3, 0 + MOVWF R7 + CALL _Add_32x32_FP+0 + MOVF R0, 0 + MOVWF R4 + MOVF R1, 0 + MOVWF R5 + MOVF R2, 0 + MOVWF R6 + MOVF R3, 0 + MOVWF R7 + MOVLW 0 + MOVWF R0 + MOVLW 0 + MOVWF R1 + MOVLW 0 + MOVWF R2 + MOVLW 129 + MOVWF R3 + CALL _Div_32x32_FP+0 + MOVF R0, 0 + MOVWF show_pwr_b_L0+0 + MOVF R1, 0 + MOVWF show_pwr_b_L0+1 + MOVF R2, 0 + MOVWF show_pwr_b_L0+2 + MOVF R3, 0 + MOVWF show_pwr_b_L0+3 +;main.c,544 :: if(a>=1.0) a = 1.0; + MOVLW 0 + MOVWF R4 + MOVLW 0 + MOVWF R5 + MOVLW 0 + MOVWF R6 + MOVLW 127 + MOVWF R7 + MOVF FLOC__show_pwr+8, 0 + MOVWF R0 + MOVF FLOC__show_pwr+9, 0 + MOVWF R1 + MOVF FLOC__show_pwr+10, 0 + MOVWF R2 + MOVF FLOC__show_pwr+11, 0 + MOVWF R3 + CALL _Compare_Double+0 + MOVLW 1 + BTFSS STATUS+0, 0 + MOVLW 0 + MOVWF R0 + MOVF R0, 0 + BTFSC STATUS+0, 2 + GOTO L_show_pwr366 + MOVLW 0 + MOVWF show_pwr_a_L0+0 + MOVLW 0 + MOVWF show_pwr_a_L0+1 + MOVLW 0 + MOVWF show_pwr_a_L0+2 + MOVLW 127 + MOVWF show_pwr_a_L0+3 +L_show_pwr366: +;main.c,545 :: if(b>=1.0) b = 1.0; + MOVLW 0 + MOVWF R4 + MOVLW 0 + MOVWF R5 + MOVLW 0 + MOVWF R6 + MOVLW 127 + MOVWF R7 + MOVF show_pwr_b_L0+0, 0 + MOVWF R0 + MOVF show_pwr_b_L0+1, 0 + MOVWF R1 + MOVF show_pwr_b_L0+2, 0 + MOVWF R2 + MOVF show_pwr_b_L0+3, 0 + MOVWF R3 + CALL _Compare_Double+0 + MOVLW 1 + BTFSS STATUS+0, 0 + MOVLW 0 + MOVWF R0 + MOVF R0, 0 + BTFSC STATUS+0, 2 + GOTO L_show_pwr367 + MOVLW 0 + MOVWF show_pwr_b_L0+0 + MOVLW 0 + MOVWF show_pwr_b_L0+1 + MOVLW 0 + MOVWF show_pwr_b_L0+2 + MOVLW 127 + MOVWF show_pwr_b_L0+3 +L_show_pwr367: +;main.c,546 :: p_ant = Power * a * b; + MOVF FARG_show_pwr_Power+0, 0 + MOVWF R0 + MOVF FARG_show_pwr_Power+1, 0 + MOVWF R1 + CALL _int2double+0 + MOVF show_pwr_a_L0+0, 0 + MOVWF R4 + MOVF show_pwr_a_L0+1, 0 + MOVWF R5 + MOVF show_pwr_a_L0+2, 0 + MOVWF R6 + MOVF show_pwr_a_L0+3, 0 + MOVWF R7 + CALL _Mul_32x32_FP+0 + MOVF show_pwr_b_L0+0, 0 + MOVWF R4 + MOVF show_pwr_b_L0+1, 0 + MOVWF R5 + MOVF show_pwr_b_L0+2, 0 + MOVWF R6 + MOVF show_pwr_b_L0+3, 0 + MOVWF R7 + CALL _Mul_32x32_FP+0 + CALL _double2int+0 + MOVF R0, 0 + MOVWF show_pwr_p_ant_L0+0 + MOVF R1, 0 + MOVWF show_pwr_p_ant_L0+1 +;main.c,547 :: eff = a * b * 100; + MOVF show_pwr_a_L0+0, 0 + MOVWF R0 + MOVF show_pwr_a_L0+1, 0 + MOVWF R1 + MOVF show_pwr_a_L0+2, 0 + MOVWF R2 + MOVF show_pwr_a_L0+3, 0 + MOVWF R3 + MOVF show_pwr_b_L0+0, 0 + MOVWF R4 + MOVF show_pwr_b_L0+1, 0 + MOVWF R5 + MOVF show_pwr_b_L0+2, 0 + MOVWF R6 + MOVF show_pwr_b_L0+3, 0 + MOVWF R7 + CALL _Mul_32x32_FP+0 + MOVLW 0 + MOVWF R4 + MOVLW 0 + MOVWF R5 + MOVLW 72 + MOVWF R6 + MOVLW 133 + MOVWF R7 + CALL _Mul_32x32_FP+0 + CALL _double2int+0 + MOVF R0, 0 + MOVWF show_pwr_eff_L0+0 + MOVF R1, 0 + MOVWF show_pwr_eff_L0+1 +;main.c,548 :: if(eff>=100) eff = 99; + MOVLW 128 + XORWF R1, 0 + MOVWF R2 + MOVLW 128 + SUBWF R2, 0 + BTFSS STATUS+0, 2 + GOTO L__show_pwr668 + MOVLW 100 + SUBWF R0, 0 +L__show_pwr668: + BTFSS STATUS+0, 0 + GOTO L_show_pwr368 + MOVLW 99 + MOVWF show_pwr_eff_L0+0 + MOVLW 0 + MOVWF show_pwr_eff_L0+1 +L_show_pwr368: +;main.c,550 :: if(P_High==0) { + MOVF main_P_High+0, 0 + XORLW 0 + BTFSS STATUS+0, 2 + GOTO L_show_pwr369 +;main.c,551 :: if(p_ant >= 100) { // > 10 W + MOVLW 128 + XORWF show_pwr_p_ant_L0+1, 0 + MOVWF R0 + MOVLW 128 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__show_pwr669 + MOVLW 100 + SUBWF show_pwr_p_ant_L0+0, 0 +L__show_pwr669: + BTFSS STATUS+0, 0 + GOTO L_show_pwr370 +;main.c,552 :: p_ant += 5; // rounding to 1 W + MOVLW 5 + ADDWF show_pwr_p_ant_L0+0, 0 + MOVWF R0 + MOVLW 0 + ADDWFC show_pwr_p_ant_L0+1, 0 + MOVWF R1 + MOVF R0, 0 + MOVWF show_pwr_p_ant_L0+0 + MOVF R1, 0 + MOVWF show_pwr_p_ant_L0+1 +;main.c,553 :: IntToStr(p_ant, work_str); + MOVF R0, 0 + MOVWF FARG_IntToStr_input+0 + MOVF R1, 0 + MOVWF FARG_IntToStr_input+1 + MOVLW _work_str+0 + MOVWF FARG_IntToStr_output+0 + MOVLW hi_addr(_work_str+0) + MOVWF FARG_IntToStr_output+1 + CALL _IntToStr+0 +;main.c,554 :: work_str_2[0] = work_str[2]; + MOVF _work_str+2, 0 + MOVWF _work_str_2+0 +;main.c,555 :: work_str_2[1] = work_str[3]; + MOVF _work_str+3, 0 + MOVWF _work_str_2+1 +;main.c,556 :: work_str_2[2] = work_str[4]; + MOVF _work_str+4, 0 + MOVWF _work_str_2+2 +;main.c,557 :: work_str_2[3] = 'W'; + MOVLW 87 + MOVWF _work_str_2+3 +;main.c,558 :: } + GOTO L_show_pwr371 +L_show_pwr370: +;main.c,560 :: IntToStr(p_ant, work_str); + MOVF show_pwr_p_ant_L0+0, 0 + MOVWF FARG_IntToStr_input+0 + MOVF show_pwr_p_ant_L0+1, 0 + MOVWF FARG_IntToStr_input+1 + MOVLW _work_str+0 + MOVWF FARG_IntToStr_output+0 + MOVLW hi_addr(_work_str+0) + MOVWF FARG_IntToStr_output+1 + CALL _IntToStr+0 +;main.c,561 :: if(work_str[4] != ' ') work_str_2[0] = work_str[4]; else work_str_2[0] = '0'; + MOVF _work_str+4, 0 + XORLW 32 + BTFSC STATUS+0, 2 + GOTO L_show_pwr372 + MOVF _work_str+4, 0 + MOVWF _work_str_2+0 + GOTO L_show_pwr373 +L_show_pwr372: + MOVLW 48 + MOVWF _work_str_2+0 +L_show_pwr373: +;main.c,562 :: work_str_2[1] = '.'; + MOVLW 46 + MOVWF _work_str_2+1 +;main.c,563 :: if(work_str[5] != ' ') work_str_2[2] = work_str[5]; else work_str_2[2] = '0'; + MOVF _work_str+5, 0 + XORLW 32 + BTFSC STATUS+0, 2 + GOTO L_show_pwr374 + MOVF _work_str+5, 0 + MOVWF _work_str_2+2 + GOTO L_show_pwr375 +L_show_pwr374: + MOVLW 48 + MOVWF _work_str_2+2 +L_show_pwr375: +;main.c,564 :: work_str_2[3] = 'W'; + MOVLW 87 + MOVWF _work_str_2+3 +;main.c,565 :: } +L_show_pwr371: +;main.c,566 :: } + GOTO L_show_pwr376 +L_show_pwr369: +;main.c,568 :: if(p_ant<999){ // 0 - 1500 Watts + MOVLW 128 + XORWF show_pwr_p_ant_L0+1, 0 + MOVWF R0 + MOVLW 128 + XORLW 3 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__show_pwr670 + MOVLW 231 + SUBWF show_pwr_p_ant_L0+0, 0 +L__show_pwr670: + BTFSC STATUS+0, 0 + GOTO L_show_pwr377 +;main.c,569 :: IntToStr(p_ant, work_str); + MOVF show_pwr_p_ant_L0+0, 0 + MOVWF FARG_IntToStr_input+0 + MOVF show_pwr_p_ant_L0+1, 0 + MOVWF FARG_IntToStr_input+1 + MOVLW _work_str+0 + MOVWF FARG_IntToStr_output+0 + MOVLW hi_addr(_work_str+0) + MOVWF FARG_IntToStr_output+1 + CALL _IntToStr+0 +;main.c,570 :: work_str_2[0] = work_str[3]; + MOVF _work_str+3, 0 + MOVWF _work_str_2+0 +;main.c,571 :: work_str_2[1] = work_str[4]; + MOVF _work_str+4, 0 + MOVWF _work_str_2+1 +;main.c,572 :: work_str_2[2] = work_str[5]; + MOVF _work_str+5, 0 + MOVWF _work_str_2+2 +;main.c,573 :: work_str_2[3] = 'W'; + MOVLW 87 + MOVWF _work_str_2+3 +;main.c,574 :: } + GOTO L_show_pwr378 +L_show_pwr377: +;main.c,576 :: IntToStr(p_ant, work_str); + MOVF show_pwr_p_ant_L0+0, 0 + MOVWF FARG_IntToStr_input+0 + MOVF show_pwr_p_ant_L0+1, 0 + MOVWF FARG_IntToStr_input+1 + MOVLW _work_str+0 + MOVWF FARG_IntToStr_output+0 + MOVLW hi_addr(_work_str+0) + MOVWF FARG_IntToStr_output+1 + CALL _IntToStr+0 +;main.c,577 :: work_str_2[0] = work_str[2]; + MOVF _work_str+2, 0 + MOVWF _work_str_2+0 +;main.c,578 :: work_str_2[1] = work_str[3]; + MOVF _work_str+3, 0 + MOVWF _work_str_2+1 +;main.c,579 :: work_str_2[2] = work_str[4]; + MOVF _work_str+4, 0 + MOVWF _work_str_2+2 +;main.c,580 :: work_str_2[3] = work_str[5]; + MOVF _work_str+5, 0 + MOVWF _work_str_2+3 +;main.c,581 :: } +L_show_pwr378: +;main.c,582 :: } +L_show_pwr376: +;main.c,583 :: if(type==4 | type==5) led_wr_str (4, 16+4*12, work_str_2, 4); // 128*64 OLED + MOVF _type+0, 0 + XORLW 4 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF _type+0, 0 + XORLW 5 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + IORWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_show_pwr379 + MOVLW 4 + MOVWF FARG_led_wr_str+0 + MOVLW 64 + MOVWF FARG_led_wr_str+0 + MOVLW _work_str_2+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(_work_str_2+0) + MOVWF FARG_led_wr_str+1 + MOVLW 4 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 + GOTO L_show_pwr380 +L_show_pwr379: +;main.c,584 :: else if(type==2 | type==3) led_wr_str (0, 13, work_str_2, 4); // 128*32 + MOVF _type+0, 0 + XORLW 2 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF _type+0, 0 + XORLW 3 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + IORWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_show_pwr381 + CLRF FARG_led_wr_str+0 + MOVLW 13 + MOVWF FARG_led_wr_str+0 + MOVLW _work_str_2+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(_work_str_2+0) + MOVWF FARG_led_wr_str+1 + MOVLW 4 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 + GOTO L_show_pwr382 +L_show_pwr381: +;main.c,585 :: else if(type!=0) led_wr_str (0, 12, work_str_2, 4); // 1602 + MOVF _type+0, 0 + XORLW 0 + BTFSC STATUS+0, 2 + GOTO L_show_pwr383 + CLRF FARG_led_wr_str+0 + MOVLW 12 + MOVWF FARG_led_wr_str+0 + MOVLW _work_str_2+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(_work_str_2+0) + MOVWF FARG_led_wr_str+1 + MOVLW 4 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +L_show_pwr383: +L_show_pwr382: +L_show_pwr380: +;main.c,587 :: IntToStr(eff, work_str); + MOVF show_pwr_eff_L0+0, 0 + MOVWF FARG_IntToStr_input+0 + MOVF show_pwr_eff_L0+1, 0 + MOVWF FARG_IntToStr_input+1 + MOVLW _work_str+0 + MOVWF FARG_IntToStr_output+0 + MOVLW hi_addr(_work_str+0) + MOVWF FARG_IntToStr_output+1 + CALL _IntToStr+0 +;main.c,588 :: work_str_2[0] = work_str[4]; + MOVF _work_str+4, 0 + MOVWF _work_str_2+0 +;main.c,589 :: work_str_2[1] = work_str[5]; + MOVF _work_str+5, 0 + MOVWF _work_str_2+1 +;main.c,590 :: if(type==4 | type==5) led_wr_str(6, 16+5*12, work_str_2, 2); + MOVF _type+0, 0 + XORLW 4 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF _type+0, 0 + XORLW 5 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + IORWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_show_pwr384 + MOVLW 6 + MOVWF FARG_led_wr_str+0 + MOVLW 76 + MOVWF FARG_led_wr_str+0 + MOVLW _work_str_2+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(_work_str_2+0) + MOVWF FARG_led_wr_str+1 + MOVLW 2 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 + GOTO L_show_pwr385 +L_show_pwr384: +;main.c,591 :: else if(type==2 | type==3) led_wr_str(1, 14, work_str_2, 2); + MOVF _type+0, 0 + XORLW 2 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF _type+0, 0 + XORLW 3 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + IORWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_show_pwr386 + MOVLW 1 + MOVWF FARG_led_wr_str+0 + MOVLW 14 + MOVWF FARG_led_wr_str+0 + MOVLW _work_str_2+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(_work_str_2+0) + MOVWF FARG_led_wr_str+1 + MOVLW 2 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 + GOTO L_show_pwr387 +L_show_pwr386: +;main.c,592 :: else if(type==1) led_wr_str(1, 13, work_str_2, 2); + MOVF _type+0, 0 + XORLW 1 + BTFSS STATUS+0, 2 + GOTO L_show_pwr388 + MOVLW 1 + MOVWF FARG_led_wr_str+0 + MOVLW 13 + MOVWF FARG_led_wr_str+0 + MOVLW _work_str_2+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(_work_str_2+0) + MOVWF FARG_led_wr_str+1 + MOVLW 2 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +L_show_pwr388: +L_show_pwr387: +L_show_pwr385: +;main.c,593 :: } +L_show_pwr364: +;main.c,594 :: } +L_show_pwr350: +;main.c,595 :: asm CLRWDT; + CLRWDT +;main.c,596 :: return; +;main.c,597 :: } +L_end_show_pwr: + RETURN +; end of _show_pwr + +_lcd_pwr: + +;main.c,599 :: void lcd_pwr() { +;main.c,600 :: int p = 0; + CLRF lcd_pwr_p_L0+0 + CLRF lcd_pwr_p_L0+1 +;main.c,602 :: int delta = Auto_delta - 100; + MOVLW 100 + SUBWF _Auto_delta+0, 0 + MOVWF lcd_pwr_delta_L0+0 + MOVLW 0 + SUBWFB _Auto_delta+1, 0 + MOVWF lcd_pwr_delta_L0+1 +;main.c,604 :: int SWR_fixed = 1; + MOVLW 1 + MOVWF lcd_pwr_SWR_fixed_L0+0 + MOVLW 0 + MOVWF lcd_pwr_SWR_fixed_L0+1 +;main.c,605 :: PWR = 0; + CLRF _PWR+0 + CLRF _PWR+1 +;main.c,606 :: asm CLRWDT; + CLRWDT +;main.c,608 :: cnt = 120; + MOVLW 120 + MOVWF lcd_pwr_cnt_L0+0 +;main.c,609 :: for(peak_cnt = 0; peak_cnt < cnt; peak_cnt++){ + CLRF lcd_pwr_peak_cnt_L0+0 +L_lcd_pwr389: + MOVF lcd_pwr_cnt_L0+0, 0 + SUBWF lcd_pwr_peak_cnt_L0+0, 0 + BTFSC STATUS+0, 0 + GOTO L_lcd_pwr390 +;main.c,610 :: if(PORTB.B1==0 | PORTB.B2==0 | PORTB.B0==0) {button_delay(); if(but==1) {but = 0; return;} } + BTFSC PORTB+0, 1 + GOTO L__lcd_pwr672 + BSF R6, 0 + GOTO L__lcd_pwr673 +L__lcd_pwr672: + BCF R6, 0 +L__lcd_pwr673: + BTFSC PORTB+0, 2 + GOTO L__lcd_pwr674 + BSF 3, 0 + GOTO L__lcd_pwr675 +L__lcd_pwr674: + BCF 3, 0 +L__lcd_pwr675: + BTFSC R6, 0 + GOTO L__lcd_pwr676 + BTFSC 3, 0 + GOTO L__lcd_pwr676 + BCF R6, 0 + GOTO L__lcd_pwr677 +L__lcd_pwr676: + BSF R6, 0 +L__lcd_pwr677: + BTFSC PORTB+0, 0 + GOTO L__lcd_pwr678 + BSF 3, 0 + GOTO L__lcd_pwr679 +L__lcd_pwr678: + BCF 3, 0 +L__lcd_pwr679: + BTFSC R6, 0 + GOTO L__lcd_pwr680 + BTFSC 3, 0 + GOTO L__lcd_pwr680 + BCF R6, 0 + GOTO L__lcd_pwr681 +L__lcd_pwr680: + BSF R6, 0 +L__lcd_pwr681: + BTFSS R6, 0 + GOTO L_lcd_pwr392 + CALL _button_delay+0 + MOVF _but+0, 0 + XORLW 1 + BTFSS STATUS+0, 2 + GOTO L_lcd_pwr393 + CLRF _but+0 + GOTO L_end_lcd_pwr +L_lcd_pwr393: +L_lcd_pwr392: +;main.c,611 :: get_pwr(); + CALL _get_pwr+0 +;main.c,612 :: if(PWR>p) {p = PWR; SWR_fixed = SWR;} + MOVLW 128 + XORWF lcd_pwr_p_L0+1, 0 + MOVWF R0 + MOVLW 128 + XORWF _PWR+1, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__lcd_pwr682 + MOVF _PWR+0, 0 + SUBWF lcd_pwr_p_L0+0, 0 +L__lcd_pwr682: + BTFSC STATUS+0, 0 + GOTO L_lcd_pwr394 + MOVF _PWR+0, 0 + MOVWF lcd_pwr_p_L0+0 + MOVF _PWR+1, 0 + MOVWF lcd_pwr_p_L0+1 + MOVF _SWR+0, 0 + MOVWF lcd_pwr_SWR_fixed_L0+0 + MOVF _SWR+1, 0 + MOVWF lcd_pwr_SWR_fixed_L0+1 +L_lcd_pwr394: +;main.c,613 :: Delay_ms(3); + MOVLW 16 + MOVWF R12 + MOVLW 148 + MOVWF R13 +L_lcd_pwr395: + DECFSZ R13, 1 + GOTO L_lcd_pwr395 + DECFSZ R12, 1 + GOTO L_lcd_pwr395 + NOP +;main.c,609 :: for(peak_cnt = 0; peak_cnt < cnt; peak_cnt++){ + INCF lcd_pwr_peak_cnt_L0+0, 1 +;main.c,614 :: } + GOTO L_lcd_pwr389 +L_lcd_pwr390: +;main.c,615 :: asm CLRWDT; + CLRWDT +;main.c,616 :: Power = p; + MOVF lcd_pwr_p_L0+0, 0 + MOVWF _Power+0 + MOVF lcd_pwr_p_L0+1, 0 + MOVWF _Power+1 +;main.c,617 :: lcd_swr(SWR_fixed); + MOVF lcd_pwr_SWR_fixed_L0+0, 0 + MOVWF FARG_lcd_swr_swr+0 + MOVF lcd_pwr_SWR_fixed_L0+1, 0 + MOVWF FARG_lcd_swr_swr+1 + CALL _lcd_swr+0 +;main.c,618 :: if(SWR_fixed>=100) { + MOVLW 128 + XORWF lcd_pwr_SWR_fixed_L0+1, 0 + MOVWF R0 + MOVLW 128 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__lcd_pwr683 + MOVLW 100 + SUBWF lcd_pwr_SWR_fixed_L0+0, 0 +L__lcd_pwr683: + BTFSS STATUS+0, 0 + GOTO L_lcd_pwr396 +;main.c,619 :: dysp_on(); // dysplay ON + CALL _dysp_on+0 +;main.c,620 :: dysp_cnt = Dysp_delay * dysp_cnt_mult; + MOVF _Dysp_delay+0, 0 + MOVWF R0 + CALL _byte2double+0 + MOVF _dysp_cnt_mult+0, 0 + MOVWF R4 + MOVF _dysp_cnt_mult+1, 0 + MOVWF R5 + MOVF _dysp_cnt_mult+2, 0 + MOVWF R6 + MOVF _dysp_cnt_mult+3, 0 + MOVWF R7 + CALL _Mul_32x32_FP+0 + CALL _double2int+0 + MOVF R0, 0 + MOVWF _dysp_cnt+0 + MOVF R1, 0 + MOVWF _dysp_cnt+1 +;main.c,621 :: } +L_lcd_pwr396: +;main.c,623 :: if(Auto & SWR_fixed>=Auto_delta & ((SWR_fixed>SWR_fixed_old & (SWR_fixed-SWR_fixed_old)>delta) | (SWR_fixeddelta) | SWR_fixed_old==999)) + MOVLW 128 + XORWF lcd_pwr_SWR_fixed_L0+1, 0 + MOVWF R0 + MOVLW 128 + XORWF _Auto_delta+1, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__lcd_pwr684 + MOVF _Auto_delta+0, 0 + SUBWF lcd_pwr_SWR_fixed_L0+0, 0 +L__lcd_pwr684: + MOVLW 1 + BTFSS STATUS+0, 0 + MOVLW 0 + MOVWF R0 + MOVF R0, 0 + ANDWF _Auto+0, 0 + MOVWF R5 + MOVLW 128 + XORWF _SWR_fixed_old+1, 0 + MOVWF R3 + MOVLW 128 + XORWF lcd_pwr_SWR_fixed_L0+1, 0 + SUBWF R3, 0 + BTFSS STATUS+0, 2 + GOTO L__lcd_pwr685 + MOVF lcd_pwr_SWR_fixed_L0+0, 0 + SUBWF _SWR_fixed_old+0, 0 +L__lcd_pwr685: + MOVLW 1 + BTFSC STATUS+0, 0 + MOVLW 0 + MOVWF R3 + MOVF _SWR_fixed_old+0, 0 + SUBWF lcd_pwr_SWR_fixed_L0+0, 0 + MOVWF R1 + MOVF _SWR_fixed_old+1, 0 + SUBWFB lcd_pwr_SWR_fixed_L0+1, 0 + MOVWF R2 + MOVLW 128 + XORWF lcd_pwr_delta_L0+1, 0 + MOVWF R0 + MOVLW 128 + XORWF R2, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__lcd_pwr686 + MOVF R1, 0 + SUBWF lcd_pwr_delta_L0+0, 0 +L__lcd_pwr686: + MOVLW 1 + BTFSC STATUS+0, 0 + MOVLW 0 + MOVWF R0 + MOVF R0, 0 + ANDWF R3, 0 + MOVWF R4 + MOVLW 128 + XORWF lcd_pwr_SWR_fixed_L0+1, 0 + MOVWF R3 + MOVLW 128 + XORWF _SWR_fixed_old+1, 0 + SUBWF R3, 0 + BTFSS STATUS+0, 2 + GOTO L__lcd_pwr687 + MOVF _SWR_fixed_old+0, 0 + SUBWF lcd_pwr_SWR_fixed_L0+0, 0 +L__lcd_pwr687: + MOVLW 1 + BTFSC STATUS+0, 0 + MOVLW 0 + MOVWF R3 + MOVF lcd_pwr_SWR_fixed_L0+0, 0 + SUBWF _SWR_fixed_old+0, 0 + MOVWF R1 + MOVF lcd_pwr_SWR_fixed_L0+1, 0 + SUBWFB _SWR_fixed_old+1, 0 + MOVWF R2 + MOVLW 128 + XORWF lcd_pwr_delta_L0+1, 0 + MOVWF R0 + MOVLW 128 + XORWF R2, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__lcd_pwr688 + MOVF R1, 0 + SUBWF lcd_pwr_delta_L0+0, 0 +L__lcd_pwr688: + MOVLW 1 + BTFSC STATUS+0, 0 + MOVLW 0 + MOVWF R0 + MOVF R3, 0 + ANDWF R0, 1 + MOVF R0, 0 + IORWF R4, 0 + MOVWF R1 + MOVF _SWR_fixed_old+1, 0 + XORLW 3 + BTFSS STATUS+0, 2 + GOTO L__lcd_pwr689 + MOVLW 231 + XORWF _SWR_fixed_old+0, 0 +L__lcd_pwr689: + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + IORWF R0, 1 + MOVF R5, 0 + ANDWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_lcd_pwr397 +;main.c,624 :: Soft_tune = 1; + MOVLW 1 + MOVWF _Soft_tune+0 +L_lcd_pwr397: +;main.c,626 :: if(PORTB.B1==0 | PORTB.B2==0 | PORTB.B0==0) {button_delay(); if(but==1) {but = 0; return;} } // Fast return if button pressed + BTFSC PORTB+0, 1 + GOTO L__lcd_pwr690 + BSF R6, 0 + GOTO L__lcd_pwr691 +L__lcd_pwr690: + BCF R6, 0 +L__lcd_pwr691: + BTFSC PORTB+0, 2 + GOTO L__lcd_pwr692 + BSF 3, 0 + GOTO L__lcd_pwr693 +L__lcd_pwr692: + BCF 3, 0 +L__lcd_pwr693: + BTFSC R6, 0 + GOTO L__lcd_pwr694 + BTFSC 3, 0 + GOTO L__lcd_pwr694 + BCF R6, 0 + GOTO L__lcd_pwr695 +L__lcd_pwr694: + BSF R6, 0 +L__lcd_pwr695: + BTFSC PORTB+0, 0 + GOTO L__lcd_pwr696 + BSF 3, 0 + GOTO L__lcd_pwr697 +L__lcd_pwr696: + BCF 3, 0 +L__lcd_pwr697: + BTFSC R6, 0 + GOTO L__lcd_pwr698 + BTFSC 3, 0 + GOTO L__lcd_pwr698 + BCF R6, 0 + GOTO L__lcd_pwr699 +L__lcd_pwr698: + BSF R6, 0 +L__lcd_pwr699: + BTFSS R6, 0 + GOTO L_lcd_pwr398 + CALL _button_delay+0 + MOVF _but+0, 0 + XORLW 1 + BTFSS STATUS+0, 2 + GOTO L_lcd_pwr399 + CLRF _but+0 + GOTO L_end_lcd_pwr +L_lcd_pwr399: +L_lcd_pwr398: +;main.c,627 :: show_pwr(Power, SWR_fixed); + MOVF _Power+0, 0 + MOVWF FARG_show_pwr_Power+0 + MOVF _Power+1, 0 + MOVWF FARG_show_pwr_Power+1 + MOVF lcd_pwr_SWR_fixed_L0+0, 0 + MOVWF FARG_show_pwr_SWR+0 + MOVF lcd_pwr_SWR_fixed_L0+1, 0 + MOVWF FARG_show_pwr_SWR+1 + CALL _show_pwr+0 +;main.c,629 :: if(PORTB.B1==0 | PORTB.B2==0 | PORTB.B0==0) {button_delay(); if(but==1) {but = 0; return;} } + BTFSC PORTB+0, 1 + GOTO L__lcd_pwr700 + BSF R6, 0 + GOTO L__lcd_pwr701 +L__lcd_pwr700: + BCF R6, 0 +L__lcd_pwr701: + BTFSC PORTB+0, 2 + GOTO L__lcd_pwr702 + BSF 3, 0 + GOTO L__lcd_pwr703 +L__lcd_pwr702: + BCF 3, 0 +L__lcd_pwr703: + BTFSC R6, 0 + GOTO L__lcd_pwr704 + BTFSC 3, 0 + GOTO L__lcd_pwr704 + BCF R6, 0 + GOTO L__lcd_pwr705 +L__lcd_pwr704: + BSF R6, 0 +L__lcd_pwr705: + BTFSC PORTB+0, 0 + GOTO L__lcd_pwr706 + BSF 3, 0 + GOTO L__lcd_pwr707 +L__lcd_pwr706: + BCF 3, 0 +L__lcd_pwr707: + BTFSC R6, 0 + GOTO L__lcd_pwr708 + BTFSC 3, 0 + GOTO L__lcd_pwr708 + BCF R6, 0 + GOTO L__lcd_pwr709 +L__lcd_pwr708: + BSF R6, 0 +L__lcd_pwr709: + BTFSS R6, 0 + GOTO L_lcd_pwr400 + CALL _button_delay+0 + MOVF _but+0, 0 + XORLW 1 + BTFSS STATUS+0, 2 + GOTO L_lcd_pwr401 + CLRF _but+0 + GOTO L_end_lcd_pwr +L_lcd_pwr401: +L_lcd_pwr400: +;main.c,630 :: asm CLRWDT; + CLRWDT +;main.c,631 :: if(Overload==1) { + MOVF main_Overload+0, 0 + XORLW 1 + BTFSS STATUS+0, 2 + GOTO L_lcd_pwr402 +;main.c,632 :: if(type==4 | type==5) { // 128*64 OLED + MOVF _type+0, 0 + XORLW 4 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF _type+0, 0 + XORLW 5 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + IORWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_lcd_pwr403 +;main.c,633 :: led_wr_str (2, 16, " ", 8); + MOVLW 2 + MOVWF FARG_led_wr_str+0 + MOVLW 16 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr61_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr61_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,634 :: delay_ms(100); + MOVLW 3 + MOVWF R11 + MOVLW 8 + MOVWF R12 + MOVLW 119 + MOVWF R13 +L_lcd_pwr404: + DECFSZ R13, 1 + GOTO L_lcd_pwr404 + DECFSZ R12, 1 + GOTO L_lcd_pwr404 + DECFSZ R11, 1 + GOTO L_lcd_pwr404 +;main.c,635 :: led_wr_str (2, 16, "OVERLOAD", 8); + MOVLW 2 + MOVWF FARG_led_wr_str+0 + MOVLW 16 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr62_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr62_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,636 :: delay_ms(500); + MOVLW 11 + MOVWF R11 + MOVLW 38 + MOVWF R12 + MOVLW 93 + MOVWF R13 +L_lcd_pwr405: + DECFSZ R13, 1 + GOTO L_lcd_pwr405 + DECFSZ R12, 1 + GOTO L_lcd_pwr405 + DECFSZ R11, 1 + GOTO L_lcd_pwr405 + NOP + NOP +;main.c,637 :: asm CLRWDT; + CLRWDT +;main.c,638 :: led_wr_str (2, 16, " ", 8); + MOVLW 2 + MOVWF FARG_led_wr_str+0 + MOVLW 16 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr63_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr63_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,639 :: delay_ms(300); + MOVLW 7 + MOVWF R11 + MOVLW 23 + MOVWF R12 + MOVLW 106 + MOVWF R13 +L_lcd_pwr406: + DECFSZ R13, 1 + GOTO L_lcd_pwr406 + DECFSZ R12, 1 + GOTO L_lcd_pwr406 + DECFSZ R11, 1 + GOTO L_lcd_pwr406 + NOP +;main.c,640 :: asm CLRWDT; + CLRWDT +;main.c,641 :: led_wr_str (2, 16, "OVERLOAD", 8); + MOVLW 2 + MOVWF FARG_led_wr_str+0 + MOVLW 16 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr64_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr64_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,642 :: delay_ms(500); + MOVLW 11 + MOVWF R11 + MOVLW 38 + MOVWF R12 + MOVLW 93 + MOVWF R13 +L_lcd_pwr407: + DECFSZ R13, 1 + GOTO L_lcd_pwr407 + DECFSZ R12, 1 + GOTO L_lcd_pwr407 + DECFSZ R11, 1 + GOTO L_lcd_pwr407 + NOP + NOP +;main.c,643 :: asm CLRWDT; + CLRWDT +;main.c,644 :: led_wr_str (2, 16, " ", 8); + MOVLW 2 + MOVWF FARG_led_wr_str+0 + MOVLW 16 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr65_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr65_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,645 :: delay_ms(300); + MOVLW 7 + MOVWF R11 + MOVLW 23 + MOVWF R12 + MOVLW 106 + MOVWF R13 +L_lcd_pwr408: + DECFSZ R13, 1 + GOTO L_lcd_pwr408 + DECFSZ R12, 1 + GOTO L_lcd_pwr408 + DECFSZ R11, 1 + GOTO L_lcd_pwr408 + NOP +;main.c,646 :: asm CLRWDT; + CLRWDT +;main.c,647 :: led_wr_str (2, 16, "OVERLOAD", 8); + MOVLW 2 + MOVWF FARG_led_wr_str+0 + MOVLW 16 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr66_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr66_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,648 :: delay_ms(500); + MOVLW 11 + MOVWF R11 + MOVLW 38 + MOVWF R12 + MOVLW 93 + MOVWF R13 +L_lcd_pwr409: + DECFSZ R13, 1 + GOTO L_lcd_pwr409 + DECFSZ R12, 1 + GOTO L_lcd_pwr409 + DECFSZ R11, 1 + GOTO L_lcd_pwr409 + NOP + NOP +;main.c,649 :: asm CLRWDT; + CLRWDT +;main.c,650 :: led_wr_str (2, 16, " ", 8); + MOVLW 2 + MOVWF FARG_led_wr_str+0 + MOVLW 16 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr67_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr67_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,651 :: delay_ms(100); + MOVLW 3 + MOVWF R11 + MOVLW 8 + MOVWF R12 + MOVLW 119 + MOVWF R13 +L_lcd_pwr410: + DECFSZ R13, 1 + GOTO L_lcd_pwr410 + DECFSZ R12, 1 + GOTO L_lcd_pwr410 + DECFSZ R11, 1 + GOTO L_lcd_pwr410 +;main.c,652 :: led_wr_str (2, 16, "SWR= ", 8); + MOVLW 2 + MOVWF FARG_led_wr_str+0 + MOVLW 16 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr68_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr68_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,653 :: } + GOTO L_lcd_pwr411 +L_lcd_pwr403: +;main.c,654 :: else if(type!=0) { // 1602 & 128*32 + MOVF _type+0, 0 + XORLW 0 + BTFSC STATUS+0, 2 + GOTO L_lcd_pwr412 +;main.c,655 :: led_wr_str (1, 0, " ", 8); + MOVLW 1 + MOVWF FARG_led_wr_str+0 + CLRF FARG_led_wr_str+0 + MOVLW ?lstr69_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr69_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,656 :: delay_ms(100); + MOVLW 3 + MOVWF R11 + MOVLW 8 + MOVWF R12 + MOVLW 119 + MOVWF R13 +L_lcd_pwr413: + DECFSZ R13, 1 + GOTO L_lcd_pwr413 + DECFSZ R12, 1 + GOTO L_lcd_pwr413 + DECFSZ R11, 1 + GOTO L_lcd_pwr413 +;main.c,657 :: led_wr_str (1, 0, "OVERLOAD", 8); + MOVLW 1 + MOVWF FARG_led_wr_str+0 + CLRF FARG_led_wr_str+0 + MOVLW ?lstr70_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr70_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,658 :: delay_ms(500); + MOVLW 11 + MOVWF R11 + MOVLW 38 + MOVWF R12 + MOVLW 93 + MOVWF R13 +L_lcd_pwr414: + DECFSZ R13, 1 + GOTO L_lcd_pwr414 + DECFSZ R12, 1 + GOTO L_lcd_pwr414 + DECFSZ R11, 1 + GOTO L_lcd_pwr414 + NOP + NOP +;main.c,659 :: asm CLRWDT; + CLRWDT +;main.c,660 :: led_wr_str (1, 0, " ", 8); + MOVLW 1 + MOVWF FARG_led_wr_str+0 + CLRF FARG_led_wr_str+0 + MOVLW ?lstr71_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr71_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,661 :: delay_ms(300); + MOVLW 7 + MOVWF R11 + MOVLW 23 + MOVWF R12 + MOVLW 106 + MOVWF R13 +L_lcd_pwr415: + DECFSZ R13, 1 + GOTO L_lcd_pwr415 + DECFSZ R12, 1 + GOTO L_lcd_pwr415 + DECFSZ R11, 1 + GOTO L_lcd_pwr415 + NOP +;main.c,662 :: asm CLRWDT; + CLRWDT +;main.c,663 :: led_wr_str (1, 0, "OVERLOAD", 8); + MOVLW 1 + MOVWF FARG_led_wr_str+0 + CLRF FARG_led_wr_str+0 + MOVLW ?lstr72_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr72_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,664 :: delay_ms(500); + MOVLW 11 + MOVWF R11 + MOVLW 38 + MOVWF R12 + MOVLW 93 + MOVWF R13 +L_lcd_pwr416: + DECFSZ R13, 1 + GOTO L_lcd_pwr416 + DECFSZ R12, 1 + GOTO L_lcd_pwr416 + DECFSZ R11, 1 + GOTO L_lcd_pwr416 + NOP + NOP +;main.c,665 :: asm CLRWDT; + CLRWDT +;main.c,666 :: led_wr_str (1, 0, " ", 8); + MOVLW 1 + MOVWF FARG_led_wr_str+0 + CLRF FARG_led_wr_str+0 + MOVLW ?lstr73_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr73_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,667 :: delay_ms(300); + MOVLW 7 + MOVWF R11 + MOVLW 23 + MOVWF R12 + MOVLW 106 + MOVWF R13 +L_lcd_pwr417: + DECFSZ R13, 1 + GOTO L_lcd_pwr417 + DECFSZ R12, 1 + GOTO L_lcd_pwr417 + DECFSZ R11, 1 + GOTO L_lcd_pwr417 + NOP +;main.c,668 :: asm CLRWDT; + CLRWDT +;main.c,669 :: led_wr_str (1, 0, "OVERLOAD", 8); + MOVLW 1 + MOVWF FARG_led_wr_str+0 + CLRF FARG_led_wr_str+0 + MOVLW ?lstr74_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr74_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,670 :: delay_ms(500); + MOVLW 11 + MOVWF R11 + MOVLW 38 + MOVWF R12 + MOVLW 93 + MOVWF R13 +L_lcd_pwr418: + DECFSZ R13, 1 + GOTO L_lcd_pwr418 + DECFSZ R12, 1 + GOTO L_lcd_pwr418 + DECFSZ R11, 1 + GOTO L_lcd_pwr418 + NOP + NOP +;main.c,671 :: asm CLRWDT; + CLRWDT +;main.c,672 :: led_wr_str (1, 0, " ", 8); + MOVLW 1 + MOVWF FARG_led_wr_str+0 + CLRF FARG_led_wr_str+0 + MOVLW ?lstr75_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr75_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,673 :: delay_ms(100); + MOVLW 3 + MOVWF R11 + MOVLW 8 + MOVWF R12 + MOVLW 119 + MOVWF R13 +L_lcd_pwr419: + DECFSZ R13, 1 + GOTO L_lcd_pwr419 + DECFSZ R12, 1 + GOTO L_lcd_pwr419 + DECFSZ R11, 1 + GOTO L_lcd_pwr419 +;main.c,674 :: led_wr_str (1, 0, "SWR= ", 8); + MOVLW 1 + MOVWF FARG_led_wr_str+0 + CLRF FARG_led_wr_str+0 + MOVLW ?lstr76_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr76_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,675 :: } +L_lcd_pwr412: +L_lcd_pwr411: +;main.c,676 :: asm CLRWDT; + CLRWDT +;main.c,677 :: SWR_old = 10000; + MOVLW 16 + MOVWF _SWR_old+0 + MOVLW 39 + MOVWF _SWR_old+1 +;main.c,678 :: lcd_swr(SWR_fixed); + MOVF lcd_pwr_SWR_fixed_L0+0, 0 + MOVWF FARG_lcd_swr_swr+0 + MOVF lcd_pwr_SWR_fixed_L0+1, 0 + MOVWF FARG_lcd_swr_swr+1 + CALL _lcd_swr+0 +;main.c,679 :: } +L_lcd_pwr402: +;main.c,680 :: return; +;main.c,681 :: } +L_end_lcd_pwr: + RETURN +; end of _lcd_pwr + +_lcd_ind: + +;main.c,683 :: void lcd_ind() { +;main.c,685 :: asm CLRWDT; + CLRWDT +;main.c,687 :: work_int = 0; + CLRF _work_int+0 + CLRF _work_int+1 +;main.c,688 :: if(ind.B0) work_int += Ind1; + BTFSS main_ind+0, 0 + GOTO L_lcd_ind421 + MOVF _Ind1+0, 0 + ADDWF _work_int+0, 1 + MOVF _Ind1+1, 0 + ADDWFC _work_int+1, 1 +L_lcd_ind421: +;main.c,689 :: if(ind.B1) work_int += Ind2; + BTFSS main_ind+0, 1 + GOTO L_lcd_ind422 + MOVF _Ind2+0, 0 + ADDWF _work_int+0, 1 + MOVF _Ind2+1, 0 + ADDWFC _work_int+1, 1 +L_lcd_ind422: +;main.c,690 :: if(ind.B2) work_int += Ind3; + BTFSS main_ind+0, 2 + GOTO L_lcd_ind423 + MOVF _Ind3+0, 0 + ADDWF _work_int+0, 1 + MOVF _Ind3+1, 0 + ADDWFC _work_int+1, 1 +L_lcd_ind423: +;main.c,691 :: if(ind.B3) work_int += Ind4; + BTFSS main_ind+0, 3 + GOTO L_lcd_ind424 + MOVF _Ind4+0, 0 + ADDWF _work_int+0, 1 + MOVF _Ind4+1, 0 + ADDWFC _work_int+1, 1 +L_lcd_ind424: +;main.c,692 :: if(ind.B4) work_int += Ind5; + BTFSS main_ind+0, 4 + GOTO L_lcd_ind425 + MOVF _Ind5+0, 0 + ADDWF _work_int+0, 1 + MOVF _Ind5+1, 0 + ADDWFC _work_int+1, 1 +L_lcd_ind425: +;main.c,693 :: if(ind.B5) work_int += Ind6; + BTFSS main_ind+0, 5 + GOTO L_lcd_ind426 + MOVF _Ind6+0, 0 + ADDWF _work_int+0, 1 + MOVF _Ind6+1, 0 + ADDWFC _work_int+1, 1 +L_lcd_ind426: +;main.c,694 :: if(ind.B6) work_int += Ind7; + BTFSS main_ind+0, 6 + GOTO L_lcd_ind427 + MOVF _Ind7+0, 0 + ADDWF _work_int+0, 1 + MOVF _Ind7+1, 0 + ADDWFC _work_int+1, 1 +L_lcd_ind427: +;main.c,695 :: if(work_int>9999) { // more then 9999 nH + MOVLW 128 + XORLW 39 + MOVWF R0 + MOVLW 128 + XORWF _work_int+1, 0 + SUBWF R0, 0 + BTFSS STATUS+0, 2 + GOTO L__lcd_ind711 + MOVF _work_int+0, 0 + SUBLW 15 +L__lcd_ind711: + BTFSC STATUS+0, 0 + GOTO L_lcd_ind428 +;main.c,696 :: work_int += 50; // round + MOVLW 50 + ADDWF _work_int+0, 0 + MOVWF R0 + MOVLW 0 + ADDWFC _work_int+1, 0 + MOVWF R1 + MOVF R0, 0 + MOVWF _work_int+0 + MOVF R1, 0 + MOVWF _work_int+1 +;main.c,697 :: IntToStr(work_int, work_str); + MOVF R0, 0 + MOVWF FARG_IntToStr_input+0 + MOVF R1, 0 + MOVWF FARG_IntToStr_input+1 + MOVLW _work_str+0 + MOVWF FARG_IntToStr_output+0 + MOVLW hi_addr(_work_str+0) + MOVWF FARG_IntToStr_output+1 + CALL _IntToStr+0 +;main.c,698 :: work_str_2[0] = work_str[1]; + MOVF _work_str+1, 0 + MOVWF _work_str_2+0 +;main.c,699 :: work_str_2[1] = work_str[2]; + MOVF _work_str+2, 0 + MOVWF _work_str_2+1 +;main.c,700 :: work_str_2[2] = '.'; + MOVLW 46 + MOVWF _work_str_2+2 +;main.c,701 :: work_str_2[3] = work_str[3]; + MOVF _work_str+3, 0 + MOVWF _work_str_2+3 +;main.c,702 :: } + GOTO L_lcd_ind429 +L_lcd_ind428: +;main.c,704 :: IntToStr(work_int, work_str); + MOVF _work_int+0, 0 + MOVWF FARG_IntToStr_input+0 + MOVF _work_int+1, 0 + MOVWF FARG_IntToStr_input+1 + MOVLW _work_str+0 + MOVWF FARG_IntToStr_output+0 + MOVLW hi_addr(_work_str+0) + MOVWF FARG_IntToStr_output+1 + CALL _IntToStr+0 +;main.c,705 :: if(work_str[2] != ' ') work_str_2[0] = work_str[2]; else work_str_2[0] = '0'; + MOVF _work_str+2, 0 + XORLW 32 + BTFSC STATUS+0, 2 + GOTO L_lcd_ind430 + MOVF _work_str+2, 0 + MOVWF _work_str_2+0 + GOTO L_lcd_ind431 +L_lcd_ind430: + MOVLW 48 + MOVWF _work_str_2+0 +L_lcd_ind431: +;main.c,706 :: work_str_2[1] = '.'; + MOVLW 46 + MOVWF _work_str_2+1 +;main.c,707 :: if(work_str[3] != ' ') work_str_2[2] = work_str[3]; else work_str_2[2] = '0'; + MOVF _work_str+3, 0 + XORLW 32 + BTFSC STATUS+0, 2 + GOTO L_lcd_ind432 + MOVF _work_str+3, 0 + MOVWF _work_str_2+2 + GOTO L_lcd_ind433 +L_lcd_ind432: + MOVLW 48 + MOVWF _work_str_2+2 +L_lcd_ind433: +;main.c,708 :: if(work_str[4] != ' ') work_str_2[3] = work_str[4]; else work_str_2[3] = '0'; + MOVF _work_str+4, 0 + XORLW 32 + BTFSC STATUS+0, 2 + GOTO L_lcd_ind434 + MOVF _work_str+4, 0 + MOVWF _work_str_2+3 + GOTO L_lcd_ind435 +L_lcd_ind434: + MOVLW 48 + MOVWF _work_str_2+3 +L_lcd_ind435: +;main.c,709 :: } +L_lcd_ind429: +;main.c,710 :: if(type==4 | type==5) { // 128*64 OLED + MOVF _type+0, 0 + XORLW 4 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF _type+0, 0 + XORLW 5 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + IORWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_lcd_ind436 +;main.c,711 :: if(SW==1) column = 4; else column = 6; + MOVF main_SW+0, 0 + XORLW 1 + BTFSS STATUS+0, 2 + GOTO L_lcd_ind437 + MOVLW 4 + MOVWF lcd_ind_column_L0+0 + GOTO L_lcd_ind438 +L_lcd_ind437: + MOVLW 6 + MOVWF lcd_ind_column_L0+0 +L_lcd_ind438: +;main.c,712 :: led_wr_str (column, 16, "L=", 2); + MOVF lcd_ind_column_L0+0, 0 + MOVWF FARG_led_wr_str+0 + MOVLW 16 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr77_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr77_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 2 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,713 :: led_wr_str (column, 16+6*12, "uH", 2); + MOVF lcd_ind_column_L0+0, 0 + MOVWF FARG_led_wr_str+0 + MOVLW 88 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr78_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr78_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 2 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,714 :: led_wr_str (column, 16+2*12, work_str_2, 4); + MOVF lcd_ind_column_L0+0, 0 + MOVWF FARG_led_wr_str+0 + MOVLW 40 + MOVWF FARG_led_wr_str+0 + MOVLW _work_str_2+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(_work_str_2+0) + MOVWF FARG_led_wr_str+1 + MOVLW 4 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,715 :: } + GOTO L_lcd_ind439 +L_lcd_ind436: +;main.c,716 :: else if(type==2 | type==3) {// 128*32 OLED + MOVF _type+0, 0 + XORLW 2 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF _type+0, 0 + XORLW 3 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + IORWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_lcd_ind440 +;main.c,717 :: if(SW==1) column = 0; else column = 1; + MOVF main_SW+0, 0 + XORLW 1 + BTFSS STATUS+0, 2 + GOTO L_lcd_ind441 + CLRF lcd_ind_column_L0+0 + GOTO L_lcd_ind442 +L_lcd_ind441: + MOVLW 1 + MOVWF lcd_ind_column_L0+0 +L_lcd_ind442: +;main.c,718 :: led_wr_str (column, 9, "L=", 2); + MOVF lcd_ind_column_L0+0, 0 + MOVWF FARG_led_wr_str+0 + MOVLW 9 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr79_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr79_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 2 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,719 :: led_wr_str (column, 15, "uH", 2); + MOVF lcd_ind_column_L0+0, 0 + MOVWF FARG_led_wr_str+0 + MOVLW 15 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr80_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr80_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 2 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,720 :: led_wr_str (column, 11, work_str_2, 4); + MOVF lcd_ind_column_L0+0, 0 + MOVWF FARG_led_wr_str+0 + MOVLW 11 + MOVWF FARG_led_wr_str+0 + MOVLW _work_str_2+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(_work_str_2+0) + MOVWF FARG_led_wr_str+1 + MOVLW 4 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,721 :: } + GOTO L_lcd_ind443 +L_lcd_ind440: +;main.c,722 :: else if(type==1) { // 1602 LCD + MOVF _type+0, 0 + XORLW 1 + BTFSS STATUS+0, 2 + GOTO L_lcd_ind444 +;main.c,723 :: if(SW==1) column = 0; else column = 1; + MOVF main_SW+0, 0 + XORLW 1 + BTFSS STATUS+0, 2 + GOTO L_lcd_ind445 + CLRF lcd_ind_column_L0+0 + GOTO L_lcd_ind446 +L_lcd_ind445: + MOVLW 1 + MOVWF lcd_ind_column_L0+0 +L_lcd_ind446: +;main.c,724 :: led_wr_str (column, 9, "L=", 2); + MOVF lcd_ind_column_L0+0, 0 + MOVWF FARG_led_wr_str+0 + MOVLW 9 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr81_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr81_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 2 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,725 :: led_wr_str (column, 15, "u", 1); + MOVF lcd_ind_column_L0+0, 0 + MOVWF FARG_led_wr_str+0 + MOVLW 15 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr82_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr82_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 1 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,726 :: led_wr_str (column, 11, work_str_2, 4); + MOVF lcd_ind_column_L0+0, 0 + MOVWF FARG_led_wr_str+0 + MOVLW 11 + MOVWF FARG_led_wr_str+0 + MOVLW _work_str_2+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(_work_str_2+0) + MOVWF FARG_led_wr_str+1 + MOVLW 4 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,727 :: } +L_lcd_ind444: +L_lcd_ind443: +L_lcd_ind439: +;main.c,729 :: asm CLRWDT; + CLRWDT +;main.c,731 :: work_int = 0; + CLRF _work_int+0 + CLRF _work_int+1 +;main.c,732 :: if(cap.B0) work_int += Cap1; + BTFSS main_cap+0, 0 + GOTO L_lcd_ind448 + MOVF _Cap1+0, 0 + ADDWF _work_int+0, 1 + MOVF _Cap1+1, 0 + ADDWFC _work_int+1, 1 +L_lcd_ind448: +;main.c,733 :: if(cap.B1) work_int += Cap2; + BTFSS main_cap+0, 1 + GOTO L_lcd_ind449 + MOVF _Cap2+0, 0 + ADDWF _work_int+0, 1 + MOVF _Cap2+1, 0 + ADDWFC _work_int+1, 1 +L_lcd_ind449: +;main.c,734 :: if(cap.B2) work_int += Cap3; + BTFSS main_cap+0, 2 + GOTO L_lcd_ind450 + MOVF _Cap3+0, 0 + ADDWF _work_int+0, 1 + MOVF _Cap3+1, 0 + ADDWFC _work_int+1, 1 +L_lcd_ind450: +;main.c,735 :: if(cap.B3) work_int += Cap4; + BTFSS main_cap+0, 3 + GOTO L_lcd_ind451 + MOVF _Cap4+0, 0 + ADDWF _work_int+0, 1 + MOVF _Cap4+1, 0 + ADDWFC _work_int+1, 1 +L_lcd_ind451: +;main.c,736 :: if(cap.B4) work_int += Cap5; + BTFSS main_cap+0, 4 + GOTO L_lcd_ind452 + MOVF _Cap5+0, 0 + ADDWF _work_int+0, 1 + MOVF _Cap5+1, 0 + ADDWFC _work_int+1, 1 +L_lcd_ind452: +;main.c,737 :: if(cap.B5) work_int += Cap6; + BTFSS main_cap+0, 5 + GOTO L_lcd_ind453 + MOVF _Cap6+0, 0 + ADDWF _work_int+0, 1 + MOVF _Cap6+1, 0 + ADDWFC _work_int+1, 1 +L_lcd_ind453: +;main.c,738 :: if(cap.B6) work_int += Cap7; + BTFSS main_cap+0, 6 + GOTO L_lcd_ind454 + MOVF _Cap7+0, 0 + ADDWF _work_int+0, 1 + MOVF _Cap7+1, 0 + ADDWFC _work_int+1, 1 +L_lcd_ind454: +;main.c,739 :: IntToStr(work_int, work_str); + MOVF _work_int+0, 0 + MOVWF FARG_IntToStr_input+0 + MOVF _work_int+1, 0 + MOVWF FARG_IntToStr_input+1 + MOVLW _work_str+0 + MOVWF FARG_IntToStr_output+0 + MOVLW hi_addr(_work_str+0) + MOVWF FARG_IntToStr_output+1 + CALL _IntToStr+0 +;main.c,740 :: work_str_2[0] = work_str[2]; + MOVF _work_str+2, 0 + MOVWF _work_str_2+0 +;main.c,741 :: work_str_2[1] = work_str[3]; + MOVF _work_str+3, 0 + MOVWF _work_str_2+1 +;main.c,742 :: work_str_2[2] = work_str[4]; + MOVF _work_str+4, 0 + MOVWF _work_str_2+2 +;main.c,743 :: work_str_2[3] = work_str[5]; + MOVF _work_str+5, 0 + MOVWF _work_str_2+3 +;main.c,745 :: if(type==4 | type==5) { // 128*64 OLED + MOVF _type+0, 0 + XORLW 4 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF _type+0, 0 + XORLW 5 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + IORWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_lcd_ind455 +;main.c,746 :: if(SW==1) column = 6; else column = 4; + MOVF main_SW+0, 0 + XORLW 1 + BTFSS STATUS+0, 2 + GOTO L_lcd_ind456 + MOVLW 6 + MOVWF lcd_ind_column_L0+0 + GOTO L_lcd_ind457 +L_lcd_ind456: + MOVLW 4 + MOVWF lcd_ind_column_L0+0 +L_lcd_ind457: +;main.c,747 :: led_wr_str (column, 16, "C=", 2); + MOVF lcd_ind_column_L0+0, 0 + MOVWF FARG_led_wr_str+0 + MOVLW 16 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr83_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr83_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 2 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,748 :: led_wr_str (column, 16+6*12, "pF", 2); + MOVF lcd_ind_column_L0+0, 0 + MOVWF FARG_led_wr_str+0 + MOVLW 88 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr84_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr84_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 2 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,749 :: led_wr_str (column, 16+2*12, work_str_2, 4); + MOVF lcd_ind_column_L0+0, 0 + MOVWF FARG_led_wr_str+0 + MOVLW 40 + MOVWF FARG_led_wr_str+0 + MOVLW _work_str_2+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(_work_str_2+0) + MOVWF FARG_led_wr_str+1 + MOVLW 4 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,750 :: } + GOTO L_lcd_ind458 +L_lcd_ind455: +;main.c,751 :: else if(type==2 | type==3) {// 128*32 OLED + MOVF _type+0, 0 + XORLW 2 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF _type+0, 0 + XORLW 3 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + IORWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_lcd_ind459 +;main.c,752 :: if(SW==1) column = 1; else column = 0; + MOVF main_SW+0, 0 + XORLW 1 + BTFSS STATUS+0, 2 + GOTO L_lcd_ind460 + MOVLW 1 + MOVWF lcd_ind_column_L0+0 + GOTO L_lcd_ind461 +L_lcd_ind460: + CLRF lcd_ind_column_L0+0 +L_lcd_ind461: +;main.c,753 :: led_wr_str (column, 9, "C=", 2); + MOVF lcd_ind_column_L0+0, 0 + MOVWF FARG_led_wr_str+0 + MOVLW 9 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr85_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr85_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 2 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,754 :: led_wr_str (column, 15, "pF", 2); + MOVF lcd_ind_column_L0+0, 0 + MOVWF FARG_led_wr_str+0 + MOVLW 15 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr86_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr86_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 2 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,755 :: led_wr_str (column, 11, work_str_2, 4); + MOVF lcd_ind_column_L0+0, 0 + MOVWF FARG_led_wr_str+0 + MOVLW 11 + MOVWF FARG_led_wr_str+0 + MOVLW _work_str_2+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(_work_str_2+0) + MOVWF FARG_led_wr_str+1 + MOVLW 4 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,756 :: } + GOTO L_lcd_ind462 +L_lcd_ind459: +;main.c,757 :: else if(type==1) { // 1602 LCD + MOVF _type+0, 0 + XORLW 1 + BTFSS STATUS+0, 2 + GOTO L_lcd_ind463 +;main.c,758 :: if(SW==1) column = 1; else column = 0; + MOVF main_SW+0, 0 + XORLW 1 + BTFSS STATUS+0, 2 + GOTO L_lcd_ind464 + MOVLW 1 + MOVWF lcd_ind_column_L0+0 + GOTO L_lcd_ind465 +L_lcd_ind464: + CLRF lcd_ind_column_L0+0 +L_lcd_ind465: +;main.c,759 :: led_wr_str (column, 9, "C=", 2); + MOVF lcd_ind_column_L0+0, 0 + MOVWF FARG_led_wr_str+0 + MOVLW 9 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr87_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr87_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 2 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,760 :: led_wr_str (column, 15, "p", 1); + MOVF lcd_ind_column_L0+0, 0 + MOVWF FARG_led_wr_str+0 + MOVLW 15 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr88_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr88_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 1 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,761 :: led_wr_str (column, 11, work_str_2, 4); + MOVF lcd_ind_column_L0+0, 0 + MOVWF FARG_led_wr_str+0 + MOVLW 11 + MOVWF FARG_led_wr_str+0 + MOVLW _work_str_2+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(_work_str_2+0) + MOVWF FARG_led_wr_str+1 + MOVLW 4 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +;main.c,762 :: } +L_lcd_ind463: +L_lcd_ind462: +L_lcd_ind458: +;main.c,764 :: asm CLRWDT; + CLRWDT +;main.c,765 :: return; +;main.c,766 :: } +L_end_lcd_ind: + RETURN +; end of _lcd_ind + +_Test_init: + +;main.c,769 :: void Test_init(void) { // Test mode +;main.c,770 :: if(type==4 | type==5) // 128*64 OLED + MOVF _type+0, 0 + XORLW 4 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF _type+0, 0 + XORLW 5 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + IORWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_Test_init466 +;main.c,771 :: led_wr_str (0, 10, "TEST MODE", 9); + CLRF FARG_led_wr_str+0 + MOVLW 10 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr89_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr89_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 9 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 + GOTO L_Test_init467 +L_Test_init466: +;main.c,772 :: else if(type!=0) // 1602 LCD or 128*32 OLED + MOVF _type+0, 0 + XORLW 0 + BTFSC STATUS+0, 2 + GOTO L_Test_init468 +;main.c,773 :: led_wr_str (0, 3, "TEST MODE", 9); + CLRF FARG_led_wr_str+0 + MOVLW 3 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr90_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr90_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 9 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +L_Test_init468: +L_Test_init467: +;main.c,774 :: asm CLRWDT; + CLRWDT +;main.c,775 :: Delay_ms(500); + MOVLW 11 + MOVWF R11 + MOVLW 38 + MOVWF R12 + MOVLW 93 + MOVWF R13 +L_Test_init469: + DECFSZ R13, 1 + GOTO L_Test_init469 + DECFSZ R12, 1 + GOTO L_Test_init469 + DECFSZ R11, 1 + GOTO L_Test_init469 + NOP + NOP +;main.c,776 :: asm CLRWDT; + CLRWDT +;main.c,777 :: Delay_ms(500); + MOVLW 11 + MOVWF R11 + MOVLW 38 + MOVWF R12 + MOVLW 93 + MOVWF R13 +L_Test_init470: + DECFSZ R13, 1 + GOTO L_Test_init470 + DECFSZ R12, 1 + GOTO L_Test_init470 + DECFSZ R11, 1 + GOTO L_Test_init470 + NOP + NOP +;main.c,778 :: asm CLRWDT; + CLRWDT +;main.c,779 :: Delay_ms(500); + MOVLW 11 + MOVWF R11 + MOVLW 38 + MOVWF R12 + MOVLW 93 + MOVWF R13 +L_Test_init471: + DECFSZ R13, 1 + GOTO L_Test_init471 + DECFSZ R12, 1 + GOTO L_Test_init471 + DECFSZ R11, 1 + GOTO L_Test_init471 + NOP + NOP +;main.c,780 :: asm CLRWDT; + CLRWDT +;main.c,781 :: Delay_ms(500); + MOVLW 11 + MOVWF R11 + MOVLW 38 + MOVWF R12 + MOVLW 93 + MOVWF R13 +L_Test_init472: + DECFSZ R13, 1 + GOTO L_Test_init472 + DECFSZ R12, 1 + GOTO L_Test_init472 + DECFSZ R11, 1 + GOTO L_Test_init472 + NOP + NOP +;main.c,782 :: asm CLRWDT; + CLRWDT +;main.c,783 :: if(type==4 | type==5) // 128*64 OLED + MOVF _type+0, 0 + XORLW 4 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF _type+0, 0 + XORLW 5 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + IORWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_Test_init473 +;main.c,784 :: led_wr_str (0, 10, " ", 9); + CLRF FARG_led_wr_str+0 + MOVLW 10 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr91_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr91_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 9 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 + GOTO L_Test_init474 +L_Test_init473: +;main.c,785 :: else if(type!=0) // 1602 LCD or 128*32 OLED + MOVF _type+0, 0 + XORLW 0 + BTFSC STATUS+0, 2 + GOTO L_Test_init475 +;main.c,786 :: led_wr_str (0, 3, " ", 9); + CLRF FARG_led_wr_str+0 + MOVLW 3 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr92_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr92_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 9 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +L_Test_init475: +L_Test_init474: +;main.c,787 :: atu_reset(); + CALL _atu_reset+0 +;main.c,788 :: SW = 1; // C to OUT + MOVLW 1 + MOVWF main_SW+0 +;main.c,789 :: set_sw(SW); + MOVLW 1 + MOVWF FARG_set_sw_SW+0 + CALL _set_sw+0 +;main.c,790 :: EEPROM_Write(255, cap); + MOVLW 255 + MOVWF FARG_EEPROM_Write_Address+0 + MOVF main_cap+0, 0 + MOVWF FARG_EEPROM_Write_data_+0 + CALL _EEPROM_Write+0 +;main.c,791 :: EEPROM_Write(254, ind); + MOVLW 254 + MOVWF FARG_EEPROM_Write_Address+0 + MOVF main_ind+0, 0 + MOVWF FARG_EEPROM_Write_data_+0 + CALL _EEPROM_Write+0 +;main.c,792 :: EEPROM_Write(253, SW); + MOVLW 253 + MOVWF FARG_EEPROM_Write_Address+0 + MOVF main_SW+0, 0 + MOVWF FARG_EEPROM_Write_data_+0 + CALL _EEPROM_Write+0 +;main.c,794 :: if(type==4 | type==5) // 128*64 OLED + MOVF _type+0, 0 + XORLW 4 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF _type+0, 0 + XORLW 5 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + IORWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_Test_init476 +;main.c,795 :: led_wr_str (0, 16+12*8, "l", 1); + CLRF FARG_led_wr_str+0 + MOVLW 112 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr93_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr93_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 1 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 + GOTO L_Test_init477 +L_Test_init476: +;main.c,796 :: else if(type!=0) // 1602 LCD or 128*32 OLED + MOVF _type+0, 0 + XORLW 0 + BTFSC STATUS+0, 2 + GOTO L_Test_init478 +;main.c,797 :: led_wr_str (0, 8, "l", 1); + CLRF FARG_led_wr_str+0 + MOVLW 8 + MOVWF FARG_led_wr_str+0 + MOVLW ?lstr94_main+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(?lstr94_main+0) + MOVWF FARG_led_wr_str+1 + MOVLW 1 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +L_Test_init478: +L_Test_init477: +;main.c,799 :: lcd_prep_short = 1; + MOVLW 1 + MOVWF _lcd_prep_short+0 +;main.c,800 :: lcd_prep(); + CALL _lcd_prep+0 +;main.c,801 :: return; +;main.c,802 :: } +L_end_Test_init: + RETURN +; end of _Test_init + +_cells_init: + +;main.c,805 :: void cells_init(void) { +;main.c,807 :: asm CLRWDT; + CLRWDT +;main.c,809 :: type = EEPROM_Read(1); // type of display + MOVLW 1 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF _type+0 +;main.c,810 :: if(EEPROM_Read(2) == 1) Auto = 1; + MOVLW 2 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + XORLW 1 + BTFSS STATUS+0, 2 + GOTO L_cells_init479 + MOVLW 1 + MOVWF _Auto+0 +L_cells_init479: +;main.c,811 :: Rel_Del = Bcd2Dec(EEPROM_Read(3)); // Relay's Delay + MOVLW 3 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF FARG_Bcd2Dec_bcdnum+0 + CALL _Bcd2Dec+0 + MOVF R0, 0 + MOVWF main_Rel_Del+0 + CLRF main_Rel_Del+1 +;main.c,812 :: Auto_delta = Bcd2Dec(EEPROM_Read(4)) * 10; // Auto_delta + MOVLW 4 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF FARG_Bcd2Dec_bcdnum+0 + CALL _Bcd2Dec+0 + MOVLW 10 + MOVWF R4 + CALL _Mul_8X8_U+0 + MOVF R0, 0 + MOVWF _Auto_delta+0 + MOVF R1, 0 + MOVWF _Auto_delta+1 +;main.c,813 :: min_for_start = Bcd2Dec(EEPROM_Read(5)) * 10; // P_min_for_start + MOVLW 5 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF FARG_Bcd2Dec_bcdnum+0 + CALL _Bcd2Dec+0 + MOVLW 10 + MOVWF R4 + CALL _Mul_8X8_U+0 + MOVF R0, 0 + MOVWF main_min_for_start+0 + MOVF R1, 0 + MOVWF main_min_for_start+1 +;main.c,814 :: max_for_start = Bcd2Dec(EEPROM_Read(6)) * 10; // P_max_for_start + MOVLW 6 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF FARG_Bcd2Dec_bcdnum+0 + CALL _Bcd2Dec+0 + MOVLW 10 + MOVWF R4 + CALL _Mul_8X8_U+0 + MOVF R0, 0 + MOVWF main_max_for_start+0 + MOVF R1, 0 + MOVWF main_max_for_start+1 +;main.c,817 :: max_swr = Bcd2Dec(EEPROM_Read(9)) * 10; // Max SWR + MOVLW 9 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF FARG_Bcd2Dec_bcdnum+0 + CALL _Bcd2Dec+0 + MOVLW 10 + MOVWF R4 + CALL _Mul_8X8_U+0 + MOVF R0, 0 + MOVWF main_max_swr+0 + MOVF R1, 0 + MOVWF main_max_swr+1 +;main.c,818 :: L_q = EEPROM_Read(10); + MOVLW 10 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF main_L_q+0 +;main.c,819 :: L_linear = EEPROM_Read(11); + MOVLW 11 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF main_L_linear+0 +;main.c,820 :: C_q = EEPROM_Read(12); + MOVLW 12 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF main_C_q+0 +;main.c,821 :: C_linear = EEPROM_Read(13); + MOVLW 13 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF main_C_linear+0 +;main.c,822 :: D_correction = EEPROM_Read(14); + MOVLW 14 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF main_D_correction+0 +;main.c,823 :: L_invert = EEPROM_Read(15); + MOVLW 15 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF main_L_invert+0 +;main.c,825 :: asm CLRWDT; + CLRWDT +;main.c,826 :: Ind1 = Bcd2Dec(EEPROM_Read(16)) * 100 + Bcd2Dec(EEPROM_Read(17)); // Ind1 + MOVLW 16 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF FARG_Bcd2Dec_bcdnum+0 + CALL _Bcd2Dec+0 + MOVLW 100 + MOVWF R4 + CALL _Mul_8X8_U+0 + MOVF R0, 0 + MOVWF FLOC__cells_init+0 + MOVF R1, 0 + MOVWF FLOC__cells_init+1 + MOVLW 17 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF FARG_Bcd2Dec_bcdnum+0 + CALL _Bcd2Dec+0 + MOVF R0, 0 + ADDWF FLOC__cells_init+0, 0 + MOVWF _Ind1+0 + MOVLW 0 + ADDWFC FLOC__cells_init+1, 0 + MOVWF _Ind1+1 +;main.c,827 :: Ind2 = Bcd2Dec(EEPROM_Read(18)) * 100 + Bcd2Dec(EEPROM_Read(19)); // Ind2 + MOVLW 18 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF FARG_Bcd2Dec_bcdnum+0 + CALL _Bcd2Dec+0 + MOVLW 100 + MOVWF R4 + CALL _Mul_8X8_U+0 + MOVF R0, 0 + MOVWF FLOC__cells_init+0 + MOVF R1, 0 + MOVWF FLOC__cells_init+1 + MOVLW 19 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF FARG_Bcd2Dec_bcdnum+0 + CALL _Bcd2Dec+0 + MOVF R0, 0 + ADDWF FLOC__cells_init+0, 0 + MOVWF _Ind2+0 + MOVLW 0 + ADDWFC FLOC__cells_init+1, 0 + MOVWF _Ind2+1 +;main.c,828 :: Ind3 = Bcd2Dec(EEPROM_Read(20)) * 100 + Bcd2Dec(EEPROM_Read(21)); // Ind3 + MOVLW 20 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF FARG_Bcd2Dec_bcdnum+0 + CALL _Bcd2Dec+0 + MOVLW 100 + MOVWF R4 + CALL _Mul_8X8_U+0 + MOVF R0, 0 + MOVWF FLOC__cells_init+0 + MOVF R1, 0 + MOVWF FLOC__cells_init+1 + MOVLW 21 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF FARG_Bcd2Dec_bcdnum+0 + CALL _Bcd2Dec+0 + MOVF R0, 0 + ADDWF FLOC__cells_init+0, 0 + MOVWF _Ind3+0 + MOVLW 0 + ADDWFC FLOC__cells_init+1, 0 + MOVWF _Ind3+1 +;main.c,829 :: Ind4 = Bcd2Dec(EEPROM_Read(22)) * 100 + Bcd2Dec(EEPROM_Read(23)); // Ind4 + MOVLW 22 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF FARG_Bcd2Dec_bcdnum+0 + CALL _Bcd2Dec+0 + MOVLW 100 + MOVWF R4 + CALL _Mul_8X8_U+0 + MOVF R0, 0 + MOVWF FLOC__cells_init+0 + MOVF R1, 0 + MOVWF FLOC__cells_init+1 + MOVLW 23 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF FARG_Bcd2Dec_bcdnum+0 + CALL _Bcd2Dec+0 + MOVF R0, 0 + ADDWF FLOC__cells_init+0, 0 + MOVWF _Ind4+0 + MOVLW 0 + ADDWFC FLOC__cells_init+1, 0 + MOVWF _Ind4+1 +;main.c,830 :: Ind5 = Bcd2Dec(EEPROM_Read(24)) * 100 + Bcd2Dec(EEPROM_Read(25)); // Ind5 + MOVLW 24 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF FARG_Bcd2Dec_bcdnum+0 + CALL _Bcd2Dec+0 + MOVLW 100 + MOVWF R4 + CALL _Mul_8X8_U+0 + MOVF R0, 0 + MOVWF FLOC__cells_init+0 + MOVF R1, 0 + MOVWF FLOC__cells_init+1 + MOVLW 25 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF FARG_Bcd2Dec_bcdnum+0 + CALL _Bcd2Dec+0 + MOVF R0, 0 + ADDWF FLOC__cells_init+0, 0 + MOVWF _Ind5+0 + MOVLW 0 + ADDWFC FLOC__cells_init+1, 0 + MOVWF _Ind5+1 +;main.c,831 :: Ind6 = Bcd2Dec(EEPROM_Read(26)) * 100 + Bcd2Dec(EEPROM_Read(27)); // Ind6 + MOVLW 26 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF FARG_Bcd2Dec_bcdnum+0 + CALL _Bcd2Dec+0 + MOVLW 100 + MOVWF R4 + CALL _Mul_8X8_U+0 + MOVF R0, 0 + MOVWF FLOC__cells_init+0 + MOVF R1, 0 + MOVWF FLOC__cells_init+1 + MOVLW 27 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF FARG_Bcd2Dec_bcdnum+0 + CALL _Bcd2Dec+0 + MOVF R0, 0 + ADDWF FLOC__cells_init+0, 0 + MOVWF _Ind6+0 + MOVLW 0 + ADDWFC FLOC__cells_init+1, 0 + MOVWF _Ind6+1 +;main.c,832 :: Ind7 = Bcd2Dec(EEPROM_Read(28)) * 100 + Bcd2Dec(EEPROM_Read(29)); // Ind7 + MOVLW 28 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF FARG_Bcd2Dec_bcdnum+0 + CALL _Bcd2Dec+0 + MOVLW 100 + MOVWF R4 + CALL _Mul_8X8_U+0 + MOVF R0, 0 + MOVWF FLOC__cells_init+0 + MOVF R1, 0 + MOVWF FLOC__cells_init+1 + MOVLW 29 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF FARG_Bcd2Dec_bcdnum+0 + CALL _Bcd2Dec+0 + MOVF R0, 0 + ADDWF FLOC__cells_init+0, 0 + MOVWF _Ind7+0 + MOVLW 0 + ADDWFC FLOC__cells_init+1, 0 + MOVWF _Ind7+1 +;main.c,834 :: Cap1 = Bcd2Dec(EEPROM_Read(32)) * 100 + Bcd2Dec(EEPROM_Read(33)); // Cap1 + MOVLW 32 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF FARG_Bcd2Dec_bcdnum+0 + CALL _Bcd2Dec+0 + MOVLW 100 + MOVWF R4 + CALL _Mul_8X8_U+0 + MOVF R0, 0 + MOVWF FLOC__cells_init+0 + MOVF R1, 0 + MOVWF FLOC__cells_init+1 + MOVLW 33 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF FARG_Bcd2Dec_bcdnum+0 + CALL _Bcd2Dec+0 + MOVF R0, 0 + ADDWF FLOC__cells_init+0, 0 + MOVWF _Cap1+0 + MOVLW 0 + ADDWFC FLOC__cells_init+1, 0 + MOVWF _Cap1+1 +;main.c,835 :: Cap2 = Bcd2Dec(EEPROM_Read(34)) * 100 + Bcd2Dec(EEPROM_Read(35)); // Cap2 + MOVLW 34 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF FARG_Bcd2Dec_bcdnum+0 + CALL _Bcd2Dec+0 + MOVLW 100 + MOVWF R4 + CALL _Mul_8X8_U+0 + MOVF R0, 0 + MOVWF FLOC__cells_init+0 + MOVF R1, 0 + MOVWF FLOC__cells_init+1 + MOVLW 35 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF FARG_Bcd2Dec_bcdnum+0 + CALL _Bcd2Dec+0 + MOVF R0, 0 + ADDWF FLOC__cells_init+0, 0 + MOVWF _Cap2+0 + MOVLW 0 + ADDWFC FLOC__cells_init+1, 0 + MOVWF _Cap2+1 +;main.c,836 :: Cap3 = Bcd2Dec(EEPROM_Read(36)) * 100 + Bcd2Dec(EEPROM_Read(37)); // Cap3 + MOVLW 36 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF FARG_Bcd2Dec_bcdnum+0 + CALL _Bcd2Dec+0 + MOVLW 100 + MOVWF R4 + CALL _Mul_8X8_U+0 + MOVF R0, 0 + MOVWF FLOC__cells_init+0 + MOVF R1, 0 + MOVWF FLOC__cells_init+1 + MOVLW 37 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF FARG_Bcd2Dec_bcdnum+0 + CALL _Bcd2Dec+0 + MOVF R0, 0 + ADDWF FLOC__cells_init+0, 0 + MOVWF _Cap3+0 + MOVLW 0 + ADDWFC FLOC__cells_init+1, 0 + MOVWF _Cap3+1 +;main.c,837 :: Cap4 = Bcd2Dec(EEPROM_Read(38)) * 100 + Bcd2Dec(EEPROM_Read(39)); // Cap4 + MOVLW 38 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF FARG_Bcd2Dec_bcdnum+0 + CALL _Bcd2Dec+0 + MOVLW 100 + MOVWF R4 + CALL _Mul_8X8_U+0 + MOVF R0, 0 + MOVWF FLOC__cells_init+0 + MOVF R1, 0 + MOVWF FLOC__cells_init+1 + MOVLW 39 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF FARG_Bcd2Dec_bcdnum+0 + CALL _Bcd2Dec+0 + MOVF R0, 0 + ADDWF FLOC__cells_init+0, 0 + MOVWF _Cap4+0 + MOVLW 0 + ADDWFC FLOC__cells_init+1, 0 + MOVWF _Cap4+1 +;main.c,838 :: Cap5 = Bcd2Dec(EEPROM_Read(40)) * 100 + Bcd2Dec(EEPROM_Read(41)); // Cap5 + MOVLW 40 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF FARG_Bcd2Dec_bcdnum+0 + CALL _Bcd2Dec+0 + MOVLW 100 + MOVWF R4 + CALL _Mul_8X8_U+0 + MOVF R0, 0 + MOVWF FLOC__cells_init+0 + MOVF R1, 0 + MOVWF FLOC__cells_init+1 + MOVLW 41 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF FARG_Bcd2Dec_bcdnum+0 + CALL _Bcd2Dec+0 + MOVF R0, 0 + ADDWF FLOC__cells_init+0, 0 + MOVWF _Cap5+0 + MOVLW 0 + ADDWFC FLOC__cells_init+1, 0 + MOVWF _Cap5+1 +;main.c,839 :: Cap6 = Bcd2Dec(EEPROM_Read(42)) * 100 + Bcd2Dec(EEPROM_Read(43)); // Cap6 + MOVLW 42 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF FARG_Bcd2Dec_bcdnum+0 + CALL _Bcd2Dec+0 + MOVLW 100 + MOVWF R4 + CALL _Mul_8X8_U+0 + MOVF R0, 0 + MOVWF FLOC__cells_init+0 + MOVF R1, 0 + MOVWF FLOC__cells_init+1 + MOVLW 43 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF FARG_Bcd2Dec_bcdnum+0 + CALL _Bcd2Dec+0 + MOVF R0, 0 + ADDWF FLOC__cells_init+0, 0 + MOVWF _Cap6+0 + MOVLW 0 + ADDWFC FLOC__cells_init+1, 0 + MOVWF _Cap6+1 +;main.c,840 :: Cap7 = Bcd2Dec(EEPROM_Read(44)) * 100 + Bcd2Dec(EEPROM_Read(45)); // Cap7 + MOVLW 44 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF FARG_Bcd2Dec_bcdnum+0 + CALL _Bcd2Dec+0 + MOVLW 100 + MOVWF R4 + CALL _Mul_8X8_U+0 + MOVF R0, 0 + MOVWF FLOC__cells_init+0 + MOVF R1, 0 + MOVWF FLOC__cells_init+1 + MOVLW 45 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF FARG_Bcd2Dec_bcdnum+0 + CALL _Bcd2Dec+0 + MOVF R0, 0 + ADDWF FLOC__cells_init+0, 0 + MOVWF _Cap7+0 + MOVLW 0 + ADDWFC FLOC__cells_init+1, 0 + MOVWF _Cap7+1 +;main.c,842 :: P_High = EEPROM_Read(0x30); // High power + MOVLW 48 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF main_P_High+0 +;main.c,843 :: K_Mult = Bcd2Dec(EEPROM_Read(0x31)); // Tandem Match rate + MOVLW 49 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF FARG_Bcd2Dec_bcdnum+0 + CALL _Bcd2Dec+0 + MOVF R0, 0 + MOVWF main_K_Mult+0 +;main.c,844 :: Dysp_delay = Bcd2Dec(EEPROM_Read(0x32)); // Dysplay ON delay + MOVLW 50 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF FARG_Bcd2Dec_bcdnum+0 + CALL _Bcd2Dec+0 + MOVF R0, 0 + MOVWF _Dysp_delay+0 +;main.c,845 :: Loss_ind = EEPROM_Read(0x33); + MOVLW 51 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF main_Loss_ind+0 +;main.c,846 :: Fid_loss = Bcd2Dec(EEPROM_Read(0x34)); + MOVLW 52 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF FARG_Bcd2Dec_bcdnum+0 + CALL _Bcd2Dec+0 + MOVF R0, 0 + MOVWF _Fid_loss+0 +;main.c,847 :: asm CLRWDT; + CLRWDT +;main.c,848 :: return; +;main.c,850 :: } +L_end_cells_init: + RETURN +; end of _cells_init + +_show_loss: + +;main.c,852 :: void show_loss(void) { +;main.c,853 :: IntToStr(Fid_loss, work_str); + MOVF _Fid_loss+0, 0 + MOVWF FARG_IntToStr_input+0 + CLRF FARG_IntToStr_input+1 + MOVLW _work_str+0 + MOVWF FARG_IntToStr_output+0 + MOVLW hi_addr(_work_str+0) + MOVWF FARG_IntToStr_output+1 + CALL _IntToStr+0 +;main.c,854 :: if(Fid_loss>=10) work_str_2[0] = work_str[4]; + MOVLW 10 + SUBWF _Fid_loss+0, 0 + BTFSS STATUS+0, 0 + GOTO L_show_loss480 + MOVF _work_str+4, 0 + MOVWF _work_str_2+0 + GOTO L_show_loss481 +L_show_loss480: +;main.c,855 :: else work_str_2[0] = '0'; + MOVLW 48 + MOVWF _work_str_2+0 +L_show_loss481: +;main.c,856 :: work_str_2[1] = '.'; + MOVLW 46 + MOVWF _work_str_2+1 +;main.c,857 :: work_str_2[2] = work_str[5]; + MOVF _work_str+5, 0 + MOVWF _work_str_2+2 +;main.c,858 :: if(type==4 | type==5) led_wr_str (2, 6, work_str_2, 3); // 128*64 + MOVF _type+0, 0 + XORLW 4 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF _type+0, 0 + XORLW 5 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + IORWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_show_loss482 + MOVLW 2 + MOVWF FARG_led_wr_str+0 + MOVLW 6 + MOVWF FARG_led_wr_str+0 + MOVLW _work_str_2+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(_work_str_2+0) + MOVWF FARG_led_wr_str+1 + MOVLW 3 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 + GOTO L_show_loss483 +L_show_loss482: +;main.c,859 :: else if(type!=0) led_wr_str (1, 3, work_str_2, 3); // 1602 | 128*32 + MOVF _type+0, 0 + XORLW 0 + BTFSC STATUS+0, 2 + GOTO L_show_loss484 + MOVLW 1 + MOVWF FARG_led_wr_str+0 + MOVLW 3 + MOVWF FARG_led_wr_str+0 + MOVLW _work_str_2+0 + MOVWF FARG_led_wr_str+0 + MOVLW hi_addr(_work_str_2+0) + MOVWF FARG_led_wr_str+1 + MOVLW 3 + MOVWF FARG_led_wr_str+0 + CALL _led_wr_str+0 +L_show_loss484: +L_show_loss483: +;main.c,860 :: return; +;main.c,861 :: } +L_end_show_loss: + RETURN +; end of _show_loss diff --git a/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/main.c b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/main.c new file mode 100644 index 0000000..a742ec1 --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/main.c @@ -0,0 +1,863 @@ + // ATU-100 project + // David Fainitski + // 2016 + +#include "oled_control.h" +#include "pic_init.h" +#include "main.h" + + +// Variables + int SWR_fixed_old = 0, work_int; + unsigned char work_char, work_str[7], work_str_2[7]; + float Forward; + int Power =0, Power_old = 10000; + int SWR_old = 10000; + char type, Soft_tune = 0, Auto = 0, Track = 0; + char bypas = 0, cap_mem = 0, ind_mem = 0, SW_mem = 0, Auto_mem = 0; + int Auto_delta; + char Restart = 0, Test = 0, lcd_prep_short = 0; + char L = 1, but= 0; + int Cap1, Cap2, Cap3, Cap4, Cap5, Cap6, Cap7; + int Ind1, Ind2, Ind3, Ind4, Ind5, Ind6, Ind7; + char Dysp_delay = 0; + int dysp_cnt = 0; + float dysp_cnt_mult = 2.3; + char Loss_mode = 0, Fid_loss; + +//void interrupt () { +//} + + +void main() { + if(STATUS.B4==0) Restart = 1; + pic_init(); + // + Delay_ms (300); + asm CLRWDT; + cells_init(); + Soft_I2C_Init(); + if(type==0) { // 2-colors led reset + LATB.B6 = 1; + LATB.B7 = 1; + } + dysp_cnt = Dysp_delay * dysp_cnt_mult; + // + Delay_ms(300); + asm CLRWDT; + // + if(PORTB.B1==0 & PORTB.B2==0) { // Test mode + Test = 1; + Auto =0; + } + if(L_q==5)L_mult = 1; + else if(L_q==6) L_mult = 2; + else if(L_q==7) L_mult = 4; + if(C_q==5) C_mult =1; + else if(C_q==6) C_mult = 2; + else if(C_q==7) C_mult = 4; + + Delay_ms(300); + asm CLRWDT; + led_init(); + + if(PORTB.B1==0 & PORTB.B2==0 & PORTB.B0==0) { // Fast Test mode (loop) + if(type==4 | type==5) led_wr_str (0, 12, "FAST TEST", 9); // 128*64 + else if(type!=0) led_wr_str (0, 3, "FAST TEST", 9); // 1602 | 128*32 + set_cap(255); + if(L_invert==0) set_ind(255); + else set_ind(0); + set_sw(1); + asm CLRWDT; + while(1) {Delay_ms(500);asm CLRWDT;} + } + asm CLRWDT; + // + if(Button(&PORTB, 0, 100, 0)) { // Fider loss input + if(type==4 | type==5) { led_wr_str (0, 6, "Fider Loss", 10); // 128*64 + led_wr_str (1, 6, "input", 5); } + else if(type!=0) led_wr_str (0, 0, "Fider Loss input", 16); // 1602 | 128*32 + Fid_loss = Bcd2Dec(EEPROM_Read(0x34)); + show_loss(); + // + while(1) { + if(Button(&PORTB, 2, 50, 0)){ // BYP button + if(Fid_loss<99) { + Fid_loss ++; + show_loss(); + EEPROM_Write(0x34, Dec2Bcd(Fid_loss)); + } + while(Button(&PORTB, 2, 50, 0)) asm CLRWDT; + } + // + if(Button(&PORTB, 1, 50, 0)){ // AUTO button + if(Fid_loss>0) { + Fid_loss --; + show_loss(); + EEPROM_Write(0x34, Dec2Bcd(Fid_loss)); + } + while(Button(&PORTB, 1, 50, 0)) asm CLRWDT; + } + asm CLRWDT; + } // while + } // Fider loss input + // + if(Test==0) { + cap = EEPROM_Read(255); + ind = EEPROM_Read(254); + SW = EEPROM_Read(253); + swr_a = EEPROM_Read(252) * 256; + swr_a += EEPROM_Read(251); + set_ind(ind); + set_cap(cap); + set_sw(SW); + if(Restart==1 ) lcd_prep_short = 1; + lcd_prep(); + } + else Test_init(); + + lcd_ind(); + + + + //******************************* + + while(1) { + asm CLRWDT; + lcd_pwr(); + // + if(Test==0) button_proc(); + else button_proc_test(); + // + if(dysp_cnt!=0) dysp_cnt --; + else if(Test==0 & Dysp_delay!=0) dysp_off(); + + // next While code + + } +} + + +//***************** Routines ***************** + + void button_proc_test(void) { + if(Button(&PORTB, 0, 50, 0)){ // Tune btn + Delay_ms(250); + asm CLRWDT; + if(PORTB.B0==1) { // short press button + if(SW==0) SW = 1; else SW = 0; + set_sw(SW); + lcd_ind(); + } + else { // long press button + if(L==1) L = 0; else L = 1; + if(L==1) { + if(type==4 |type==5) // 128*64 OLED + led_wr_str (0, 16+12*8, "l", 1); + else if(type!=0) // 1602 LCD & 128*32 OLED + led_wr_str (0, 8, "l", 1); + } + else { + if(type==4 |type==5) // 128*64 OLED + led_wr_str (0, 16+12*8, "c", 1); + else if(type!=0) // 1602 LCD & 128*32 OLED + led_wr_str (0, 8, "c", 1); + } + } + while(Button(&PORTB, 0, 50, 0)) {lcd_pwr(); asm CLRWDT; } + } // END Tune btn + // + if(Button(&PORTB, 2, 50, 0)){ // BYP button + asm CLRWDT; + while(PORTB.B2==0) { + if(L & ind<32*L_mult-1) { + ind ++; + set_ind(ind); + } + else if(!L & cap<32*L_mult-1) { + cap ++; + set_cap(cap); + } + lcd_ind(); + lcd_pwr(); + Delay_ms(30); + asm CLRWDT; + } + } // end of BYP button + // + if(Button(&PORTB, 1, 50, 0) & Bypas==0){ // Auto button + asm CLRWDT; + while(PORTB.B1==0) { + if(L & ind>0) { + ind --; + set_ind(ind); + } + else if(!L & cap>0) { + cap --; + set_cap(cap); + } + lcd_ind(); + lcd_pwr(); + Delay_ms(30); + asm CLRWDT; + } + } + return; +} + + +void button_proc(void) { + if(Button(&PORTB, 0, 50, 0) | Soft_tune){ + dysp_on(); + dysp_cnt = Dysp_delay * dysp_cnt_mult; + Delay_ms(250); + asm CLRWDT; + if(Soft_tune == 0 & PORTB.B0==1) { // short press button + show_reset(); + bypas =0; + } + else { // long press button + p_Tx = 1; // + n_Tx = 0; // TX request + Delay_ms(250); // + btn_push(); + bypas = 0; + while(Button(&PORTB, 0, 50, 0)) {lcd_pwr(); asm CLRWDT; } + Soft_tune = 0; + } + } + // + if(Button(&PORTB, 2, 50, 0)){ // BYP button + dysp_on(); + dysp_cnt = Dysp_delay * dysp_cnt_mult; + asm CLRWDT; + if(bypas == 0) { + bypas = 1; + cap_mem = cap; + ind_mem = ind; + SW_mem = SW; + cap = 0; + ind = 0; + SW = 1; + set_ind(ind); + set_cap(cap); + set_SW(SW); + if(Loss_mode==0) lcd_ind(); + Auto_mem = Auto; + Auto = 0; + } + else { + bypas = 0; + cap = cap_mem; + ind = ind_mem; + SW = SW_mem; + set_cap(cap); + set_ind(ind); + set_SW(SW); + if(Loss_mode==0) lcd_ind(); + Auto = Auto_mem; + } + if(type==4 | type==5) { // 128*64 OLED + if(Auto & !Bypas) led_wr_str (0, 16+8*12, ".", 1); + else if(!Auto & Bypas) led_wr_str (0, 16+8*12, "_", 1); + else led_wr_str (0, 16+8*12, " ", 1); + } + else if(type!=0) { // 1602 LCD or 128*32 OLED + if(Auto & !Bypas) led_wr_str (0, 8, ".", 1); + else if(!Auto & Bypas) led_wr_str (0, 8, "_", 1); + else led_wr_str (0, 8, " ", 1); + } + asm CLRWDT; + while(Button(&PORTB, 2, 50, 0)) {lcd_pwr(); asm CLRWDT; } + } + // + if(Button(&PORTB, 1, 50, 0) & Bypas==0){ // Auto button + dysp_on(); + dysp_cnt = Dysp_delay * dysp_cnt_mult; + asm CLRWDT; + if(Auto == 0) Auto = 1; + else Auto = 0; + EEPROM_Write(2, Auto); + if(type==4 | type==5) { // 128*64 OLED + if(Auto & !Bypas) led_wr_str (0, 16+8*12, ".", 1); + else if(!Auto & Bypas) led_wr_str (0, 16+8*12, "_", 1); + else led_wr_str (0, 16+8*12, " ", 1); + } + else if(type!=0) { // 1602 LCD or 128*32 OLED + if(Auto & !Bypas) led_wr_str (0, 8, ".", 1); + else if(!Auto & Bypas) led_wr_str (0, 8, "_", 1); + else led_wr_str (0, 8, " ", 1); + } + asm CLRWDT; + while(Button(&PORTB, 1, 50, 0)) {lcd_pwr(); asm CLRWDT; } + } + return; +} + +void show_reset() { + atu_reset(); + SW = 1; + set_sw(SW); + EEPROM_Write(255, 0); + EEPROM_Write(254, 0); + EEPROM_Write(253, 1); + EEPROM_Write(252, 0); + EEPROM_Write(251, 0); + lcd_ind(); + Loss_mode = 0; + p_Tx = 0; + n_Tx = 1; + SWR = 0; + PWR = 0; + SWR_fixed_old = 0; + if(type==4 | type==5) { // 128*64 OLED + led_wr_str (2, 16, "RESET ", 8); + asm CLRWDT; + delay_ms(600); + led_wr_str (2, 16, "SWR=0.00", 8); + asm CLRWDT; + } + else if(type!=0) {// 1602 LCD & 128*32 OLED + led_wr_str (1, 0, "RESET ", 8); + asm CLRWDT; + delay_ms(600); + led_wr_str (1, 0, "SWR=0.00", 8); + asm CLRWDT; + } + else { + LATB.B6 = 1; + LATB.B7 = 1; + } + SWR_old = 10000; + Power_old = 10000; + lcd_pwr(); + return; +} + +void btn_push() { + asm CLRWDT; + if(type==4 | type==5) { // 128*64 OLED + led_wr_str (2, 16+12*4, "TUNE", 4); + } + else if(type!=0) { // 1602 LCD & 128*32 OLED + led_wr_str (1, 4, "TUNE", 4); + } + else { + LATB.B6 = 1; + LATB.B7 = 1; + } + tune(); + if(type==0) { // real-time 2-colors led work + if(swr<=150) { LATB.B6 = 0; LATB.B7 = 1; } // Green + else if(swr<=250) {PORTB.B6 = 0; PORTB.B7 = 0;} // Orange + else { PORTB.B6 = 1; PORTB.B7 = 0; } // Red + } + else if(Loss_mode==0 | Loss_ind==0) lcd_ind(); + EEPROM_Write(255, cap); + EEPROM_Write(254, ind); + EEPROM_Write(253, SW); + EEPROM_Write(252, swr_a/256); + EEPROM_Write(251, swr_a%256); + SWR_old = 10000; + Power_old = 10000; + lcd_pwr(); + SWR_fixed_old = SWR; + p_Tx = 0; + n_Tx = 1; + asm CLRWDT; + return; +} + + + void lcd_prep() { + asm CLRWDT; + if(type==4 |type==5){ // 128*64 OLED + if(lcd_prep_short==0) { + led_wr_str (0, 22, "ATU-100", 7); + led_wr_str (2, 6, "EXT board", 9); + led_wr_str (4, 16, "by N7DDC", 8); + led_wr_str (6, 4, "FW ver 3.1", 10); + asm CLRWDT; + Delay_ms(600); + asm CLRWDT; + Delay_ms(500); + asm CLRWDT; + led_wr_str (0, 16, " ", 8); + led_wr_str (2, 4, " ", 10); + led_wr_str (4, 16, " ", 8); + led_wr_str (6, 4, " ", 10); + } + Delay_ms(150); + if(P_High==1) led_wr_str (0, 16, "PWR= 0W", 8); + else led_wr_str (0, 16, "PWR=0.0W", 8); + led_wr_str (2, 16, "SWR=0.00", 8); + if(Auto) led_wr_str (0, 16+8*12, ".", 1); + } + else if(type!=0) { // 1602 LCD & 128*32 OLED + if(lcd_prep_short==0) { + led_wr_str (0, 4, "ATU-100", 7); + led_wr_str (1, 3, "EXT board", 9); + asm CLRWDT; + Delay_ms(700); + asm CLRWDT; + Delay_ms(500); + asm CLRWDT; + led_wr_str (0, 4, "by N7DDC", 8); + led_wr_str (1, 3, "FW ver 3.1", 10); + asm CLRWDT; + Delay_ms(600); + asm CLRWDT; + Delay_ms(500); + asm CLRWDT; + led_wr_str (0, 4, " ", 8); + led_wr_str (1, 3, " ", 10); + } + Delay_ms(150); + if(P_High==1) led_wr_str (0, 0, "PWR= 0W", 8); + else led_wr_str (0, 0, "PWR=0.0W", 8); + led_wr_str (1, 0, "SWR=0.00", 8); + if(Auto) led_wr_str (0, 8, ".", 1); + } + asm CLRWDT; + lcd_ind(); + return; +} + + +void lcd_swr(int swr) { + asm CLRWDT; + if(swr!=SWR_old) { + SWR_old = swr; + if(swr==1) { // Low power + if(type==4 | type==5) led_wr_str (2, 16+4*12, "0.00", 4); // 128*64 OLED + else if(type!=0) led_wr_str (1, 4, "0.00", 4); // 1602 & 128*32 OLED + else if(type==0) { // real-time 2-colors led work + LATB.B6 = 1; + LATB.B7 = 1; + } + SWR_old = 0; + } + else { + SWR_old = swr; + IntToStr(swr, work_str); + work_str_2[0] = work_str[3]; + work_str_2[1] = '.'; + work_str_2[2] = work_str[4]; + work_str_2[3] = work_str[5]; + if(type==4 | type==5) led_wr_str (2, 16+4*12, work_str_2, 4); // 128*64 OLED + else if(type!=0) led_wr_str (1, 4, work_str_2, 4); // 1602 & 128*32 + else if(type==0) { // real-time 2-colors led work + if(swr<=150) { LATB.B6 = 0; LATB.B7 = 1; } // Green + else if(swr<=250) {PORTB.B6 = 0; PORTB.B7 = 0;} // Orange + else { PORTB.B6 = 1; PORTB.B7 = 0; } // Red + } + } + } + asm CLRWDT; + return; +} + + +void button_delay() { + if((Button(&PORTB, 0, 25, 0)) | (Button(&PORTB, 1, 25, 0)) | (Button(&PORTB, 2, 25, 0))) { + but = 1; + } + return; +} + +void show_pwr(int Power, int SWR) { + int p_ant, eff; + float a, b; + a = 100; + asm CLRWDT; + // + if(Test==0 & Loss_ind==1 & SWR>=100) { + if(Loss_mode==0) { // prepare + if(type==4 |type==5){ // 128*64 OLED + if(P_High==1) led_wr_str(4, 16, "ANT= 0W", 8); + else led_wr_str(4, 16, "ANT=0.0W", 8); + led_wr_str(6, 16, "EFF= 0%", 8); + } + else if(type==2 | type==3) { // 128*32 OLED + if(P_High==1) led_wr_str (0, 9, "ANT= 0W", 8); + else led_wr_str (0, 9, "ANT=0.0W", 8); + led_wr_str (1, 9, "EFF= 0%", 8); + } + else if(type==1) { // 1602 LCD + if(P_High==1) led_wr_str (0, 9, "AN= 0W", 7); + else led_wr_str (0, 9, "AN=0.0W", 7); + led_wr_str (1, 9, "EFF= 0%", 7); + } + } + Loss_mode = 1; + } + else { + if(Loss_mode==1) lcd_ind(); + Loss_mode = 0; + } + asm CLRWDT; + if(Power != Power_old) { + Power_old = Power; + // + if(P_High==0) { + if(Power >= 100) { // > 10 W + Power += 5; // rounding to 1 W + IntToStr(Power, work_str); + work_str_2[0] = work_str[2]; + work_str_2[1] = work_str[3]; + work_str_2[2] = work_str[4]; + work_str_2[3] = 'W'; + } + else { + IntToStr(Power, work_str); + if(work_str[4] != ' ') work_str_2[0] = work_str[4]; else work_str_2[0] = '0'; + work_str_2[1] = '.'; + if(work_str[5] != ' ') work_str_2[2] = work_str[5]; else work_str_2[2] = '0'; + work_str_2[3] = 'W'; + } + } + else { // High Power + if(Power<999){ // 0 - 1500 Watts + IntToStr(Power, work_str); + work_str_2[0] = work_str[3]; + work_str_2[1] = work_str[4]; + work_str_2[2] = work_str[5]; + work_str_2[3] = 'W'; + } + else { + IntToStr(Power, work_str); + work_str_2[0] = work_str[2]; + work_str_2[1] = work_str[3]; + work_str_2[2] = work_str[4]; + work_str_2[3] = work_str[5]; + } + } + if(type==4 | type==5) led_wr_str (0, 16+4*12, work_str_2, 4); // 128*64 OLED + else if(type!=0) led_wr_str (0, 4, work_str_2, 4); // 1602 & 128*32 + // + asm CLRWDT; + // Loss indication + if(Loss_mode==1) { + if(ind==0 & cap==0) swr_a = SWR; + a = 1.0 / ((swr_a/100.0 + 100.0/swr_a) * Fid_loss/10.0 * 0.115 + 1.0); // Fider loss + b = 4.0 / (2.0 + SWR/100.0 + 100.0/SWR); // SWR loss + if(a>=1.0) a = 1.0; + if(b>=1.0) b = 1.0; + p_ant = Power * a * b; + eff = a * b * 100; + if(eff>=100) eff = 99; + // + if(P_High==0) { + if(p_ant >= 100) { // > 10 W + p_ant += 5; // rounding to 1 W + IntToStr(p_ant, work_str); + work_str_2[0] = work_str[2]; + work_str_2[1] = work_str[3]; + work_str_2[2] = work_str[4]; + work_str_2[3] = 'W'; + } + else { + IntToStr(p_ant, work_str); + if(work_str[4] != ' ') work_str_2[0] = work_str[4]; else work_str_2[0] = '0'; + work_str_2[1] = '.'; + if(work_str[5] != ' ') work_str_2[2] = work_str[5]; else work_str_2[2] = '0'; + work_str_2[3] = 'W'; + } + } + else { // High Power + if(p_ant<999){ // 0 - 1500 Watts + IntToStr(p_ant, work_str); + work_str_2[0] = work_str[3]; + work_str_2[1] = work_str[4]; + work_str_2[2] = work_str[5]; + work_str_2[3] = 'W'; + } + else { + IntToStr(p_ant, work_str); + work_str_2[0] = work_str[2]; + work_str_2[1] = work_str[3]; + work_str_2[2] = work_str[4]; + work_str_2[3] = work_str[5]; + } + } + if(type==4 | type==5) led_wr_str (4, 16+4*12, work_str_2, 4); // 128*64 OLED + else if(type==2 | type==3) led_wr_str (0, 13, work_str_2, 4); // 128*32 + else if(type!=0) led_wr_str (0, 12, work_str_2, 4); // 1602 + // + IntToStr(eff, work_str); + work_str_2[0] = work_str[4]; + work_str_2[1] = work_str[5]; + if(type==4 | type==5) led_wr_str(6, 16+5*12, work_str_2, 2); + else if(type==2 | type==3) led_wr_str(1, 14, work_str_2, 2); + else if(type==1) led_wr_str(1, 13, work_str_2, 2); + } + } + asm CLRWDT; + return; +} + +void lcd_pwr() { + int p = 0; + char peak_cnt; + int delta = Auto_delta - 100; + char cnt; + int SWR_fixed = 1; + PWR = 0; + asm CLRWDT; + // peak detector + cnt = 120; + for(peak_cnt = 0; peak_cnt < cnt; peak_cnt++){ + if(PORTB.B1==0 | PORTB.B2==0 | PORTB.B0==0) {button_delay(); if(but==1) {but = 0; return;} } + get_pwr(); + if(PWR>p) {p = PWR; SWR_fixed = SWR;} + Delay_ms(3); + } + asm CLRWDT; + Power = p; + lcd_swr(SWR_fixed); + if(SWR_fixed>=100) { + dysp_on(); // dysplay ON + dysp_cnt = Dysp_delay * dysp_cnt_mult; + } + // + if(Auto & SWR_fixed>=Auto_delta & ((SWR_fixed>SWR_fixed_old & (SWR_fixed-SWR_fixed_old)>delta) | (SWR_fixeddelta) | SWR_fixed_old==999)) + Soft_tune = 1; + // + if(PORTB.B1==0 | PORTB.B2==0 | PORTB.B0==0) {button_delay(); if(but==1) {but = 0; return;} } // Fast return if button pressed + show_pwr(Power, SWR_fixed); + // + if(PORTB.B1==0 | PORTB.B2==0 | PORTB.B0==0) {button_delay(); if(but==1) {but = 0; return;} } + asm CLRWDT; + if(Overload==1) { + if(type==4 | type==5) { // 128*64 OLED + led_wr_str (2, 16, " ", 8); + delay_ms(100); + led_wr_str (2, 16, "OVERLOAD", 8); + delay_ms(500); + asm CLRWDT; + led_wr_str (2, 16, " ", 8); + delay_ms(300); + asm CLRWDT; + led_wr_str (2, 16, "OVERLOAD", 8); + delay_ms(500); + asm CLRWDT; + led_wr_str (2, 16, " ", 8); + delay_ms(300); + asm CLRWDT; + led_wr_str (2, 16, "OVERLOAD", 8); + delay_ms(500); + asm CLRWDT; + led_wr_str (2, 16, " ", 8); + delay_ms(100); + led_wr_str (2, 16, "SWR= ", 8); + } + else if(type!=0) { // 1602 & 128*32 + led_wr_str (1, 0, " ", 8); + delay_ms(100); + led_wr_str (1, 0, "OVERLOAD", 8); + delay_ms(500); + asm CLRWDT; + led_wr_str (1, 0, " ", 8); + delay_ms(300); + asm CLRWDT; + led_wr_str (1, 0, "OVERLOAD", 8); + delay_ms(500); + asm CLRWDT; + led_wr_str (1, 0, " ", 8); + delay_ms(300); + asm CLRWDT; + led_wr_str (1, 0, "OVERLOAD", 8); + delay_ms(500); + asm CLRWDT; + led_wr_str (1, 0, " ", 8); + delay_ms(100); + led_wr_str (1, 0, "SWR= ", 8); + } + asm CLRWDT; + SWR_old = 10000; + lcd_swr(SWR_fixed); + } + return; +} + +void lcd_ind() { + char column; + asm CLRWDT; + if(1) { + work_int = 0; + if(ind.B0) work_int += Ind1; + if(ind.B1) work_int += Ind2; + if(ind.B2) work_int += Ind3; + if(ind.B3) work_int += Ind4; + if(ind.B4) work_int += Ind5; + if(ind.B5) work_int += Ind6; + if(ind.B6) work_int += Ind7; + if(work_int>9999) { // more then 9999 nH + work_int += 50; // round + IntToStr(work_int, work_str); + work_str_2[0] = work_str[1]; + work_str_2[1] = work_str[2]; + work_str_2[2] = '.'; + work_str_2[3] = work_str[3]; + } + else { + IntToStr(work_int, work_str); + if(work_str[2] != ' ') work_str_2[0] = work_str[2]; else work_str_2[0] = '0'; + work_str_2[1] = '.'; + if(work_str[3] != ' ') work_str_2[2] = work_str[3]; else work_str_2[2] = '0'; + if(work_str[4] != ' ') work_str_2[3] = work_str[4]; else work_str_2[3] = '0'; + } + if(type==4 | type==5) { // 128*64 OLED + if(SW==1) column = 4; else column = 6; + led_wr_str (column, 16, "L=", 2); + led_wr_str (column, 16+6*12, "uH", 2); + led_wr_str (column, 16+2*12, work_str_2, 4); + } + else if(type==2 | type==3) {// 128*32 OLED + if(SW==1) column = 0; else column = 1; + led_wr_str (column, 9, "L=", 2); + led_wr_str (column, 15, "uH", 2); + led_wr_str (column, 11, work_str_2, 4); + } + else if(type==1) { // 1602 LCD + if(SW==1) column = 0; else column = 1; + led_wr_str (column, 9, "L=", 2); + led_wr_str (column, 15, "u", 1); + led_wr_str (column, 11, work_str_2, 4); + } + } + asm CLRWDT; + if(1) { + work_int = 0; + if(cap.B0) work_int += Cap1; + if(cap.B1) work_int += Cap2; + if(cap.B2) work_int += Cap3; + if(cap.B3) work_int += Cap4; + if(cap.B4) work_int += Cap5; + if(cap.B5) work_int += Cap6; + if(cap.B6) work_int += Cap7; + IntToStr(work_int, work_str); + work_str_2[0] = work_str[2]; + work_str_2[1] = work_str[3]; + work_str_2[2] = work_str[4]; + work_str_2[3] = work_str[5]; + // + if(type==4 | type==5) { // 128*64 OLED + if(SW==1) column = 6; else column = 4; + led_wr_str (column, 16, "C=", 2); + led_wr_str (column, 16+6*12, "pF", 2); + led_wr_str (column, 16+2*12, work_str_2, 4); + } + else if(type==2 | type==3) {// 128*32 OLED + if(SW==1) column = 1; else column = 0; + led_wr_str (column, 9, "C=", 2); + led_wr_str (column, 15, "pF", 2); + led_wr_str (column, 11, work_str_2, 4); + } + else if(type==1) { // 1602 LCD + if(SW==1) column = 1; else column = 0; + led_wr_str (column, 9, "C=", 2); + led_wr_str (column, 15, "p", 1); + led_wr_str (column, 11, work_str_2, 4); + } + } + asm CLRWDT; + return; +} + + +void Test_init(void) { // Test mode + if(type==4 | type==5) // 128*64 OLED + led_wr_str (0, 10, "TEST MODE", 9); + else if(type!=0) // 1602 LCD or 128*32 OLED + led_wr_str (0, 3, "TEST MODE", 9); + asm CLRWDT; + Delay_ms(500); + asm CLRWDT; + Delay_ms(500); + asm CLRWDT; + Delay_ms(500); + asm CLRWDT; + Delay_ms(500); + asm CLRWDT; + if(type==4 | type==5) // 128*64 OLED + led_wr_str (0, 10, " ", 9); + else if(type!=0) // 1602 LCD or 128*32 OLED + led_wr_str (0, 3, " ", 9); + atu_reset(); + SW = 1; // C to OUT + set_sw(SW); + EEPROM_Write(255, cap); + EEPROM_Write(254, ind); + EEPROM_Write(253, SW); + // + if(type==4 | type==5) // 128*64 OLED + led_wr_str (0, 16+12*8, "l", 1); + else if(type!=0) // 1602 LCD or 128*32 OLED + led_wr_str (0, 8, "l", 1); + // + lcd_prep_short = 1; + lcd_prep(); + return; +} + + +void cells_init(void) { + // Cells init + asm CLRWDT; + //oled_addr = EEPROM_Read(0); // address + type = EEPROM_Read(1); // type of display + if(EEPROM_Read(2) == 1) Auto = 1; + Rel_Del = Bcd2Dec(EEPROM_Read(3)); // Relay's Delay + Auto_delta = Bcd2Dec(EEPROM_Read(4)) * 10; // Auto_delta + min_for_start = Bcd2Dec(EEPROM_Read(5)) * 10; // P_min_for_start + max_for_start = Bcd2Dec(EEPROM_Read(6)) * 10; // P_max_for_start + // 7 - shift down + // 8 - shift left + max_swr = Bcd2Dec(EEPROM_Read(9)) * 10; // Max SWR + L_q = EEPROM_Read(10); + L_linear = EEPROM_Read(11); + C_q = EEPROM_Read(12); + C_linear = EEPROM_Read(13); + D_correction = EEPROM_Read(14); + L_invert = EEPROM_Read(15); + // + asm CLRWDT; + Ind1 = Bcd2Dec(EEPROM_Read(16)) * 100 + Bcd2Dec(EEPROM_Read(17)); // Ind1 + Ind2 = Bcd2Dec(EEPROM_Read(18)) * 100 + Bcd2Dec(EEPROM_Read(19)); // Ind2 + Ind3 = Bcd2Dec(EEPROM_Read(20)) * 100 + Bcd2Dec(EEPROM_Read(21)); // Ind3 + Ind4 = Bcd2Dec(EEPROM_Read(22)) * 100 + Bcd2Dec(EEPROM_Read(23)); // Ind4 + Ind5 = Bcd2Dec(EEPROM_Read(24)) * 100 + Bcd2Dec(EEPROM_Read(25)); // Ind5 + Ind6 = Bcd2Dec(EEPROM_Read(26)) * 100 + Bcd2Dec(EEPROM_Read(27)); // Ind6 + Ind7 = Bcd2Dec(EEPROM_Read(28)) * 100 + Bcd2Dec(EEPROM_Read(29)); // Ind7 + // + Cap1 = Bcd2Dec(EEPROM_Read(32)) * 100 + Bcd2Dec(EEPROM_Read(33)); // Cap1 + Cap2 = Bcd2Dec(EEPROM_Read(34)) * 100 + Bcd2Dec(EEPROM_Read(35)); // Cap2 + Cap3 = Bcd2Dec(EEPROM_Read(36)) * 100 + Bcd2Dec(EEPROM_Read(37)); // Cap3 + Cap4 = Bcd2Dec(EEPROM_Read(38)) * 100 + Bcd2Dec(EEPROM_Read(39)); // Cap4 + Cap5 = Bcd2Dec(EEPROM_Read(40)) * 100 + Bcd2Dec(EEPROM_Read(41)); // Cap5 + Cap6 = Bcd2Dec(EEPROM_Read(42)) * 100 + Bcd2Dec(EEPROM_Read(43)); // Cap6 + Cap7 = Bcd2Dec(EEPROM_Read(44)) * 100 + Bcd2Dec(EEPROM_Read(45)); // Cap7 + // + P_High = EEPROM_Read(0x30); // High power + K_Mult = Bcd2Dec(EEPROM_Read(0x31)); // Tandem Match rate + Dysp_delay = Bcd2Dec(EEPROM_Read(0x32)); // Dysplay ON delay + Loss_ind = EEPROM_Read(0x33); + Fid_loss = Bcd2Dec(EEPROM_Read(0x34)); + asm CLRWDT; + return; + +} + +void show_loss(void) { + IntToStr(Fid_loss, work_str); + if(Fid_loss>=10) work_str_2[0] = work_str[4]; + else work_str_2[0] = '0'; + work_str_2[1] = '.'; + work_str_2[2] = work_str[5]; + if(type==4 | type==5) led_wr_str (2, 6, work_str_2, 3); // 128*64 + else if(type!=0) led_wr_str (1, 3, work_str_2, 3); // 1602 | 128*32 + return; +} + +// \ No newline at end of file diff --git a/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/main.c.ini b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/main.c.ini new file mode 100644 index 0000000..7fa5dad --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/main.c.ini @@ -0,0 +1,9 @@ +[Bookmarks] +Count=0 +[Position] +Line=631 +Column=15 +[BreakPoints] +Count=0 +[FoldedLines] +Count=0 diff --git a/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/main.cp b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/main.cp new file mode 100644 index 0000000..b898324 --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/main.cp @@ -0,0 +1,1332 @@ +#line 1 "E:/ATU-100/fw_EXT_3.1/1938_EXT_board_sources_V_3.0/main.c" +#line 1 "e:/atu-100/fw_ext_3.1/1938_ext_board_sources_v_3.0/oled_control.h" + + +sbit Soft_I2C_Scl at LATB6_bit; +sbit Soft_I2C_Sda at LATB7_bit; +sbit Soft_I2C_Scl_Direction at TRISB6_bit; +sbit Soft_I2C_Sda_Direction at TRISB7_bit; + +static char RS, RW, E, LED, nible; + +static char led_addr, led_type; +static char shift_line; + +static char oled_shift; + +void set_addressing (char, char); +void led_send (char); +void led_init (void); +void oled_init (void); +void send_command (char); +void set_addressing (char, char); +void led_wr_str (char, char, char*, char); +void oled_wr_str (char, char, char*, char); +void dysp_on(void); +void dysp_off(void); + + +void Soft_I2C_Init (void); +void Soft_I2C_Start (void); +void Soft_I2C_Write (char); +void Soft_I2C_Stop (void); +#line 1 "e:/atu-100/fw_ext_3.1/1938_ext_board_sources_v_3.0/pic_init.h" + + +sbit n_Tx at LATA6_bit; +sbit p_Tx at LATA7_bit; + + + + + +sbit Cap_10 at LATC7_bit; +sbit Cap_22 at LATC3_bit; +sbit Cap_47 at LATC6_bit; +sbit Cap_100 at LATC2_bit; +sbit Cap_220 at LATC5_bit; +sbit Cap_470 at LATC1_bit; +sbit Cap_1000 at LATC4_bit; +sbit Cap_sw at LATC0_bit; + +sbit Ind_005 at LATB3_bit; +sbit Ind_011 at LATA2_bit; +sbit Ind_022 at LATB4_bit; +sbit Ind_045 at LATA3_bit; +sbit Ind_1 at LATB5_bit; +sbit Ind_22 at LATA5_bit; +sbit Ind_45 at LATA4_bit; + +void pic_init (void); +#line 1 "e:/atu-100/fw_ext_3.1/1938_ext_board_sources_v_3.0/main.h" + + + + + +static char ind = 0, cap = 0, SW = 0, step_cap = 0, step_ind = 0, L_linear = 0, C_linear = 0, L_q = 7, C_q = 7, D_correction = 1, L_invert = 0, L_mult = 1, +C_mult = 1, P_High = 0, K_Mult = 32, Overload = 0, Loss_ind = 0; +static int Rel_Del, min_for_start, max_for_start, max_swr; +int SWR, PWR, P_max, swr_a; +char rready = 0, p_cnt = 0; + +void btn_push(void); +void lcd_prep(void); +void lcd_swr(int); +void lcd_pwr(void); +void show_pwr(int, int); +void lcd_ind(void); +void crypto(void); +void show_reset(void); +void cells_init(void); +void test_init(void); +void button_proc(void); +void button_proc_test(void); +void button_delay(void); +void show_loss(void); + +void atu_reset(void); +int get_reverse(void); +int get_forward(void); +int correction(int); +void get_swr(void); +void get_pwr(void); +void set_sw(char); +void coarse_cap(); +void sharp_cap(); +void sharp_ind(); +void coarse_tune(); +void tune(void); +void sub_tune(void); + + + int correction(int input) { + + if(input <= 80) return 0; + if(input <= 171) input += 244; + else if(input <= 328) input += 254; + else if(input <= 582) input += 280; + else if(input <= 820) input += 297; + else if(input <= 1100) input += 310; + else if(input <= 2181) input += 430; + else if(input <= 3322) input += 484; + else if(input <= 4623) input += 530; + else if(input <= 5862) input += 648; + else if(input <= 7146) input += 743; + else if(input <= 8502) input += 800; + else if(input <= 10500) input += 840; + else input += 860; + + return input; +} + + + +int get_reverse() { + int Reverse; + FVRCON = 0b10000001; + while(FVRCON.B6 == 0); + Reverse = ADC_Get_Sample(0); + if(Reverse <= 1000) return Reverse; + FVRCON = 0b10000010; + while(FVRCON.B6 == 0); + Reverse = ADC_Get_Sample(0); + if(Reverse <= 1000) return Reverse * 2; + FVRCON = 0b10000011; + while(FVRCON.B6 == 0); + Reverse = ADC_Get_Sample(0); + return Reverse * 4; +} + + +int get_forward() { + int Forward; + FVRCON = 0b10000001; + while(FVRCON.B6 == 0); + Forward = ADC_Get_Sample(1); + if(Forward <= 1000) return Forward; + FVRCON = 0b10000010; + while(FVRCON.B6 == 0); + Forward = ADC_Get_Sample(1); + if(Forward <= 1000) return Forward * 2; + FVRCON = 0b10000011; + while(FVRCON.B6 == 0); + Forward = ADC_Get_Sample(1); + if(Forward == 1023) Overload = 1; + else Overload = 0; + return Forward * 4; +} + +void get_pwr() { + long Forward, Reverse; + float p; + asm CLRWDT; + + Forward = get_forward(); + Reverse = get_reverse(); + if(D_correction==1) p = correction(Forward * 3); + else p = Forward * 3; + + if(Reverse >= Forward) + Forward = 999; + else { + Forward = ((Forward + Reverse) * 100) / (Forward - Reverse); + if(Forward>999) Forward = 999; + } + + p = p * K_Mult / 1000.0; + p = p / 1.414; + if(P_High==1) p = p * p / 50; + else p = p * p / 5; + p = p + 0.5; + + PWR = p; + if(PWR<10) SWR = 1; + else if(Forward<100) SWR = 999; + else SWR = Forward; + return; +} + +void get_swr() { + get_pwr(); + if(p_cnt!=100) { + p_cnt += 1; + if(PWR>P_max) P_max = PWR; + } + else { + p_cnt = 0; + show_pwr(P_max, SWR); + P_max = 0; + } + while(PWR max_for_start & max_for_start>0)) { + asm CLRWDT; + get_pwr(); + if(p_cnt!=100) { + p_cnt += 1; + if(PWR>P_max) P_max = PWR; + } + else { + p_cnt = 0; + show_pwr(P_max, SWR); + P_max = 0; + } + + if(Button(&PORTB, 0, 5, 1)) rready = 1; + if(rready==1 & Button(&PORTB, 0, 5, 0)) { + show_reset(); + SWR = 0; + return; + } + } + return; +} + +void set_ind(char Ind) { + if(L_invert == 0) { + Ind_005 = Ind.B0; + Ind_011 = Ind.B1; + Ind_022 = Ind.B2; + Ind_045 = Ind.B3; + Ind_1 = Ind.B4; + Ind_22 = Ind.B5; + Ind_45 = Ind.B6; + + } + else { + Ind_005 = ~Ind.B0; + Ind_011 = ~Ind.B1; + Ind_022 = ~Ind.B2; + Ind_045 = ~Ind.B3; + Ind_1 = ~Ind.B4; + Ind_22 = ~Ind.B5; + Ind_45 = ~Ind.B6; + + } + Vdelay_ms(Rel_Del); +} + +void set_cap(char Cap) { + Cap_10 = Cap.B0; + Cap_22 = Cap.B1; + Cap_47 = Cap.B2; + Cap_100 = Cap.B3; + Cap_220 = Cap.B4; + Cap_470 = Cap.B5; + Cap_1000 = Cap.B6; + + Vdelay_ms(Rel_Del); +} + +void set_sw(char SW) { + Cap_sw = SW; + Vdelay_ms(Rel_Del); +} + +void atu_reset() { + ind = 0; + cap = 0; + set_ind(ind); + set_cap(cap); + Vdelay_ms(Rel_Del); +} + + +void coarse_cap() { + char step = 3; + char count; + int min_swr; + + cap = 0; + set_cap(cap); + step_cap = step; + get_swr(); if(SWR==0) return; + min_swr = SWR + SWR/20; + for(count=step; count<=31;) { + set_cap(count*C_mult); + get_swr(); if(SWR==0) return; + if(SWR < min_swr) { + min_swr = SWR + SWR/20; + cap = count*C_mult; + step_cap = step; + if(SWR<120) break; + count +=step; + if(C_linear==0 & count==9) count = 8; + else if(C_linear==0 & count==17) {count = 16; step = 4;} + } + else break; + } + set_cap(cap); + return; +} + +void coarse_tune() { + char step = 3; + char count; + char mem_cap, mem_step_cap; + int min_swr; + + mem_cap = 0; + step_ind = step; + mem_step_cap = 3; + min_swr = SWR + SWR/20; + for(count=0; count<=31;) { + set_ind(count*L_mult); + coarse_cap(); + get_swr(); if(SWR==0) return; + if(SWR < min_swr) { + min_swr = SWR + SWR/20; + ind = count*L_mult; + mem_cap = cap; + step_ind = step; + mem_step_cap = step_cap; + if(SWR<120) break; + count +=step; + if(L_linear==0 & count==9) count = 8; + else if(L_linear==0 & count==17) {count = 16; step = 4;} + } + else break; + } + cap = mem_cap; + set_ind(ind); + set_cap(cap); + step_cap = mem_step_cap; + Delay_ms(10); + return; +} + +void sharp_cap() { + char range, count, max_range, min_range; + int min_swr; + range = step_cap*C_mult; + + max_range = cap + range; + if(max_range>32*C_mult-1) max_range = 32*C_mult-1; + if(cap>range) min_range = cap - range; else min_range = 0; + cap = min_range; + set_cap(cap); + get_swr(); if(SWR==0) return; + min_SWR = SWR; + for(count=min_range+C_mult; count<=max_range; count+=C_mult) { + set_cap(count); + get_swr(); if(SWR==0) return; + if(SWR>=min_SWR) { Delay_ms(10); get_swr(); } + if(SWR>=min_SWR) { Delay_ms(10); get_swr(); } + if(SWR < min_SWR) { + min_SWR = SWR; + cap = count; + if(SWR<120) break; + } + else break; + } + set_cap(cap); + return; +} + +void sharp_ind() { + char range, count, max_range, min_range; + int min_SWR; + range = step_ind * L_mult; + + max_range = ind + range; + if(max_range>32*L_mult-1) max_range = 32*L_mult-1; + if(ind>range) min_range = ind - range; else min_range = 0; + ind = min_range; + set_ind(ind); + get_swr(); if(SWR==0) return; + min_SWR = SWR; + for(count=min_range+L_mult; count<=max_range; count+=L_mult) { + set_ind(count); + get_swr(); if(SWR==0) return; + if(SWR>=min_SWR) { Delay_ms(10); get_swr(); } + if(SWR>=min_SWR) { Delay_ms(10); get_swr(); } + if(SWR < min_SWR) { + min_SWR = SWR; + ind = count; + if(SWR<120) break; + } + else break; + } + set_ind(ind); + return; +} + + +void sub_tune () { + int swr_mem, ind_mem, cap_mem; + + swr_mem = SWR; + coarse_tune(); if(SWR==0) {atu_reset(); return;} + get_swr(); if(SWR<120) return; + sharp_ind(); if(SWR==0) {atu_reset(); return;} + get_swr(); if(SWR<120) return; + sharp_cap(); if(SWR==0) {atu_reset(); return;} + get_swr(); if(SWR<120) return; + + if(SWR<200 & SWR100) return; + swr_mem = SWR; + ind_mem = ind; + cap_mem = cap; + + if(SW==1) SW = 0; else SW = 1; + atu_reset(); + set_sw(SW); + Delay_ms(50); + get_swr(); if(SWR<120) return; + + coarse_tune(); if(SWR==0) {atu_reset(); return;} + get_swr(); if(SWR<120) return; + sharp_ind(); if(SWR==0) {atu_reset(); return;} + get_swr(); if(SWR<120) return; + sharp_cap(); if(SWR==0) {atu_reset(); return;} + get_swr(); if(SWR<120) return; + + if(SWR>swr_mem) { + if(SW==1) SW = 0; else SW = 1; + set_sw(SW); + ind = ind_mem; + cap = cap_mem; + set_ind(ind); + set_cap(cap); + SWR = swr_mem; + } + + asm CLRWDT; + return; +} + + + +void tune() { + + asm CLRWDT; + + p_cnt = 0; + P_max = 0; + + rready = 0; + get_swr(); + if(SWR<110) return; + atu_reset(); + if(Loss_ind==0) lcd_ind(); + Delay_ms(50); + get_swr(); + swr_a = SWR; + if(SWR<110) return; + if(max_swr>110 & SWR>max_swr) return; + + sub_tune(); if(SWR==0) {atu_reset(); return;} + if(SWR<120) return; + if(C_q==5 & L_q==5) return; + + if(L_q>5) { + step_ind = L_mult; + L_mult = 1; + sharp_ind(); + } + if(SWR<120) return; + if(C_q>5) { + step_cap = C_mult; + C_mult = 1; + sharp_cap(); + } + if(L_q==5)L_mult = 1; + else if(L_q==6) L_mult = 2; + else if(L_q==7) L_mult = 4; + if(C_q==5) C_mult =1; + else if(C_q==6) C_mult = 2; + else if(C_q==7) C_mult = 4; + asm CLRWDT; + return; +} +#line 11 "E:/ATU-100/fw_EXT_3.1/1938_EXT_board_sources_V_3.0/main.c" + int SWR_fixed_old = 0, work_int; + unsigned char work_char, work_str[7], work_str_2[7]; + float Forward; + int Power =0, Power_old = 10000; + int SWR_old = 10000; + char type, Soft_tune = 0, Auto = 0, Track = 0; + char bypas = 0, cap_mem = 0, ind_mem = 0, SW_mem = 0, Auto_mem = 0; + int Auto_delta; + char Restart = 0, Test = 0, lcd_prep_short = 0; + char L = 1, but= 0; + int Cap1, Cap2, Cap3, Cap4, Cap5, Cap6, Cap7; + int Ind1, Ind2, Ind3, Ind4, Ind5, Ind6, Ind7; + char Dysp_delay = 0; + int dysp_cnt = 0; + float dysp_cnt_mult = 2.3; + char Loss_mode = 0, Fid_loss; + + + + + +void main() { + if(STATUS.B4==0) Restart = 1; + pic_init(); + + Delay_ms (300); + asm CLRWDT; + cells_init(); + Soft_I2C_Init(); + if(type==0) { + LATB.B6 = 1; + LATB.B7 = 1; + } + dysp_cnt = Dysp_delay * dysp_cnt_mult; + + Delay_ms(300); + asm CLRWDT; + + if(PORTB.B1==0 & PORTB.B2==0) { + Test = 1; + Auto =0; + } + if(L_q==5)L_mult = 1; + else if(L_q==6) L_mult = 2; + else if(L_q==7) L_mult = 4; + if(C_q==5) C_mult =1; + else if(C_q==6) C_mult = 2; + else if(C_q==7) C_mult = 4; + + Delay_ms(300); + asm CLRWDT; + led_init(); + + if(PORTB.B1==0 & PORTB.B2==0 & PORTB.B0==0) { + if(type==4 | type==5) led_wr_str (0, 12, "FAST TEST", 9); + else if(type!=0) led_wr_str (0, 3, "FAST TEST", 9); + set_cap(255); + if(L_invert==0) set_ind(255); + else set_ind(0); + set_sw(1); + asm CLRWDT; + while(1) {Delay_ms(500);asm CLRWDT;} + } + asm CLRWDT; + + if(Button(&PORTB, 0, 100, 0)) { + if(type==4 | type==5) { led_wr_str (0, 6, "Fider Loss", 10); + led_wr_str (1, 6, "input", 5); } + else if(type!=0) led_wr_str (0, 0, "Fider Loss input", 16); + Fid_loss = Bcd2Dec(EEPROM_Read(0x34)); + show_loss(); + + while(1) { + if(Button(&PORTB, 2, 50, 0)){ + if(Fid_loss<99) { + Fid_loss ++; + show_loss(); + EEPROM_Write(0x34, Dec2Bcd(Fid_loss)); + } + while(Button(&PORTB, 2, 50, 0)) asm CLRWDT; + } + + if(Button(&PORTB, 1, 50, 0)){ + if(Fid_loss>0) { + Fid_loss --; + show_loss(); + EEPROM_Write(0x34, Dec2Bcd(Fid_loss)); + } + while(Button(&PORTB, 1, 50, 0)) asm CLRWDT; + } + asm CLRWDT; + } + } + + if(Test==0) { + cap = EEPROM_Read(255); + ind = EEPROM_Read(254); + SW = EEPROM_Read(253); + swr_a = EEPROM_Read(252) * 256; + swr_a += EEPROM_Read(251); + set_ind(ind); + set_cap(cap); + set_sw(SW); + if(Restart==1 ) lcd_prep_short = 1; + lcd_prep(); + } + else Test_init(); + + lcd_ind(); + + + + + + while(1) { + asm CLRWDT; + lcd_pwr(); + + if(Test==0) button_proc(); + else button_proc_test(); + + if(dysp_cnt!=0) dysp_cnt --; + else if(Test==0 & Dysp_delay!=0) dysp_off(); + + + + } +} + + + + + void button_proc_test(void) { + if(Button(&PORTB, 0, 50, 0)){ + Delay_ms(250); + asm CLRWDT; + if(PORTB.B0==1) { + if(SW==0) SW = 1; else SW = 0; + set_sw(SW); + lcd_ind(); + } + else { + if(L==1) L = 0; else L = 1; + if(L==1) { + if(type==4 |type==5) + led_wr_str (0, 16+12*8, "l", 1); + else if(type!=0) + led_wr_str (0, 8, "l", 1); + } + else { + if(type==4 |type==5) + led_wr_str (0, 16+12*8, "c", 1); + else if(type!=0) + led_wr_str (0, 8, "c", 1); + } + } + while(Button(&PORTB, 0, 50, 0)) {lcd_pwr(); asm CLRWDT; } + } + + if(Button(&PORTB, 2, 50, 0)){ + asm CLRWDT; + while(PORTB.B2==0) { + if(L & ind<32*L_mult-1) { + ind ++; + set_ind(ind); + } + else if(!L & cap<32*L_mult-1) { + cap ++; + set_cap(cap); + } + lcd_ind(); + lcd_pwr(); + Delay_ms(30); + asm CLRWDT; + } + } + + if(Button(&PORTB, 1, 50, 0) & Bypas==0){ + asm CLRWDT; + while(PORTB.B1==0) { + if(L & ind>0) { + ind --; + set_ind(ind); + } + else if(!L & cap>0) { + cap --; + set_cap(cap); + } + lcd_ind(); + lcd_pwr(); + Delay_ms(30); + asm CLRWDT; + } + } + return; +} + + +void button_proc(void) { + if(Button(&PORTB, 0, 50, 0) | Soft_tune){ + dysp_on(); + dysp_cnt = Dysp_delay * dysp_cnt_mult; + Delay_ms(250); + asm CLRWDT; + if(Soft_tune == 0 & PORTB.B0==1) { + show_reset(); + bypas =0; + } + else { + p_Tx = 1; + n_Tx = 0; + Delay_ms(250); + btn_push(); + bypas = 0; + while(Button(&PORTB, 0, 50, 0)) {lcd_pwr(); asm CLRWDT; } + Soft_tune = 0; + } + } + + if(Button(&PORTB, 2, 50, 0)){ + dysp_on(); + dysp_cnt = Dysp_delay * dysp_cnt_mult; + asm CLRWDT; + if(bypas == 0) { + bypas = 1; + cap_mem = cap; + ind_mem = ind; + SW_mem = SW; + cap = 0; + ind = 0; + SW = 1; + set_ind(ind); + set_cap(cap); + set_SW(SW); + if(Loss_mode==0) lcd_ind(); + Auto_mem = Auto; + Auto = 0; + } + else { + bypas = 0; + cap = cap_mem; + ind = ind_mem; + SW = SW_mem; + set_cap(cap); + set_ind(ind); + set_SW(SW); + if(Loss_mode==0) lcd_ind(); + Auto = Auto_mem; + } + if(type==4 | type==5) { + if(Auto & !Bypas) led_wr_str (0, 16+8*12, ".", 1); + else if(!Auto & Bypas) led_wr_str (0, 16+8*12, "_", 1); + else led_wr_str (0, 16+8*12, " ", 1); + } + else if(type!=0) { + if(Auto & !Bypas) led_wr_str (0, 8, ".", 1); + else if(!Auto & Bypas) led_wr_str (0, 8, "_", 1); + else led_wr_str (0, 8, " ", 1); + } + asm CLRWDT; + while(Button(&PORTB, 2, 50, 0)) {lcd_pwr(); asm CLRWDT; } + } + + if(Button(&PORTB, 1, 50, 0) & Bypas==0){ + dysp_on(); + dysp_cnt = Dysp_delay * dysp_cnt_mult; + asm CLRWDT; + if(Auto == 0) Auto = 1; + else Auto = 0; + EEPROM_Write(2, Auto); + if(type==4 | type==5) { + if(Auto & !Bypas) led_wr_str (0, 16+8*12, ".", 1); + else if(!Auto & Bypas) led_wr_str (0, 16+8*12, "_", 1); + else led_wr_str (0, 16+8*12, " ", 1); + } + else if(type!=0) { + if(Auto & !Bypas) led_wr_str (0, 8, ".", 1); + else if(!Auto & Bypas) led_wr_str (0, 8, "_", 1); + else led_wr_str (0, 8, " ", 1); + } + asm CLRWDT; + while(Button(&PORTB, 1, 50, 0)) {lcd_pwr(); asm CLRWDT; } + } + return; +} + +void show_reset() { + atu_reset(); + SW = 1; + set_sw(SW); + EEPROM_Write(255, 0); + EEPROM_Write(254, 0); + EEPROM_Write(253, 1); + EEPROM_Write(252, 0); + EEPROM_Write(251, 0); + lcd_ind(); + Loss_mode = 0; + p_Tx = 0; + n_Tx = 1; + SWR = 0; + PWR = 0; + SWR_fixed_old = 0; + if(type==4 | type==5) { + led_wr_str (2, 16, "RESET ", 8); + asm CLRWDT; + delay_ms(600); + led_wr_str (2, 16, "SWR=0.00", 8); + asm CLRWDT; + } + else if(type!=0) { + led_wr_str (1, 0, "RESET ", 8); + asm CLRWDT; + delay_ms(600); + led_wr_str (1, 0, "SWR=0.00", 8); + asm CLRWDT; + } + else { + LATB.B6 = 1; + LATB.B7 = 1; + } + SWR_old = 10000; + Power_old = 10000; + lcd_pwr(); + return; +} + +void btn_push() { + asm CLRWDT; + if(type==4 | type==5) { + led_wr_str (2, 16+12*4, "TUNE", 4); + } + else if(type!=0) { + led_wr_str (1, 4, "TUNE", 4); + } + else { + LATB.B6 = 1; + LATB.B7 = 1; + } + tune(); + if(type==0) { + if(swr<=150) { LATB.B6 = 0; LATB.B7 = 1; } + else if(swr<=250) {PORTB.B6 = 0; PORTB.B7 = 0;} + else { PORTB.B6 = 1; PORTB.B7 = 0; } + } + else if(Loss_mode==0 | Loss_ind==0) lcd_ind(); + EEPROM_Write(255, cap); + EEPROM_Write(254, ind); + EEPROM_Write(253, SW); + EEPROM_Write(252, swr_a/256); + EEPROM_Write(251, swr_a%256); + SWR_old = 10000; + Power_old = 10000; + lcd_pwr(); + SWR_fixed_old = SWR; + p_Tx = 0; + n_Tx = 1; + asm CLRWDT; + return; +} + + + void lcd_prep() { + asm CLRWDT; + if(type==4 |type==5){ + if(lcd_prep_short==0) { + led_wr_str (0, 22, "ATU-100", 7); + led_wr_str (2, 6, "EXT board", 9); + led_wr_str (4, 16, "by N7DDC", 8); + led_wr_str (6, 4, "FW ver 3.1", 10); + asm CLRWDT; + Delay_ms(600); + asm CLRWDT; + Delay_ms(500); + asm CLRWDT; + led_wr_str (0, 16, " ", 8); + led_wr_str (2, 4, " ", 10); + led_wr_str (4, 16, " ", 8); + led_wr_str (6, 4, " ", 10); + } + Delay_ms(150); + if(P_High==1) led_wr_str (0, 16, "PWR= 0W", 8); + else led_wr_str (0, 16, "PWR=0.0W", 8); + led_wr_str (2, 16, "SWR=0.00", 8); + if(Auto) led_wr_str (0, 16+8*12, ".", 1); + } + else if(type!=0) { + if(lcd_prep_short==0) { + led_wr_str (0, 4, "ATU-100", 7); + led_wr_str (1, 3, "EXT board", 9); + asm CLRWDT; + Delay_ms(700); + asm CLRWDT; + Delay_ms(500); + asm CLRWDT; + led_wr_str (0, 4, "by N7DDC", 8); + led_wr_str (1, 3, "FW ver 3.1", 10); + asm CLRWDT; + Delay_ms(600); + asm CLRWDT; + Delay_ms(500); + asm CLRWDT; + led_wr_str (0, 4, " ", 8); + led_wr_str (1, 3, " ", 10); + } + Delay_ms(150); + if(P_High==1) led_wr_str (0, 0, "PWR= 0W", 8); + else led_wr_str (0, 0, "PWR=0.0W", 8); + led_wr_str (1, 0, "SWR=0.00", 8); + if(Auto) led_wr_str (0, 8, ".", 1); + } + asm CLRWDT; + lcd_ind(); + return; +} + + +void lcd_swr(int swr) { + asm CLRWDT; + if(swr!=SWR_old) { + SWR_old = swr; + if(swr==1) { + if(type==4 | type==5) led_wr_str (2, 16+4*12, "0.00", 4); + else if(type!=0) led_wr_str (1, 4, "0.00", 4); + else if(type==0) { + LATB.B6 = 1; + LATB.B7 = 1; + } + SWR_old = 0; + } + else { + SWR_old = swr; + IntToStr(swr, work_str); + work_str_2[0] = work_str[3]; + work_str_2[1] = '.'; + work_str_2[2] = work_str[4]; + work_str_2[3] = work_str[5]; + if(type==4 | type==5) led_wr_str (2, 16+4*12, work_str_2, 4); + else if(type!=0) led_wr_str (1, 4, work_str_2, 4); + else if(type==0) { + if(swr<=150) { LATB.B6 = 0; LATB.B7 = 1; } + else if(swr<=250) {PORTB.B6 = 0; PORTB.B7 = 0;} + else { PORTB.B6 = 1; PORTB.B7 = 0; } + } + } + } + asm CLRWDT; + return; +} + + +void button_delay() { + if((Button(&PORTB, 0, 25, 0)) | (Button(&PORTB, 1, 25, 0)) | (Button(&PORTB, 2, 25, 0))) { + but = 1; + } + return; +} + +void show_pwr(int Power, int SWR) { + int p_ant, eff; + float a, b; + a = 100; + asm CLRWDT; + + if(Test==0 & Loss_ind==1 & SWR>=100) { + if(Loss_mode==0) { + if(type==4 |type==5){ + if(P_High==1) led_wr_str(4, 16, "ANT= 0W", 8); + else led_wr_str(4, 16, "ANT=0.0W", 8); + led_wr_str(6, 16, "EFF= 0%", 8); + } + else if(type==2 | type==3) { + if(P_High==1) led_wr_str (0, 9, "ANT= 0W", 8); + else led_wr_str (0, 9, "ANT=0.0W", 8); + led_wr_str (1, 9, "EFF= 0%", 8); + } + else if(type==1) { + if(P_High==1) led_wr_str (0, 9, "AN= 0W", 7); + else led_wr_str (0, 9, "AN=0.0W", 7); + led_wr_str (1, 9, "EFF= 0%", 7); + } + } + Loss_mode = 1; + } + else { + if(Loss_mode==1) lcd_ind(); + Loss_mode = 0; + } + asm CLRWDT; + if(Power != Power_old) { + Power_old = Power; + + if(P_High==0) { + if(Power >= 100) { + Power += 5; + IntToStr(Power, work_str); + work_str_2[0] = work_str[2]; + work_str_2[1] = work_str[3]; + work_str_2[2] = work_str[4]; + work_str_2[3] = 'W'; + } + else { + IntToStr(Power, work_str); + if(work_str[4] != ' ') work_str_2[0] = work_str[4]; else work_str_2[0] = '0'; + work_str_2[1] = '.'; + if(work_str[5] != ' ') work_str_2[2] = work_str[5]; else work_str_2[2] = '0'; + work_str_2[3] = 'W'; + } + } + else { + if(Power<999){ + IntToStr(Power, work_str); + work_str_2[0] = work_str[3]; + work_str_2[1] = work_str[4]; + work_str_2[2] = work_str[5]; + work_str_2[3] = 'W'; + } + else { + IntToStr(Power, work_str); + work_str_2[0] = work_str[2]; + work_str_2[1] = work_str[3]; + work_str_2[2] = work_str[4]; + work_str_2[3] = work_str[5]; + } + } + if(type==4 | type==5) led_wr_str (0, 16+4*12, work_str_2, 4); + else if(type!=0) led_wr_str (0, 4, work_str_2, 4); + + asm CLRWDT; + + if(Loss_mode==1) { + if(ind==0 & cap==0) swr_a = SWR; + a = 1.0 / ((swr_a/100.0 + 100.0/swr_a) * Fid_loss/10.0 * 0.115 + 1.0); + b = 4.0 / (2.0 + SWR/100.0 + 100.0/SWR); + if(a>=1.0) a = 1.0; + if(b>=1.0) b = 1.0; + p_ant = Power * a * b; + eff = a * b * 100; + if(eff>=100) eff = 99; + + if(P_High==0) { + if(p_ant >= 100) { + p_ant += 5; + IntToStr(p_ant, work_str); + work_str_2[0] = work_str[2]; + work_str_2[1] = work_str[3]; + work_str_2[2] = work_str[4]; + work_str_2[3] = 'W'; + } + else { + IntToStr(p_ant, work_str); + if(work_str[4] != ' ') work_str_2[0] = work_str[4]; else work_str_2[0] = '0'; + work_str_2[1] = '.'; + if(work_str[5] != ' ') work_str_2[2] = work_str[5]; else work_str_2[2] = '0'; + work_str_2[3] = 'W'; + } + } + else { + if(p_ant<999){ + IntToStr(p_ant, work_str); + work_str_2[0] = work_str[3]; + work_str_2[1] = work_str[4]; + work_str_2[2] = work_str[5]; + work_str_2[3] = 'W'; + } + else { + IntToStr(p_ant, work_str); + work_str_2[0] = work_str[2]; + work_str_2[1] = work_str[3]; + work_str_2[2] = work_str[4]; + work_str_2[3] = work_str[5]; + } + } + if(type==4 | type==5) led_wr_str (4, 16+4*12, work_str_2, 4); + else if(type==2 | type==3) led_wr_str (0, 13, work_str_2, 4); + else if(type!=0) led_wr_str (0, 12, work_str_2, 4); + + IntToStr(eff, work_str); + work_str_2[0] = work_str[4]; + work_str_2[1] = work_str[5]; + if(type==4 | type==5) led_wr_str(6, 16+5*12, work_str_2, 2); + else if(type==2 | type==3) led_wr_str(1, 14, work_str_2, 2); + else if(type==1) led_wr_str(1, 13, work_str_2, 2); + } + } + asm CLRWDT; + return; +} + +void lcd_pwr() { + int p = 0; + char peak_cnt; + int delta = Auto_delta - 100; + char cnt; + int SWR_fixed = 1; + PWR = 0; + asm CLRWDT; + + cnt = 120; + for(peak_cnt = 0; peak_cnt < cnt; peak_cnt++){ + if(PORTB.B1==0 | PORTB.B2==0 | PORTB.B0==0) {button_delay(); if(but==1) {but = 0; return;} } + get_pwr(); + if(PWR>p) {p = PWR; SWR_fixed = SWR;} + Delay_ms(3); + } + asm CLRWDT; + Power = p; + lcd_swr(SWR_fixed); + if(SWR_fixed>=100) { + dysp_on(); + dysp_cnt = Dysp_delay * dysp_cnt_mult; + } + + if(Auto & SWR_fixed>=Auto_delta & ((SWR_fixed>SWR_fixed_old & (SWR_fixed-SWR_fixed_old)>delta) | (SWR_fixeddelta) | SWR_fixed_old==999)) + Soft_tune = 1; + + if(PORTB.B1==0 | PORTB.B2==0 | PORTB.B0==0) {button_delay(); if(but==1) {but = 0; return;} } + show_pwr(Power, SWR_fixed); + + if(PORTB.B1==0 | PORTB.B2==0 | PORTB.B0==0) {button_delay(); if(but==1) {but = 0; return;} } + asm CLRWDT; + if(Overload==1) { + if(type==4 | type==5) { + led_wr_str (2, 16, " ", 8); + delay_ms(100); + led_wr_str (2, 16, "OVERLOAD", 8); + delay_ms(500); + asm CLRWDT; + led_wr_str (2, 16, " ", 8); + delay_ms(300); + asm CLRWDT; + led_wr_str (2, 16, "OVERLOAD", 8); + delay_ms(500); + asm CLRWDT; + led_wr_str (2, 16, " ", 8); + delay_ms(300); + asm CLRWDT; + led_wr_str (2, 16, "OVERLOAD", 8); + delay_ms(500); + asm CLRWDT; + led_wr_str (2, 16, " ", 8); + delay_ms(100); + led_wr_str (2, 16, "SWR= ", 8); + } + else if(type!=0) { + led_wr_str (1, 0, " ", 8); + delay_ms(100); + led_wr_str (1, 0, "OVERLOAD", 8); + delay_ms(500); + asm CLRWDT; + led_wr_str (1, 0, " ", 8); + delay_ms(300); + asm CLRWDT; + led_wr_str (1, 0, "OVERLOAD", 8); + delay_ms(500); + asm CLRWDT; + led_wr_str (1, 0, " ", 8); + delay_ms(300); + asm CLRWDT; + led_wr_str (1, 0, "OVERLOAD", 8); + delay_ms(500); + asm CLRWDT; + led_wr_str (1, 0, " ", 8); + delay_ms(100); + led_wr_str (1, 0, "SWR= ", 8); + } + asm CLRWDT; + SWR_old = 10000; + lcd_swr(SWR_fixed); + } + return; +} + +void lcd_ind() { + char column; + asm CLRWDT; + if(1) { + work_int = 0; + if(ind.B0) work_int += Ind1; + if(ind.B1) work_int += Ind2; + if(ind.B2) work_int += Ind3; + if(ind.B3) work_int += Ind4; + if(ind.B4) work_int += Ind5; + if(ind.B5) work_int += Ind6; + if(ind.B6) work_int += Ind7; + if(work_int>9999) { + work_int += 50; + IntToStr(work_int, work_str); + work_str_2[0] = work_str[1]; + work_str_2[1] = work_str[2]; + work_str_2[2] = '.'; + work_str_2[3] = work_str[3]; + } + else { + IntToStr(work_int, work_str); + if(work_str[2] != ' ') work_str_2[0] = work_str[2]; else work_str_2[0] = '0'; + work_str_2[1] = '.'; + if(work_str[3] != ' ') work_str_2[2] = work_str[3]; else work_str_2[2] = '0'; + if(work_str[4] != ' ') work_str_2[3] = work_str[4]; else work_str_2[3] = '0'; + } + if(type==4 | type==5) { + if(SW==1) column = 4; else column = 6; + led_wr_str (column, 16, "L=", 2); + led_wr_str (column, 16+6*12, "uH", 2); + led_wr_str (column, 16+2*12, work_str_2, 4); + } + else if(type==2 | type==3) { + if(SW==1) column = 0; else column = 1; + led_wr_str (column, 9, "L=", 2); + led_wr_str (column, 15, "uH", 2); + led_wr_str (column, 11, work_str_2, 4); + } + else if(type==1) { + if(SW==1) column = 0; else column = 1; + led_wr_str (column, 9, "L=", 2); + led_wr_str (column, 15, "u", 1); + led_wr_str (column, 11, work_str_2, 4); + } + } + asm CLRWDT; + if(1) { + work_int = 0; + if(cap.B0) work_int += Cap1; + if(cap.B1) work_int += Cap2; + if(cap.B2) work_int += Cap3; + if(cap.B3) work_int += Cap4; + if(cap.B4) work_int += Cap5; + if(cap.B5) work_int += Cap6; + if(cap.B6) work_int += Cap7; + IntToStr(work_int, work_str); + work_str_2[0] = work_str[2]; + work_str_2[1] = work_str[3]; + work_str_2[2] = work_str[4]; + work_str_2[3] = work_str[5]; + + if(type==4 | type==5) { + if(SW==1) column = 6; else column = 4; + led_wr_str (column, 16, "C=", 2); + led_wr_str (column, 16+6*12, "pF", 2); + led_wr_str (column, 16+2*12, work_str_2, 4); + } + else if(type==2 | type==3) { + if(SW==1) column = 1; else column = 0; + led_wr_str (column, 9, "C=", 2); + led_wr_str (column, 15, "pF", 2); + led_wr_str (column, 11, work_str_2, 4); + } + else if(type==1) { + if(SW==1) column = 1; else column = 0; + led_wr_str (column, 9, "C=", 2); + led_wr_str (column, 15, "p", 1); + led_wr_str (column, 11, work_str_2, 4); + } + } + asm CLRWDT; + return; +} + + +void Test_init(void) { + if(type==4 | type==5) + led_wr_str (0, 10, "TEST MODE", 9); + else if(type!=0) + led_wr_str (0, 3, "TEST MODE", 9); + asm CLRWDT; + Delay_ms(500); + asm CLRWDT; + Delay_ms(500); + asm CLRWDT; + Delay_ms(500); + asm CLRWDT; + Delay_ms(500); + asm CLRWDT; + if(type==4 | type==5) + led_wr_str (0, 10, " ", 9); + else if(type!=0) + led_wr_str (0, 3, " ", 9); + atu_reset(); + SW = 1; + set_sw(SW); + EEPROM_Write(255, cap); + EEPROM_Write(254, ind); + EEPROM_Write(253, SW); + + if(type==4 | type==5) + led_wr_str (0, 16+12*8, "l", 1); + else if(type!=0) + led_wr_str (0, 8, "l", 1); + + lcd_prep_short = 1; + lcd_prep(); + return; +} + + +void cells_init(void) { + + asm CLRWDT; + + type = EEPROM_Read(1); + if(EEPROM_Read(2) == 1) Auto = 1; + Rel_Del = Bcd2Dec(EEPROM_Read(3)); + Auto_delta = Bcd2Dec(EEPROM_Read(4)) * 10; + min_for_start = Bcd2Dec(EEPROM_Read(5)) * 10; + max_for_start = Bcd2Dec(EEPROM_Read(6)) * 10; + + + max_swr = Bcd2Dec(EEPROM_Read(9)) * 10; + L_q = EEPROM_Read(10); + L_linear = EEPROM_Read(11); + C_q = EEPROM_Read(12); + C_linear = EEPROM_Read(13); + D_correction = EEPROM_Read(14); + L_invert = EEPROM_Read(15); + + asm CLRWDT; + Ind1 = Bcd2Dec(EEPROM_Read(16)) * 100 + Bcd2Dec(EEPROM_Read(17)); + Ind2 = Bcd2Dec(EEPROM_Read(18)) * 100 + Bcd2Dec(EEPROM_Read(19)); + Ind3 = Bcd2Dec(EEPROM_Read(20)) * 100 + Bcd2Dec(EEPROM_Read(21)); + Ind4 = Bcd2Dec(EEPROM_Read(22)) * 100 + Bcd2Dec(EEPROM_Read(23)); + Ind5 = Bcd2Dec(EEPROM_Read(24)) * 100 + Bcd2Dec(EEPROM_Read(25)); + Ind6 = Bcd2Dec(EEPROM_Read(26)) * 100 + Bcd2Dec(EEPROM_Read(27)); + Ind7 = Bcd2Dec(EEPROM_Read(28)) * 100 + Bcd2Dec(EEPROM_Read(29)); + + Cap1 = Bcd2Dec(EEPROM_Read(32)) * 100 + Bcd2Dec(EEPROM_Read(33)); + Cap2 = Bcd2Dec(EEPROM_Read(34)) * 100 + Bcd2Dec(EEPROM_Read(35)); + Cap3 = Bcd2Dec(EEPROM_Read(36)) * 100 + Bcd2Dec(EEPROM_Read(37)); + Cap4 = Bcd2Dec(EEPROM_Read(38)) * 100 + Bcd2Dec(EEPROM_Read(39)); + Cap5 = Bcd2Dec(EEPROM_Read(40)) * 100 + Bcd2Dec(EEPROM_Read(41)); + Cap6 = Bcd2Dec(EEPROM_Read(42)) * 100 + Bcd2Dec(EEPROM_Read(43)); + Cap7 = Bcd2Dec(EEPROM_Read(44)) * 100 + Bcd2Dec(EEPROM_Read(45)); + + P_High = EEPROM_Read(0x30); + K_Mult = Bcd2Dec(EEPROM_Read(0x31)); + Dysp_delay = Bcd2Dec(EEPROM_Read(0x32)); + Loss_ind = EEPROM_Read(0x33); + Fid_loss = Bcd2Dec(EEPROM_Read(0x34)); + asm CLRWDT; + return; + +} + +void show_loss(void) { + IntToStr(Fid_loss, work_str); + if(Fid_loss>=10) work_str_2[0] = work_str[4]; + else work_str_2[0] = '0'; + work_str_2[1] = '.'; + work_str_2[2] = work_str[5]; + if(type==4 | type==5) led_wr_str (2, 6, work_str_2, 3); + else if(type!=0) led_wr_str (1, 3, work_str_2, 3); + return; +} diff --git a/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/main.h b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/main.h new file mode 100644 index 0000000..ebfb394 --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/main.h @@ -0,0 +1,419 @@ +// Main.h +// David Fainitski +// ATU-100 project 2016 + +// +static char ind = 0, cap = 0, SW = 0, step_cap = 0, step_ind = 0, L_linear = 0, C_linear = 0, L_q = 7, C_q = 7, D_correction = 1, L_invert = 0, L_mult = 1, +C_mult = 1, P_High = 0, K_Mult = 32, Overload = 0, Loss_ind = 0; +static int Rel_Del, min_for_start, max_for_start, max_swr; +int SWR, PWR, P_max, swr_a; +char rready = 0, p_cnt = 0; +// +void btn_push(void); +void lcd_prep(void); +void lcd_swr(int); +void lcd_pwr(void); +void show_pwr(int, int); +void lcd_ind(void); +void crypto(void); +void show_reset(void); +void cells_init(void); +void test_init(void); +void button_proc(void); +void button_proc_test(void); +void button_delay(void); +void show_loss(void); +// +void atu_reset(void); +int get_reverse(void); +int get_forward(void); +int correction(int); +void get_swr(void); +void get_pwr(void); +void set_sw(char); +void coarse_cap(); +void sharp_cap(); +void sharp_ind(); +void coarse_tune(); +void tune(void); +void sub_tune(void); +// + + int correction(int input) { + // + if(input <= 80) return 0; + if(input <= 171) input += 244; + else if(input <= 328) input += 254; + else if(input <= 582) input += 280; + else if(input <= 820) input += 297; + else if(input <= 1100) input += 310; + else if(input <= 2181) input += 430; + else if(input <= 3322) input += 484; + else if(input <= 4623) input += 530; + else if(input <= 5862) input += 648; + else if(input <= 7146) input += 743; + else if(input <= 8502) input += 800; + else if(input <= 10500) input += 840; + else input += 860; + // + return input; +} + +// + +int get_reverse() { + int Reverse; + FVRCON = 0b10000001; // ADC 1024 vmV Vref + while(FVRCON.B6 == 0); + Reverse = ADC_Get_Sample(0); + if(Reverse <= 1000) return Reverse; + FVRCON = 0b10000010; // ADC 2048 vmV Vref + while(FVRCON.B6 == 0); + Reverse = ADC_Get_Sample(0); + if(Reverse <= 1000) return Reverse * 2; + FVRCON = 0b10000011; // ADC 4096 vmV Vref + while(FVRCON.B6 == 0); + Reverse = ADC_Get_Sample(0); + return Reverse * 4; +} +// + +int get_forward() { + int Forward; + FVRCON = 0b10000001; // ADC 1024 vmV Vref + while(FVRCON.B6 == 0); + Forward = ADC_Get_Sample(1); + if(Forward <= 1000) return Forward; + FVRCON = 0b10000010; // ADC 2048 vmV Vref + while(FVRCON.B6 == 0); + Forward = ADC_Get_Sample(1); + if(Forward <= 1000) return Forward * 2; + FVRCON = 0b10000011; // ADC 4096 vmV Vref + while(FVRCON.B6 == 0); + Forward = ADC_Get_Sample(1); + if(Forward == 1023) Overload = 1; + else Overload = 0; + return Forward * 4; +} + +void get_pwr() { + long Forward, Reverse; + float p; + asm CLRWDT; + // + Forward = get_forward(); + Reverse = get_reverse(); + if(D_correction==1) p = correction(Forward * 3); + else p = Forward * 3; + // + if(Reverse >= Forward) + Forward = 999; + else { + Forward = ((Forward + Reverse) * 100) / (Forward - Reverse); + if(Forward>999) Forward = 999; + } + // + p = p * K_Mult / 1000.0; // mV to Volts on Input + p = p / 1.414; + if(P_High==1) p = p * p / 50; // 0 - 1500 ( 1500 Watts) + else p = p * p / 5; // 0 - 1510 (151.0 Watts) + p = p + 0.5; // rounding + // + PWR = p; + if(PWR<10) SWR = 1; + else if(Forward<100) SWR = 999; + else SWR = Forward; + return; +} + +void get_swr() { + get_pwr(); + if(p_cnt!=100) { + p_cnt += 1; + if(PWR>P_max) P_max = PWR; + } + else { + p_cnt = 0; + show_pwr(P_max, SWR); + P_max = 0; + } + while(PWR max_for_start & max_for_start>0)) { // waiting for good power + asm CLRWDT; + get_pwr(); + if(p_cnt!=100) { + p_cnt += 1; + if(PWR>P_max) P_max = PWR; + } + else { + p_cnt = 0; + show_pwr(P_max, SWR); + P_max = 0; + } + // + if(Button(&PORTB, 0, 5, 1)) rready = 1; + if(rready==1 & Button(&PORTB, 0, 5, 0)) { // press button Tune + show_reset(); + SWR = 0; + return; + } + } // good power + return; +} + +void set_ind(char Ind) { // 0 - 31 + if(L_invert == 0) { + Ind_005 = Ind.B0; + Ind_011 = Ind.B1; + Ind_022 = Ind.B2; + Ind_045 = Ind.B3; + Ind_1 = Ind.B4; + Ind_22 = Ind.B5; + Ind_45 = Ind.B6; + // + } + else { + Ind_005 = ~Ind.B0; + Ind_011 = ~Ind.B1; + Ind_022 = ~Ind.B2; + Ind_045 = ~Ind.B3; + Ind_1 = ~Ind.B4; + Ind_22 = ~Ind.B5; + Ind_45 = ~Ind.B6; + // + } + Vdelay_ms(Rel_Del); +} + +void set_cap(char Cap) { // 0 - 31 + Cap_10 = Cap.B0; + Cap_22 = Cap.B1; + Cap_47 = Cap.B2; + Cap_100 = Cap.B3; + Cap_220 = Cap.B4; + Cap_470 = Cap.B5; + Cap_1000 = Cap.B6; + // + Vdelay_ms(Rel_Del); +} + +void set_sw(char SW) { // 0 - IN, 1 - OUT + Cap_sw = SW; + Vdelay_ms(Rel_Del); +} + +void atu_reset() { + ind = 0; + cap = 0; + set_ind(ind); + set_cap(cap); + Vdelay_ms(Rel_Del); +} + + +void coarse_cap() { + char step = 3; + char count; + int min_swr; + + cap = 0; + set_cap(cap); + step_cap = step; + get_swr(); if(SWR==0) return; + min_swr = SWR + SWR/20; + for(count=step; count<=31;) { + set_cap(count*C_mult); + get_swr(); if(SWR==0) return; + if(SWR < min_swr) { + min_swr = SWR + SWR/20; + cap = count*C_mult; + step_cap = step; + if(SWR<120) break; + count +=step; + if(C_linear==0 & count==9) count = 8; + else if(C_linear==0 & count==17) {count = 16; step = 4;} + } + else break; + } + set_cap(cap); + return; +} + +void coarse_tune() { + char step = 3; + char count; + char mem_cap, mem_step_cap; + int min_swr; + + mem_cap = 0; + step_ind = step; + mem_step_cap = 3; + min_swr = SWR + SWR/20; + for(count=0; count<=31;) { + set_ind(count*L_mult); + coarse_cap(); + get_swr(); if(SWR==0) return; + if(SWR < min_swr) { + min_swr = SWR + SWR/20; + ind = count*L_mult; + mem_cap = cap; + step_ind = step; + mem_step_cap = step_cap; + if(SWR<120) break; + count +=step; + if(L_linear==0 & count==9) count = 8; + else if(L_linear==0 & count==17) {count = 16; step = 4;} + } + else break; + } + cap = mem_cap; + set_ind(ind); + set_cap(cap); + step_cap = mem_step_cap; + Delay_ms(10); + return; +} + +void sharp_cap() { + char range, count, max_range, min_range; + int min_swr; + range = step_cap*C_mult; + // + max_range = cap + range; + if(max_range>32*C_mult-1) max_range = 32*C_mult-1; + if(cap>range) min_range = cap - range; else min_range = 0; + cap = min_range; + set_cap(cap); + get_swr(); if(SWR==0) return; + min_SWR = SWR; + for(count=min_range+C_mult; count<=max_range; count+=C_mult) { + set_cap(count); + get_swr(); if(SWR==0) return; + if(SWR>=min_SWR) { Delay_ms(10); get_swr(); } + if(SWR>=min_SWR) { Delay_ms(10); get_swr(); } + if(SWR < min_SWR) { + min_SWR = SWR; + cap = count; + if(SWR<120) break; + } + else break; + } + set_cap(cap); + return; +} + +void sharp_ind() { + char range, count, max_range, min_range; + int min_SWR; + range = step_ind * L_mult; + // + max_range = ind + range; + if(max_range>32*L_mult-1) max_range = 32*L_mult-1; + if(ind>range) min_range = ind - range; else min_range = 0; + ind = min_range; + set_ind(ind); + get_swr(); if(SWR==0) return; + min_SWR = SWR; + for(count=min_range+L_mult; count<=max_range; count+=L_mult) { + set_ind(count); + get_swr(); if(SWR==0) return; + if(SWR>=min_SWR) { Delay_ms(10); get_swr(); } + if(SWR>=min_SWR) { Delay_ms(10); get_swr(); } + if(SWR < min_SWR) { + min_SWR = SWR; + ind = count; + if(SWR<120) break; + } + else break; + } + set_ind(ind); + return; +} + + +void sub_tune () { + int swr_mem, ind_mem, cap_mem; + // + swr_mem = SWR; + coarse_tune(); if(SWR==0) {atu_reset(); return;} + get_swr(); if(SWR<120) return; + sharp_ind(); if(SWR==0) {atu_reset(); return;} + get_swr(); if(SWR<120) return; + sharp_cap(); if(SWR==0) {atu_reset(); return;} + get_swr(); if(SWR<120) return; + // + if(SWR<200 & SWR100) return; + swr_mem = SWR; + ind_mem = ind; + cap_mem = cap; + // + if(SW==1) SW = 0; else SW = 1; + atu_reset(); + set_sw(SW); + Delay_ms(50); + get_swr(); if(SWR<120) return; + // + coarse_tune(); if(SWR==0) {atu_reset(); return;} + get_swr(); if(SWR<120) return; + sharp_ind(); if(SWR==0) {atu_reset(); return;} + get_swr(); if(SWR<120) return; + sharp_cap(); if(SWR==0) {atu_reset(); return;} + get_swr(); if(SWR<120) return; + // + if(SWR>swr_mem) { + if(SW==1) SW = 0; else SW = 1; + set_sw(SW); + ind = ind_mem; + cap = cap_mem; + set_ind(ind); + set_cap(cap); + SWR = swr_mem; + } + // + asm CLRWDT; + return; +} + + + +void tune() { + //int swr_mem, ind_mem, cap_mem, sw_mem; + asm CLRWDT; + // + p_cnt = 0; + P_max = 0; + // + rready = 0; + get_swr(); + if(SWR<110) return; + atu_reset(); + if(Loss_ind==0) lcd_ind(); + Delay_ms(50); + get_swr(); + swr_a = SWR; + if(SWR<110) return; + if(max_swr>110 & SWR>max_swr) return; + // + sub_tune(); if(SWR==0) {atu_reset(); return;} + if(SWR<120) return; + if(C_q==5 & L_q==5) return; + + if(L_q>5) { + step_ind = L_mult; + L_mult = 1; + sharp_ind(); + } + if(SWR<120) return; + if(C_q>5) { + step_cap = C_mult; // = C_mult + C_mult = 1; + sharp_cap(); + } + if(L_q==5)L_mult = 1; + else if(L_q==6) L_mult = 2; + else if(L_q==7) L_mult = 4; + if(C_q==5) C_mult =1; + else if(C_q==6) C_mult = 2; + else if(C_q==7) C_mult = 4; + asm CLRWDT; + return; +} \ No newline at end of file diff --git a/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/main.h.ini b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/main.h.ini new file mode 100644 index 0000000..45c1081 --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/main.h.ini @@ -0,0 +1,9 @@ +[Bookmarks] +Count=0 +[Position] +Line=95 +Column=17 +[BreakPoints] +Count=0 +[FoldedLines] +Count=0 diff --git a/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/main.ini b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/main.ini new file mode 100644 index 0000000..f98081c --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/main.ini @@ -0,0 +1,9 @@ +[Bookmarks] +Count=0 +[Position] +Line=42 +Column=34 +[BreakPoints] +Count=0 +[FoldedLines] +Count=0 diff --git a/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/main.mcl b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/main.mcl new file mode 100644 index 0000000000000000000000000000000000000000..31e961dcee41b711a68fc6c6fc397b9fa9400095 GIT binary patch literal 258149 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 literal 0 HcmV?d00001 diff --git a/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/main_main.h b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/main_main.h new file mode 100644 index 0000000..907ddcb --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/main_main.h @@ -0,0 +1,521 @@ +// Main.h +// David Fainitski +// ATU-100 project 2016 + +// +static char ind = 0, cap = 0, SW = 0, step_cap = 0, step_ind = 0, L_linear = 0, C_linear = 0, L_q = 7, C_q = 7, D_correction = 1; +static int Rel_Del, min_for_start, max_for_start, max_swr; +int SWR, PWR; +char rready = 0; +// +void btn_push(void); +void lcd_prep(void); +void lcd_prep_short(void); +void lcd_swr(int, int); +void lcd_pwr(void); +void lcd_ind(void); +void crypto(void); +void show_reset(void); +void cells_init(void); +void test_init(void); +void button_proc(void); +void button_proc_test(void); +// +void atu_reset(void); +int get_reverse(void); +int get_forward(void); +int correction(int); +int get_swr(void); +void get_pwr(void); +void set_sw(char); +void coarse_cap(); +void sharp_cap(); +void sharp_ind(); +void coarse_tune(); +void tune(void); +// + +int correction(int input) { + input *= 3; // Devider compensation + + if(input <= 80) return 0; + if(input <= 171) input += 244; + else if(input <= 328) input += 254; + else if(input <= 582) input += 280; + else if(input <= 820) input += 297; + else if(input <= 1100) input += 310; + else if(input <= 2181) input += 430; + else if(input <= 3322) input += 484; + else if(input <= 4623) input += 530; + else if(input <= 5862) input += 648; + else if(input <= 7146) input += 743; + else if(input <= 8502) input += 800; + else if(input <= 10500) input += 820; + else input += 850; + // + + return input; +} + +// + +int get_reverse() { + int Reverse; + FVRCON = 0b10000001; // ADC 1024 vmV Vref + while(FVRCON.B6 == 0); + Reverse = ADC_Get_Sample(0); + if(Reverse <= 1000) return Reverse; + FVRCON = 0b10000010; // ADC 2048 vmV Vref + while(FVRCON.B6 == 0); + Reverse = ADC_Get_Sample(0); + if(Reverse <= 1000) return Reverse * 2; + FVRCON = 0b10000011; // ADC 4096 vmV Vref + while(FVRCON.B6 == 0); + Reverse = ADC_Get_Sample(0); + return Reverse * 4; +} +// + +int get_forward() { + int Forward; + FVRCON = 0b10000001; // ADC 1024 vmV Vref + while(FVRCON.B6 == 0); + Forward = ADC_Get_Sample(1); + if(Forward <= 1000) return Forward; + FVRCON = 0b10000010; // ADC 2048 vmV Vref + while(FVRCON.B6 == 0); + Forward = ADC_Get_Sample(1); + if(Forward <= 1000) return Forward * 2; + FVRCON = 0b10000011; // ADC 4096 vmV Vref + while(FVRCON.B6 == 0); + Forward = ADC_Get_Sample(1); + return Forward * 4; +} + +void get_pwr() { + long Forward, Reverse; + float p; + asm CLRWDT; + // + Forward = get_forward(); + Reverse = get_reverse(); + if(D_correction==1) p = correction(Forward); + else p = Forward; + // + if(Reverse >= Forward) + Forward = 999; + else { + Forward = ((Forward + Reverse) * 100) / (Forward - Reverse); + if(Forward>999) Forward = 999; + } + // + p = p * 10 / 1000; // mV to Volts + p = p / 1.414; + p = p * p / 5; + p = p + 0.5; // rounding to 0.1 W + PWR = p; // 0 - 1510 (151.0 Watts) + SWR = Forward; +} + +int get_swr() { + get_pwr(); + while((PWR<=min_for_start | (PWR> max_for_start & max_for_start>0))) { // waiting for good power + asm CLRWDT; + get_pwr(); + if(Button(&PORTB, 0, 5, 1)) rready = 1; + if(rready==1 & Button(&PORTB, 0, 5, 0)) { // press button Tune + show_reset(); + SWR = 0; + return SWR; + } + } // good power + return SWR; +} + +void set_ind(char Ind) { // 0 - 31 + // + Ind_005 = Ind.B0; + Ind_011 = Ind.B1; + Ind_022 = Ind.B2; + Ind_045 = Ind.B3; + Ind_1 = Ind.B4; + Ind_22 = Ind.B5; + Ind_45 = Ind.B6; + // + Vdelay_ms(Rel_Del); +} + +void set_cap(char Cap) { // 0 - 31 + Cap_10 = Cap.B0; + Cap_22 = Cap.B1; + Cap_47 = Cap.B2; + Cap_100 = Cap.B3; + Cap_220 = Cap.B4; + Cap_470 = Cap.B5; + Cap_1000 = Cap.B6; + // + Vdelay_ms(Rel_Del); +} + +void set_sw(char SW) { // 0 - IN, 1 - OUT + Cap_sw = SW; + Vdelay_ms(Rel_Del); +} + +void atu_reset() { + ind = 0; + cap = 0; + set_ind(ind); + set_cap(cap); + Vdelay_ms(Rel_Del); +} +/* +void coarse_cap() { + char step = 3; + char count, max_count = 1; + int min_swr; + + for(count==C_q; count>0; count--) max_count *= 2; + max_count -= 1; + cap = 0; + set_cap(cap); + SWR = get_swr(); + if(SWR==0 | SWR<120) return; + min_swr = SWR + SWR/20; + for(count=step; count<=max_count;) { + set_cap(count); + SWR = get_swr(); + if(SWR==0) return; + if(SWR=40) {step = count/10; count += step;} + else count += step; + } + } + else break; + } + set_cap(cap); + return; +} + +void coarse_tune() { + char step = 3; + char count, max_count = 1; + char mem_cap, mem_step_cap; + int min_swr; + + for(count==L_q; count>0; count--) max_count *= 2; + max_count -= 1; + mem_cap = 0; + step_ind = step; + mem_step_cap = 3; + min_swr = SWR + SWR/20; + for(count=step; count<=max_count;) { + set_ind(count); + coarse_cap(); + if(SWR==0) return; + SWR = get_swr(); + if(SWR==0) return; + if(SWR999) count = count * 2; + else if(count>=70) {step = count/10; count += step;} + else count += step; + } + } + else break; + } + cap = mem_cap; + set_ind(ind); + set_cap(cap); + step_cap = mem_step_cap; + Delay_ms(10); + return; +} +*/ + +void coarse_cap() { + char step = 2; + char count; + int min_swr; + + cap = 0; + set_cap(cap); + SWR = get_swr(); + min_swr = SWR + SWR/20; + for(count=step; count<=127; count+=step) { + set_cap(count); + SWR = get_swr(); + if(SWR300) step = 5; else step = 3; + if(count>=30) step = count/10; + if(SWR<120) break; + } + else break; + } + set_cap(cap); + return; +} + +void coarse_tune() { + char step = 4; + char count; + char mem_cap, mem_step_cap; + int min_swr; + + mem_cap = 0; + step_ind = step; + mem_step_cap = 2; + min_swr = SWR + SWR/20; + for(count=step; count<=127; count+=step) { + set_ind(count); + coarse_cap(); + SWR = get_swr(); + if(SWR=50) step = count/10; + if(SWR<120) break; + } + else break; // ?? Brute Force (no) + } + cap = mem_cap; + set_ind(ind); + set_cap(cap); + step_cap = mem_step_cap; + Delay_ms(10); + return; +} + + + +void sharp_cap() { + char range, count, max_range, min_range, max_count = 1; + int min_swr; + range = step_cap; + // + for(count==C_q; count>0; count-- )max_count *= 2; + max_count -= 1; + max_range = cap + range; + if(max_range>max_count) max_range = max_count; + if(cap>range) min_range = cap - range; else min_range = 0; + cap = min_range; + set_cap(cap); + SWR = get_swr(); + if(SWR==0) return; + min_SWR = SWR; + for(count=min_range+1; count<=max_range; count++) { + set_cap(count); + SWR = get_swr(); + if(SWR==0) return; + if(SWR>=min_SWR) { Delay_ms(10); SWR = get_swr(); } + if(SWR>=min_SWR) { Delay_ms(10); SWR = get_swr(); } + if(SWR < min_SWR) { + min_SWR = SWR; + cap = count; + if(SWR<120) break; + } + else break; + } + set_cap(cap); + return; +} + +void sharp_ind() { + char range, count, max_range, min_range, max_count = 1; + int min_SWR; + range = step_ind; + // + for(count==L_q; count>0; count--) max_count *= 2; + max_count -= 1; + max_range = ind + range; + if(max_range>max_count) max_range = max_count; + if(ind>range) min_range = ind - range; else min_range = 0; + ind = min_range; + set_ind(ind); + SWR = get_swr(); + if(SWR==0) return; + min_SWR = SWR; + for(count=min_range+1; count<=max_range; count++) { + set_ind(count); + SWR = get_swr(); + if(SWR==0) return; + if(SWR>=min_SWR) { Delay_ms(10); SWR = get_swr(); } + if(SWR>=min_SWR) { Delay_ms(10); SWR = get_swr(); } + if(SWR < min_SWR) { + min_SWR = SWR; + ind = count; + if(SWR<120) break; + } + else break; + } + set_ind(ind); + return; +} + +/* +void tune() { + int swr_mem, ind_mem, cap_mem; + asm CLRWDT; + rready = 0; + SWR = get_swr(); + if(SWR==0) {atu_reset(); return;} + if(SWR<110) return; + atu_reset(); + Delay_ms(10); + SWR = get_swr(); + if(SWR==0) {atu_reset(); return;} + if(max_swr>110 & SWR>max_swr) return; + // + swr_mem = SWR; + coarse_tune(); + if(SWR==0) {atu_reset(); return;} + SWR = get_swr(); + if(SWR==0) {atu_reset(); return;} + if(SWR<120) return; + sharp_ind(); + if(SWR==0) {atu_reset(); return;} + SWR = get_swr(); + if(SWR==0) {atu_reset(); return;} + if(SWR<120) return; + sharp_cap(); + if(SWR==0) {atu_reset(); return;} + SWR = get_swr(); + if(SWR==0) {atu_reset(); return;} + if(SWR<120) return; + if(SWR<200 & SWR100) return; + swr_mem = SWR; + ind_mem = ind; + cap_mem = cap; + // + if(SW==1) SW = 0; else SW = 1; + atu_reset(); + set_sw(SW); + Delay_ms(10); + SWR = get_swr(); + if(SWR==0) {atu_reset(); return;} + // + coarse_tune(); + if(SWR==0) {atu_reset(); return;} + SWR = get_swr(); + if(SWR==0) {atu_reset(); return;} + if(SWR<120) return; + sharp_ind(); + if(SWR==0) {atu_reset(); return;} + SWR = get_swr(); + if(SWR==0) {atu_reset(); return;} + if(SWR<120) return; + sharp_cap(); + if(SWR==0) {atu_reset(); return;} + // + SWR = get_swr(); + if(SWR==0) {atu_reset(); return;} + if(SWR<120) return; + // + if(SWR>swr_mem) { + if(SW==1) SW = 0; else SW = 1; + set_sw(SW); + ind = ind_mem; + cap = cap_mem; + set_ind(ind); + set_cap(cap); + } + // + asm CLRWDT; + return; +} */ + + void tune() { + int swr_mem, ind_mem, cap_mem; + asm CLRWDT; + rready = 0; + SWR - get_swr(); + if(SWR<110) return; + atu_reset(); + Delay_ms(10); + SWR = get_swr(); + if(max_swr>110 & SWR>max_swr) return; + // + swr_mem = SWR; + coarse_tune(); + SWR = get_swr(); + if(SWR<120) return; + sharp_ind(); + SWR = get_swr(); + if(SWR<120) return; + sharp_cap(); + SWR = get_swr(); + if(SWR<120) return; + if(SWR<200 & SWR100) return; + swr_mem = SWR; + ind_mem = ind; + cap_mem = cap; + // + if(SW==1) SW = 0; else SW = 1; + atu_reset(); + set_sw(SW); + Delay_ms(10); + SWR = get_swr(); + // + coarse_tune(); + SWR = get_swr(); + if(SWR<120) return; + sharp_ind(); + SWR = get_swr(); + if(SWR<120) return; + sharp_cap(); + + SWR = get_swr(); + if(SWR<120) return; + // + if(SWR>swr_mem) { + if(SW==1) SW = 0; else SW = 1; + set_sw(SW); + ind = ind_mem; + cap = cap_mem; + set_ind(ind); + set_cap(cap); + } + // + asm CLRWDT; + return; +} \ No newline at end of file diff --git a/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/oled_control.asm b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/oled_control.asm new file mode 100644 index 0000000..8fce167 --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/oled_control.asm @@ -0,0 +1,1694 @@ + +_led_send: + +;oled_control.c,6 :: void led_send (char nible) { +;oled_control.c,8 :: sdata = 0; + CLRF led_send_sdata_L0+0 +;oled_control.c,9 :: RW = 0; E = 1; + CLRF oled_control_RW+0 + MOVLW 1 + MOVWF oled_control_E+0 +;oled_control.c,10 :: sdata = sdata + nible; + MOVF FARG_led_send_nible+0, 0 + MOVWF led_send_sdata_L0+0 +;oled_control.c,11 :: sdata = sdata << 4; + LSLF led_send_sdata_L0+0, 1 + LSLF led_send_sdata_L0+0, 1 + LSLF led_send_sdata_L0+0, 1 + LSLF led_send_sdata_L0+0, 1 +;oled_control.c,12 :: if(LED) sdata = sdata + 8; + MOVF oled_control_LED+0, 0 + BTFSC STATUS+0, 2 + GOTO L_led_send0 + MOVLW 8 + ADDWF led_send_sdata_L0+0, 1 +L_led_send0: +;oled_control.c,13 :: if(E) sdata = sdata + 4; + MOVF oled_control_E+0, 0 + BTFSC STATUS+0, 2 + GOTO L_led_send1 + MOVLW 4 + ADDWF led_send_sdata_L0+0, 1 +L_led_send1: +;oled_control.c,14 :: if(RW) sdata = sdata + 2; + MOVF oled_control_RW+0, 0 + BTFSC STATUS+0, 2 + GOTO L_led_send2 + MOVLW 2 + ADDWF led_send_sdata_L0+0, 1 +L_led_send2: +;oled_control.c,15 :: if(RS) sdata = sdata + 1; + MOVF oled_control_RS+0, 0 + BTFSC STATUS+0, 2 + GOTO L_led_send3 + INCF led_send_sdata_L0+0, 1 +L_led_send3: +;oled_control.c,17 :: Soft_I2C_Start(); + CALL _Soft_I2C_Start+0 +;oled_control.c,18 :: Soft_I2C_Write(led_addr); // device addres + MOVF oled_control_led_addr+0, 0 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,19 :: Soft_I2C_Write(sdata); // + MOVF led_send_sdata_L0+0, 0 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,20 :: Soft_I2C_Stop(); + CALL _Soft_I2C_Stop+0 +;oled_control.c,21 :: delay_ms(1); + MOVLW 6 + MOVWF R12 + MOVLW 48 + MOVWF R13 +L_led_send4: + DECFSZ R13, 1 + GOTO L_led_send4 + DECFSZ R12, 1 + GOTO L_led_send4 + NOP +;oled_control.c,22 :: sdata = sdata - 4; // E = 0 + MOVLW 4 + SUBWF led_send_sdata_L0+0, 1 +;oled_control.c,23 :: Soft_I2C_Start(); + CALL _Soft_I2C_Start+0 +;oled_control.c,24 :: Soft_I2C_Write(led_addr); // device addres + MOVF oled_control_led_addr+0, 0 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,25 :: Soft_I2C_Write(sdata); // + MOVF led_send_sdata_L0+0, 0 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,26 :: Soft_I2C_Stop(); + CALL _Soft_I2C_Stop+0 +;oled_control.c,27 :: delay_ms(1); + MOVLW 6 + MOVWF R12 + MOVLW 48 + MOVWF R13 +L_led_send5: + DECFSZ R13, 1 + GOTO L_led_send5 + DECFSZ R12, 1 + GOTO L_led_send5 + NOP +;oled_control.c,28 :: } +L_end_led_send: + RETURN +; end of _led_send + +_led_init: + +;oled_control.c,30 :: void led_init (void) { +;oled_control.c,31 :: shift_line = EEPROM_read(7); + MOVLW 7 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF oled_control_shift_line+0 +;oled_control.c,32 :: oled_shift = EEPROM_read(8); + MOVLW 8 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF oled_control_oled_shift+0 +;oled_control.c,33 :: if(led_type>1) oled_init(); // OLED + MOVF oled_control_led_type+0, 0 + SUBLW 1 + BTFSC STATUS+0, 0 + GOTO L_led_init6 + CALL _oled_init+0 + GOTO L_led_init7 +L_led_init6: +;oled_control.c,34 :: else if(led_type==1) { // 1602 LCD display init + MOVF oled_control_led_type+0, 0 + XORLW 1 + BTFSS STATUS+0, 2 + GOTO L_led_init8 +;oled_control.c,35 :: LED = 1; + MOVLW 1 + MOVWF oled_control_LED+0 +;oled_control.c,36 :: RS = 0; // Command + CLRF oled_control_RS+0 +;oled_control.c,38 :: led_send(3); + MOVLW 3 + MOVWF FARG_led_send_nible+0 + CALL _led_send+0 +;oled_control.c,39 :: delay_ms(5); + MOVLW 26 + MOVWF R12 + MOVLW 248 + MOVWF R13 +L_led_init9: + DECFSZ R13, 1 + GOTO L_led_init9 + DECFSZ R12, 1 + GOTO L_led_init9 + NOP +;oled_control.c,40 :: led_send(3); + MOVLW 3 + MOVWF FARG_led_send_nible+0 + CALL _led_send+0 +;oled_control.c,41 :: delay_ms(1); + MOVLW 6 + MOVWF R12 + MOVLW 48 + MOVWF R13 +L_led_init10: + DECFSZ R13, 1 + GOTO L_led_init10 + DECFSZ R12, 1 + GOTO L_led_init10 + NOP +;oled_control.c,42 :: led_send(3); + MOVLW 3 + MOVWF FARG_led_send_nible+0 + CALL _led_send+0 +;oled_control.c,43 :: led_send(2); + MOVLW 2 + MOVWF FARG_led_send_nible+0 + CALL _led_send+0 +;oled_control.c,45 :: led_send(2); + MOVLW 2 + MOVWF FARG_led_send_nible+0 + CALL _led_send+0 +;oled_control.c,46 :: led_send(8); // + MOVLW 8 + MOVWF FARG_led_send_nible+0 + CALL _led_send+0 +;oled_control.c,48 :: led_send(0); + CLRF FARG_led_send_nible+0 + CALL _led_send+0 +;oled_control.c,49 :: led_send(8); // LCD OFF + MOVLW 8 + MOVWF FARG_led_send_nible+0 + CALL _led_send+0 +;oled_control.c,51 :: led_send(0); + CLRF FARG_led_send_nible+0 + CALL _led_send+0 +;oled_control.c,52 :: led_send(1); // LCD clear + MOVLW 1 + MOVWF FARG_led_send_nible+0 + CALL _led_send+0 +;oled_control.c,53 :: delay_ms(5); + MOVLW 26 + MOVWF R12 + MOVLW 248 + MOVWF R13 +L_led_init11: + DECFSZ R13, 1 + GOTO L_led_init11 + DECFSZ R12, 1 + GOTO L_led_init11 + NOP +;oled_control.c,55 :: led_send(0); + CLRF FARG_led_send_nible+0 + CALL _led_send+0 +;oled_control.c,56 :: led_send(4 + 2); // I/D, S + MOVLW 6 + MOVWF FARG_led_send_nible+0 + CALL _led_send+0 +;oled_control.c,58 :: led_send(0); + CLRF FARG_led_send_nible+0 + CALL _led_send+0 +;oled_control.c,59 :: led_send(8 + 4 + 0 + 0); // LCD ON, Cursor, Blink Cursor + MOVLW 12 + MOVWF FARG_led_send_nible+0 + CALL _led_send+0 +;oled_control.c,60 :: } +L_led_init8: +L_led_init7: +;oled_control.c,61 :: } +L_end_led_init: + RETURN +; end of _led_init + +_dysp_on: + +;oled_control.c,63 :: void dysp_on() { +;oled_control.c,64 :: if(led_type > 1) send_command(0xAF); // display ON + MOVF oled_control_led_type+0, 0 + SUBLW 1 + BTFSC STATUS+0, 0 + GOTO L_dysp_on12 + MOVLW 175 + MOVWF FARG_send_command+0 + CALL _send_command+0 + GOTO L_dysp_on13 +L_dysp_on12: +;oled_control.c,65 :: else if(led_type==1) { + MOVF oled_control_led_type+0, 0 + XORLW 1 + BTFSS STATUS+0, 2 + GOTO L_dysp_on14 +;oled_control.c,66 :: LED = 1; + MOVLW 1 + MOVWF oled_control_LED+0 +;oled_control.c,67 :: RS = 0; + CLRF oled_control_RS+0 +;oled_control.c,68 :: led_send(0); + CLRF FARG_led_send_nible+0 + CALL _led_send+0 +;oled_control.c,69 :: led_send(0); + CLRF FARG_led_send_nible+0 + CALL _led_send+0 +;oled_control.c,70 :: } +L_dysp_on14: +L_dysp_on13: +;oled_control.c,71 :: } +L_end_dysp_on: + RETURN +; end of _dysp_on + +_dysp_off: + +;oled_control.c,73 :: void dysp_off() { +;oled_control.c,74 :: if(led_type > 1) send_command(0xAE); // display OFF + MOVF oled_control_led_type+0, 0 + SUBLW 1 + BTFSC STATUS+0, 0 + GOTO L_dysp_off15 + MOVLW 174 + MOVWF FARG_send_command+0 + CALL _send_command+0 + GOTO L_dysp_off16 +L_dysp_off15: +;oled_control.c,75 :: else if(led_type==1) { + MOVF oled_control_led_type+0, 0 + XORLW 1 + BTFSS STATUS+0, 2 + GOTO L_dysp_off17 +;oled_control.c,76 :: LED = 0; + CLRF oled_control_LED+0 +;oled_control.c,77 :: RS = 0; + CLRF oled_control_RS+0 +;oled_control.c,78 :: led_send(0); + CLRF FARG_led_send_nible+0 + CALL _led_send+0 +;oled_control.c,79 :: led_send(0); + CLRF FARG_led_send_nible+0 + CALL _led_send+0 +;oled_control.c,80 :: } +L_dysp_off17: +L_dysp_off16: +;oled_control.c,81 :: } +L_end_dysp_off: + RETURN +; end of _dysp_off + +_oled_init: + +;oled_control.c,84 :: void oled_init (void) { // OLED init +;oled_control.c,86 :: Soft_I2C_Start(); + CALL _Soft_I2C_Start+0 +;oled_control.c,87 :: Soft_I2C_Write(led_addr); // device addres + MOVF oled_control_led_addr+0, 0 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,88 :: Soft_I2C_Write(0); // 0 - continious mode, command; 64 - Co, data + CLRF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,89 :: Soft_I2C_Write (0xAE); // display OFF + MOVLW 174 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,91 :: if(led_type==2 | led_type==3) { // 128*32 OLED + MOVF oled_control_led_type+0, 0 + XORLW 2 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF oled_control_led_type+0, 0 + XORLW 3 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + IORWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_oled_init18 +;oled_control.c,92 :: Soft_I2C_Write (0xD5); // clock division + MOVLW 213 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,93 :: Soft_I2C_Write (0x80); // ratio + MOVLW 128 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,95 :: Soft_I2C_Write (0xA8); // multiplexer + MOVLW 168 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,96 :: Soft_I2C_Write (0x3f); // + MOVLW 63 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,98 :: Soft_I2C_Write (0xD3); // offset + MOVLW 211 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,99 :: if(led_type==2) Soft_I2C_Write (0 + shift_line); // column shift + MOVF oled_control_led_type+0, 0 + XORLW 2 + BTFSS STATUS+0, 2 + GOTO L_oled_init19 + MOVF oled_control_shift_line+0, 0 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 + GOTO L_oled_init20 +L_oled_init19: +;oled_control.c,100 :: else Soft_I2C_Write (31 + shift_line); // column shift + MOVF oled_control_shift_line+0, 0 + ADDLW 31 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +L_oled_init20: +;oled_control.c,102 :: Soft_I2C_Write (0x40); // set line, line = 0 + MOVLW 64 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,104 :: Soft_I2C_Write (0x8D); // charge pump + MOVLW 141 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,105 :: Soft_I2C_Write (0x14); // 0x10 - external, 0x14 - internal + MOVLW 20 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,107 :: Soft_I2C_Write (0x81); // contrast + MOVLW 129 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,108 :: Soft_I2C_Write (180); // 0-255 + MOVLW 180 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,110 :: Soft_I2C_Write (0xD9); // pre-charge + MOVLW 217 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,111 :: Soft_I2C_Write (0x22); // 0x22 - external, 0xF1 - internal + MOVLW 34 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,113 :: Soft_I2C_Write (0x20); // memory addressing mode + MOVLW 32 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,114 :: Soft_I2C_Write (0x02); // page addressing mode + MOVLW 2 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,116 :: Soft_I2C_Write (0x21); // set column range + MOVLW 33 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,117 :: Soft_I2C_Write (0); // column start + CLRF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,118 :: Soft_I2C_Write (127); // column stop + MOVLW 127 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,120 :: Soft_I2C_Write (0x2E); // stop scrolling + MOVLW 46 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,122 :: if(led_type==2) { + MOVF oled_control_led_type+0, 0 + XORLW 2 + BTFSS STATUS+0, 2 + GOTO L_oled_init21 +;oled_control.c,123 :: Soft_I2C_Write (0xA0); // segment re-map, A0 - normal, A1 - remapped + MOVLW 160 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,125 :: Soft_I2C_Write (0xC0); // scan direction, C0 - normal, C8 - remapped + MOVLW 192 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,126 :: } + GOTO L_oled_init22 +L_oled_init21: +;oled_control.c,128 :: Soft_I2C_Write (0xA1); // segment re-map, A0 - normal, A1 - remapped + MOVLW 161 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,130 :: Soft_I2C_Write (0xC8); // scan direction, C0 - normal, C8 - remapped + MOVLW 200 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,131 :: } +L_oled_init22: +;oled_control.c,133 :: Soft_I2C_Write (0xDA); // COM pins configure + MOVLW 218 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,134 :: Soft_I2C_Write (0x02); // 12 for x64 + MOVLW 2 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,136 :: Soft_I2C_Write (0xDB); // V-COM detect + MOVLW 219 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,137 :: Soft_I2C_Write (0x40); // + MOVLW 64 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,139 :: } + GOTO L_oled_init23 +L_oled_init18: +;oled_control.c,141 :: Soft_I2C_Write (0xD5); // clock division + MOVLW 213 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,142 :: Soft_I2C_Write (0x80); // ratio + MOVLW 128 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,144 :: Soft_I2C_Write (0xA8); // multiplexer + MOVLW 168 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,145 :: Soft_I2C_Write (63); // + MOVLW 63 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,147 :: Soft_I2C_Write (0xD3); // offset + MOVLW 211 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,148 :: Soft_I2C_Write (shift_line); // no offset for x64 ! + MOVF oled_control_shift_line+0, 0 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,150 :: Soft_I2C_Write (0x40); // set line, line = 0 + MOVLW 64 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,152 :: Soft_I2C_Write (0x8D); // charge pump + MOVLW 141 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,153 :: Soft_I2C_Write (0x14); // 0x10 - external, 0x14 - internal + MOVLW 20 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,155 :: Soft_I2C_Write (0x81); // contrast + MOVLW 129 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,156 :: Soft_I2C_Write (255); // 0-255 + MOVLW 255 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,158 :: Soft_I2C_Write (0xD9); // pre-charge + MOVLW 217 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,159 :: Soft_I2C_Write (0xf1); // 0x22 - external, 0xF1 - internal + MOVLW 241 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,161 :: Soft_I2C_Write (0x20); // memory addressing mode + MOVLW 32 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,162 :: Soft_I2C_Write (0x02); // page addressing mode 02 + MOVLW 2 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,164 :: Soft_I2C_Write (0x21); // set column range + MOVLW 33 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,165 :: Soft_I2C_Write (0); // column start + CLRF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,166 :: Soft_I2C_Write (127); // column stop + MOVLW 127 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,168 :: Soft_I2C_Write (0x2E); // stop scrolling + MOVLW 46 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,170 :: if(led_type==4) { + MOVF oled_control_led_type+0, 0 + XORLW 4 + BTFSS STATUS+0, 2 + GOTO L_oled_init24 +;oled_control.c,171 :: Soft_I2C_Write (0xA0); // segment re-map, A0 - normal, A1 - remapped + MOVLW 160 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,173 :: Soft_I2C_Write (0xC0); // scan direction, C0 - normal, C8 - remapped + MOVLW 192 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,174 :: } + GOTO L_oled_init25 +L_oled_init24: +;oled_control.c,176 :: Soft_I2C_Write (0xA1); // segment re-map, A0 - normal, A1 - remapped + MOVLW 161 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,178 :: Soft_I2C_Write (0xC8); // scan direction, C0 - normal, C8 - remapped + MOVLW 200 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,179 :: } +L_oled_init25: +;oled_control.c,181 :: Soft_I2C_Write (0xDA); // COM pins configure + MOVLW 218 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,182 :: Soft_I2C_Write (0x12); // 12 for x64 + MOVLW 18 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,184 :: Soft_I2C_Write (0xDB); // V-COM detect + MOVLW 219 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,185 :: Soft_I2C_Write (0x40); // + MOVLW 64 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,186 :: } +L_oled_init23: +;oled_control.c,187 :: Soft_I2C_Write (0xA4); // display entire ON + MOVLW 164 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,189 :: Soft_I2C_Write (0xA6); // 0xA6 - normal, 0xA7 - inverse + MOVLW 166 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,191 :: Soft_I2C_Stop (); + CALL _Soft_I2C_Stop+0 +;oled_control.c,195 :: Delay_ms(100); + MOVLW 3 + MOVWF R11 + MOVLW 8 + MOVWF R12 + MOVLW 119 + MOVWF R13 +L_oled_init26: + DECFSZ R13, 1 + GOTO L_oled_init26 + DECFSZ R12, 1 + GOTO L_oled_init26 + DECFSZ R11, 1 + GOTO L_oled_init26 +;oled_control.c,196 :: Soft_I2C_Start(); + CALL _Soft_I2C_Start+0 +;oled_control.c,197 :: Soft_I2C_Write(led_addr); // device addres + MOVF oled_control_led_addr+0, 0 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,198 :: Soft_I2C_Write(64); // 0 - continious mode, command; 64 - Co, data + MOVLW 64 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,200 :: if(led_type==2 | led_type==3) { // 128*32 OLED + MOVF oled_control_led_type+0, 0 + XORLW 2 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF oled_control_led_type+0, 0 + XORLW 3 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + IORWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_oled_init27 +;oled_control.c,201 :: for (r = 0; r <=3; r++) { + CLRF oled_init_r_L0+0 +L_oled_init28: + MOVF oled_init_r_L0+0, 0 + SUBLW 3 + BTFSS STATUS+0, 0 + GOTO L_oled_init29 +;oled_control.c,202 :: set_addressing (r, 0); // clear all 4 pages + MOVF oled_init_r_L0+0, 0 + MOVWF FARG_set_addressing+0 + CLRF FARG_set_addressing+0 + CALL _set_addressing+0 +;oled_control.c,203 :: for (i = 0; i < 128; i++, Soft_I2C_Write(0)); // clear one page pixels + CLRF oled_init_i_L0+0 +L_oled_init31: + MOVLW 128 + SUBWF oled_init_i_L0+0, 0 + BTFSC STATUS+0, 0 + GOTO L_oled_init32 + INCF oled_init_i_L0+0, 1 + CLRF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 + GOTO L_oled_init31 +L_oled_init32: +;oled_control.c,201 :: for (r = 0; r <=3; r++) { + INCF oled_init_r_L0+0, 1 +;oled_control.c,204 :: } + GOTO L_oled_init28 +L_oled_init29: +;oled_control.c,205 :: } + GOTO L_oled_init34 +L_oled_init27: +;oled_control.c,207 :: for (r = 0; r <=7; r++) { + CLRF oled_init_r_L0+0 +L_oled_init35: + MOVF oled_init_r_L0+0, 0 + SUBLW 7 + BTFSS STATUS+0, 0 + GOTO L_oled_init36 +;oled_control.c,208 :: set_addressing (r, 0); // clear all 8 pages + MOVF oled_init_r_L0+0, 0 + MOVWF FARG_set_addressing+0 + CLRF FARG_set_addressing+0 + CALL _set_addressing+0 +;oled_control.c,209 :: for (i = 0; i < 128; i++, Soft_I2C_Write(0x00)); // clear one page pixels + CLRF oled_init_i_L0+0 +L_oled_init38: + MOVLW 128 + SUBWF oled_init_i_L0+0, 0 + BTFSC STATUS+0, 0 + GOTO L_oled_init39 + INCF oled_init_i_L0+0, 1 + CLRF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 + GOTO L_oled_init38 +L_oled_init39: +;oled_control.c,207 :: for (r = 0; r <=7; r++) { + INCF oled_init_r_L0+0, 1 +;oled_control.c,210 :: } + GOTO L_oled_init35 +L_oled_init36: +;oled_control.c,212 :: } +L_oled_init34: +;oled_control.c,214 :: Soft_I2C_Stop (); + CALL _Soft_I2C_Stop+0 +;oled_control.c,215 :: send_command (0xAF); // display ON + MOVLW 175 + MOVWF FARG_send_command+0 + CALL _send_command+0 +;oled_control.c,218 :: } +L_end_oled_init: + RETURN +; end of _oled_init + +_send_command: + +;oled_control.c,222 :: void send_command (char oled_command) { +;oled_control.c,223 :: Soft_I2C_Start(); + CALL _Soft_I2C_Start+0 +;oled_control.c,224 :: Soft_I2C_Write(led_addr); // device addres + MOVF oled_control_led_addr+0, 0 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,225 :: Soft_I2C_Write(128); // 128 - command, 192 - data + MOVLW 128 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,226 :: Soft_I2C_Write(oled_command); + MOVF FARG_send_command_oled_command+0, 0 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,227 :: Soft_I2C_Stop(); + CALL _Soft_I2C_Stop+0 +;oled_control.c,228 :: } +L_end_send_command: + RETURN +; end of _send_command + +_set_addressing: + +;oled_control.c,230 :: void set_addressing (char pagenum, char c_start) { +;oled_control.c,232 :: c = c_start + oled_shift; + MOVF oled_control_oled_shift+0, 0 + ADDWF FARG_set_addressing_c_start+0, 0 + MOVWF set_addressing_c_L0+0 +;oled_control.c,233 :: Soft_I2C_Start(); + CALL _Soft_I2C_Start+0 +;oled_control.c,234 :: Soft_I2C_Write(led_addr); // device addres + MOVF oled_control_led_addr+0, 0 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,235 :: Soft_I2C_Write(0); // 0 - continious mode, command; 64 - Co, data + CLRF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,236 :: Soft_I2C_Write(0xB0 + pagenum); // set page number + MOVF FARG_set_addressing_pagenum+0, 0 + ADDLW 176 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,238 :: if (c <= 15) { a = c; b = 0; } + MOVF set_addressing_c_L0+0, 0 + SUBLW 15 + BTFSS STATUS+0, 0 + GOTO L_set_addressing41 + MOVF set_addressing_c_L0+0, 0 + MOVWF set_addressing_a_L0+0 + CLRF set_addressing_b_L0+0 + GOTO L_set_addressing42 +L_set_addressing41: +;oled_control.c,239 :: else { b = c / 16; a = c - b * 16; } + MOVF set_addressing_c_L0+0, 0 + MOVWF R2 + LSRF R2, 1 + LSRF R2, 1 + LSRF R2, 1 + LSRF R2, 1 + MOVF R2, 0 + MOVWF set_addressing_b_L0+0 + MOVF R2, 0 + MOVWF R0 + LSLF R0, 1 + LSLF R0, 1 + LSLF R0, 1 + LSLF R0, 1 + MOVF R0, 0 + SUBWF set_addressing_c_L0+0, 0 + MOVWF set_addressing_a_L0+0 +L_set_addressing42: +;oled_control.c,240 :: Soft_I2C_Write (a); // set lower nibble of start address + MOVF set_addressing_a_L0+0, 0 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,241 :: Soft_I2C_Write (0x10 + b); // set higher nibble of start address + MOVF set_addressing_b_L0+0, 0 + ADDLW 16 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,243 :: Soft_I2C_Start(); + CALL _Soft_I2C_Start+0 +;oled_control.c,244 :: Soft_I2C_Write(led_addr); // device addres + MOVF oled_control_led_addr+0, 0 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,245 :: Soft_I2C_Write(64); // 0 - continious mode, command; 64 - Co, data + MOVLW 64 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,246 :: } +L_end_set_addressing: + RETURN +; end of _set_addressing + +_led_wr_str: + +;oled_control.c,250 :: void led_wr_str (char col, char pos, char str[], char leng ) { // +;oled_control.c,252 :: if(led_type==4 | led_type==5) oled_wr_str(pos, col, str, leng); // 128*64 OLED display + MOVF oled_control_led_type+0, 0 + XORLW 4 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF oled_control_led_type+0, 0 + XORLW 5 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + IORWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_led_wr_str43 + MOVF FARG_led_wr_str_pos+0, 0 + MOVWF FARG_oled_wr_str+0 + MOVF FARG_led_wr_str_col+0, 0 + MOVWF FARG_oled_wr_str+0 + MOVF FARG_led_wr_str_str+0, 0 + MOVWF FARG_oled_wr_str+0 + MOVF FARG_led_wr_str_str+1, 0 + MOVWF FARG_oled_wr_str+1 + MOVF FARG_led_wr_str_leng+0, 0 + MOVWF FARG_oled_wr_str+0 + CALL _oled_wr_str+0 + GOTO L_led_wr_str44 +L_led_wr_str43: +;oled_control.c,253 :: else if(led_type==2 | led_type==3) oled_wr_str(7*pos+4, col*2, str, leng); // 128*32 OLED display + MOVF oled_control_led_type+0, 0 + XORLW 2 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF oled_control_led_type+0, 0 + XORLW 3 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + IORWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_led_wr_str45 + MOVLW 7 + MOVWF R0 + MOVF FARG_led_wr_str_pos+0, 0 + MOVWF R4 + CALL _Mul_8X8_U+0 + MOVLW 4 + ADDWF R0, 0 + MOVWF FARG_oled_wr_str+0 + MOVF FARG_led_wr_str_col+0, 0 + MOVWF FARG_oled_wr_str+0 + LSLF FARG_oled_wr_str+0, 1 + MOVF FARG_led_wr_str_str+0, 0 + MOVWF FARG_oled_wr_str+0 + MOVF FARG_led_wr_str_str+1, 0 + MOVWF FARG_oled_wr_str+1 + MOVF FARG_led_wr_str_leng+0, 0 + MOVWF FARG_oled_wr_str+0 + CALL _oled_wr_str+0 + GOTO L_led_wr_str46 +L_led_wr_str45: +;oled_control.c,256 :: RS = 0; + CLRF oled_control_RS+0 +;oled_control.c,257 :: led_send(8 + col*4); + MOVF FARG_led_wr_str_col+0, 0 + MOVWF R0 + LSLF R0, 1 + LSLF R0, 1 + MOVF R0, 0 + ADDLW 8 + MOVWF FARG_led_send_nible+0 + CALL _led_send+0 +;oled_control.c,258 :: led_send(pos); + MOVF FARG_led_wr_str_pos+0, 0 + MOVWF FARG_led_send_nible+0 + CALL _led_send+0 +;oled_control.c,260 :: RS = 1; + MOVLW 1 + MOVWF oled_control_RS+0 +;oled_control.c,261 :: for (i = 0; i < leng; i++) { // write string + CLRF led_wr_str_i_L0+0 +L_led_wr_str47: + MOVF FARG_led_wr_str_leng+0, 0 + SUBWF led_wr_str_i_L0+0, 0 + BTFSC STATUS+0, 0 + GOTO L_led_wr_str48 +;oled_control.c,263 :: led_send(str[i] >> 4); + MOVF led_wr_str_i_L0+0, 0 + ADDWF FARG_led_wr_str_str+0, 0 + MOVWF FSR0L + MOVLW 0 + ADDWFC FARG_led_wr_str_str+1, 0 + MOVWF FSR0H + MOVF INDF0+0, 0 + MOVWF R1 + MOVF R1, 0 + MOVWF FARG_led_send_nible+0 + LSRF FARG_led_send_nible+0, 1 + LSRF FARG_led_send_nible+0, 1 + LSRF FARG_led_send_nible+0, 1 + LSRF FARG_led_send_nible+0, 1 + CALL _led_send+0 +;oled_control.c,264 :: led_send(str[i]); + MOVF led_wr_str_i_L0+0, 0 + ADDWF FARG_led_wr_str_str+0, 0 + MOVWF FSR0L + MOVLW 0 + ADDWFC FARG_led_wr_str_str+1, 0 + MOVWF FSR0H + MOVF INDF0+0, 0 + MOVWF FARG_led_send_nible+0 + CALL _led_send+0 +;oled_control.c,261 :: for (i = 0; i < leng; i++) { // write string + INCF led_wr_str_i_L0+0, 1 +;oled_control.c,265 :: } + GOTO L_led_wr_str47 +L_led_wr_str48: +;oled_control.c,267 :: } +L_led_wr_str46: +L_led_wr_str44: +;oled_control.c,268 :: } +L_end_led_wr_str: + RETURN +; end of _led_wr_str + +_oled_wr_str: + +;oled_control.c,271 :: void oled_wr_str (char col, char page, char str[], char leng ) { // 128*32 or 128*64 OLED +;oled_control.c,273 :: Soft_I2C_Start(); + CALL _Soft_I2C_Start+0 +;oled_control.c,274 :: Soft_I2C_Write(led_addr); // device addres + MOVF oled_control_led_addr+0, 0 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,275 :: Soft_I2C_Write(64); // 0 - continious mode, command; 64 - Co, data + MOVLW 64 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,277 :: set_addressing (page, col); + MOVF FARG_oled_wr_str_page+0, 0 + MOVWF FARG_set_addressing_pagenum+0 + MOVF FARG_oled_wr_str_col+0, 0 + MOVWF FARG_set_addressing_c_start+0 + CALL _set_addressing+0 +;oled_control.c,279 :: for (i = 0; i < leng; i++) { // write string + CLRF oled_wr_str_i_L0+0 +L_oled_wr_str50: + MOVF FARG_oled_wr_str_leng+0, 0 + SUBWF oled_wr_str_i_L0+0, 0 + BTFSC STATUS+0, 0 + GOTO L_oled_wr_str51 +;oled_control.c,280 :: if (str[i] == 0) g = 0; else g = str[i] - 32; // NULL detection + MOVF oled_wr_str_i_L0+0, 0 + ADDWF FARG_oled_wr_str_str+0, 0 + MOVWF FSR0L + MOVLW 0 + ADDWFC FARG_oled_wr_str_str+1, 0 + MOVWF FSR0H + MOVF INDF0+0, 0 + XORLW 0 + BTFSS STATUS+0, 2 + GOTO L_oled_wr_str53 + CLRF oled_wr_str_g_L0+0 + GOTO L_oled_wr_str54 +L_oled_wr_str53: + MOVF oled_wr_str_i_L0+0, 0 + ADDWF FARG_oled_wr_str_str+0, 0 + MOVWF FSR0L + MOVLW 0 + ADDWFC FARG_oled_wr_str_str+1, 0 + MOVWF FSR0H + MOVLW 32 + SUBWF INDF0+0, 0 + MOVWF oled_wr_str_g_L0+0 +L_oled_wr_str54: +;oled_control.c,281 :: for (h = 0; h <= 4; h++) { // write letter + CLRF oled_wr_str_h_L0+0 +L_oled_wr_str55: + MOVF oled_wr_str_h_L0+0, 0 + SUBLW 4 + BTFSS STATUS+0, 0 + GOTO L_oled_wr_str56 +;oled_control.c,282 :: w1 = font5x8[g*5+h]; + MOVF oled_wr_str_g_L0+0, 0 + MOVWF R0 + MOVLW 5 + MOVWF R4 + CALL _Mul_8X8_U+0 + MOVF oled_wr_str_h_L0+0, 0 + ADDWF R0, 1 + MOVLW 0 + ADDWFC R1, 1 + MOVLW oled_control_font5x8+0 + ADDWF R0, 0 + MOVWF FSR0L + MOVLW hi_addr(oled_control_font5x8+0) + ADDWFC R1, 0 + MOVWF FSR0H + MOVF INDF0+0, 0 + MOVWF oled_wr_str_w1_L0+0 +;oled_control.c,283 :: if(page!=2 & page!=4 & page!=6) { + MOVF FARG_oled_wr_str_page+0, 0 + XORLW 2 + MOVLW 1 + BTFSC STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF FARG_oled_wr_str_page+0, 0 + XORLW 4 + MOVLW 1 + BTFSC STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R0, 0 + ANDWF R1, 1 + MOVF FARG_oled_wr_str_page+0, 0 + XORLW 6 + MOVLW 1 + BTFSC STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + ANDWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_oled_wr_str58 +;oled_control.c,284 :: w2.B7 = w1.B3; + BTFSC oled_wr_str_w1_L0+0, 3 + GOTO L__oled_wr_str104 + BCF oled_wr_str_w2_L0+0, 7 + GOTO L__oled_wr_str105 +L__oled_wr_str104: + BSF oled_wr_str_w2_L0+0, 7 +L__oled_wr_str105: +;oled_control.c,285 :: w2.B6 = w1.B3; + BTFSC oled_wr_str_w1_L0+0, 3 + GOTO L__oled_wr_str106 + BCF oled_wr_str_w2_L0+0, 6 + GOTO L__oled_wr_str107 +L__oled_wr_str106: + BSF oled_wr_str_w2_L0+0, 6 +L__oled_wr_str107: +;oled_control.c,286 :: w2.B5 = w1.B2; + BTFSC oled_wr_str_w1_L0+0, 2 + GOTO L__oled_wr_str108 + BCF oled_wr_str_w2_L0+0, 5 + GOTO L__oled_wr_str109 +L__oled_wr_str108: + BSF oled_wr_str_w2_L0+0, 5 +L__oled_wr_str109: +;oled_control.c,287 :: w2.B4 = w1.B2; + BTFSC oled_wr_str_w1_L0+0, 2 + GOTO L__oled_wr_str110 + BCF oled_wr_str_w2_L0+0, 4 + GOTO L__oled_wr_str111 +L__oled_wr_str110: + BSF oled_wr_str_w2_L0+0, 4 +L__oled_wr_str111: +;oled_control.c,288 :: w2.B3 = w1.B1; + BTFSC oled_wr_str_w1_L0+0, 1 + GOTO L__oled_wr_str112 + BCF oled_wr_str_w2_L0+0, 3 + GOTO L__oled_wr_str113 +L__oled_wr_str112: + BSF oled_wr_str_w2_L0+0, 3 +L__oled_wr_str113: +;oled_control.c,289 :: w2.B2 = w1.B1; + BTFSC oled_wr_str_w1_L0+0, 1 + GOTO L__oled_wr_str114 + BCF oled_wr_str_w2_L0+0, 2 + GOTO L__oled_wr_str115 +L__oled_wr_str114: + BSF oled_wr_str_w2_L0+0, 2 +L__oled_wr_str115: +;oled_control.c,290 :: w2.B1 = w1.B0; + BTFSC oled_wr_str_w1_L0+0, 0 + GOTO L__oled_wr_str116 + BCF oled_wr_str_w2_L0+0, 1 + GOTO L__oled_wr_str117 +L__oled_wr_str116: + BSF oled_wr_str_w2_L0+0, 1 +L__oled_wr_str117: +;oled_control.c,291 :: w2.B0 = w1.B0; + BTFSC oled_wr_str_w1_L0+0, 0 + GOTO L__oled_wr_str118 + BCF oled_wr_str_w2_L0+0, 0 + GOTO L__oled_wr_str119 +L__oled_wr_str118: + BSF oled_wr_str_w2_L0+0, 0 +L__oled_wr_str119: +;oled_control.c,292 :: } + GOTO L_oled_wr_str59 +L_oled_wr_str58: +;oled_control.c,294 :: w2.B7 = w1.B2; + BTFSC oled_wr_str_w1_L0+0, 2 + GOTO L__oled_wr_str120 + BCF oled_wr_str_w2_L0+0, 7 + GOTO L__oled_wr_str121 +L__oled_wr_str120: + BSF oled_wr_str_w2_L0+0, 7 +L__oled_wr_str121: +;oled_control.c,295 :: w2.B6 = w1.B2; + BTFSC oled_wr_str_w1_L0+0, 2 + GOTO L__oled_wr_str122 + BCF oled_wr_str_w2_L0+0, 6 + GOTO L__oled_wr_str123 +L__oled_wr_str122: + BSF oled_wr_str_w2_L0+0, 6 +L__oled_wr_str123: +;oled_control.c,296 :: w2.B5 = w1.B1; + BTFSC oled_wr_str_w1_L0+0, 1 + GOTO L__oled_wr_str124 + BCF oled_wr_str_w2_L0+0, 5 + GOTO L__oled_wr_str125 +L__oled_wr_str124: + BSF oled_wr_str_w2_L0+0, 5 +L__oled_wr_str125: +;oled_control.c,297 :: w2.B4 = w1.B1; + BTFSC oled_wr_str_w1_L0+0, 1 + GOTO L__oled_wr_str126 + BCF oled_wr_str_w2_L0+0, 4 + GOTO L__oled_wr_str127 +L__oled_wr_str126: + BSF oled_wr_str_w2_L0+0, 4 +L__oled_wr_str127: +;oled_control.c,298 :: w2.B3 = w1.B0; + BTFSC oled_wr_str_w1_L0+0, 0 + GOTO L__oled_wr_str128 + BCF oled_wr_str_w2_L0+0, 3 + GOTO L__oled_wr_str129 +L__oled_wr_str128: + BSF oled_wr_str_w2_L0+0, 3 +L__oled_wr_str129: +;oled_control.c,299 :: w2.B2 = w1.B0; + BTFSC oled_wr_str_w1_L0+0, 0 + GOTO L__oled_wr_str130 + BCF oled_wr_str_w2_L0+0, 2 + GOTO L__oled_wr_str131 +L__oled_wr_str130: + BSF oled_wr_str_w2_L0+0, 2 +L__oled_wr_str131: +;oled_control.c,300 :: w2.B1 = 0; + BCF oled_wr_str_w2_L0+0, 1 +;oled_control.c,301 :: w2.B0 = 0; + BCF oled_wr_str_w2_L0+0, 0 +;oled_control.c,302 :: } +L_oled_wr_str59: +;oled_control.c,303 :: Soft_I2C_Write(w2); + MOVF oled_wr_str_w2_L0+0, 0 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,304 :: if(led_type==4 | led_type==5) Soft_I2C_Write(w2); // 128*64 + MOVF oled_control_led_type+0, 0 + XORLW 4 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF oled_control_led_type+0, 0 + XORLW 5 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + IORWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_oled_wr_str60 + MOVF oled_wr_str_w2_L0+0, 0 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +L_oled_wr_str60: +;oled_control.c,281 :: for (h = 0; h <= 4; h++) { // write letter + INCF oled_wr_str_h_L0+0, 1 +;oled_control.c,305 :: } + GOTO L_oled_wr_str55 +L_oled_wr_str56: +;oled_control.c,306 :: Soft_I2C_Write (0); + CLRF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,307 :: Soft_I2C_Write (0); + CLRF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,279 :: for (i = 0; i < leng; i++) { // write string + INCF oled_wr_str_i_L0+0, 1 +;oled_control.c,308 :: } + GOTO L_oled_wr_str50 +L_oled_wr_str51: +;oled_control.c,309 :: set_addressing (page+1, col); + INCF FARG_oled_wr_str_page+0, 0 + MOVWF FARG_set_addressing_pagenum+0 + MOVF FARG_oled_wr_str_col+0, 0 + MOVWF FARG_set_addressing_c_start+0 + CALL _set_addressing+0 +;oled_control.c,311 :: for (i = 0; i < leng; i++) { // write string + CLRF oled_wr_str_i_L0+0 +L_oled_wr_str61: + MOVF FARG_oled_wr_str_leng+0, 0 + SUBWF oled_wr_str_i_L0+0, 0 + BTFSC STATUS+0, 0 + GOTO L_oled_wr_str62 +;oled_control.c,312 :: if (str[i] == 0) g = 0; else g = str[i] - 32; // NULL detection + MOVF oled_wr_str_i_L0+0, 0 + ADDWF FARG_oled_wr_str_str+0, 0 + MOVWF FSR0L + MOVLW 0 + ADDWFC FARG_oled_wr_str_str+1, 0 + MOVWF FSR0H + MOVF INDF0+0, 0 + XORLW 0 + BTFSS STATUS+0, 2 + GOTO L_oled_wr_str64 + CLRF oled_wr_str_g_L0+0 + GOTO L_oled_wr_str65 +L_oled_wr_str64: + MOVF oled_wr_str_i_L0+0, 0 + ADDWF FARG_oled_wr_str_str+0, 0 + MOVWF FSR0L + MOVLW 0 + ADDWFC FARG_oled_wr_str_str+1, 0 + MOVWF FSR0H + MOVLW 32 + SUBWF INDF0+0, 0 + MOVWF oled_wr_str_g_L0+0 +L_oled_wr_str65: +;oled_control.c,313 :: for (h = 0; h <= 4; h++) { // write letter + CLRF oled_wr_str_h_L0+0 +L_oled_wr_str66: + MOVF oled_wr_str_h_L0+0, 0 + SUBLW 4 + BTFSS STATUS+0, 0 + GOTO L_oled_wr_str67 +;oled_control.c,314 :: w1 = font5x8[g*5+h]; + MOVF oled_wr_str_g_L0+0, 0 + MOVWF R0 + MOVLW 5 + MOVWF R4 + CALL _Mul_8X8_U+0 + MOVF oled_wr_str_h_L0+0, 0 + ADDWF R0, 1 + MOVLW 0 + ADDWFC R1, 1 + MOVLW oled_control_font5x8+0 + ADDWF R0, 0 + MOVWF FSR0L + MOVLW hi_addr(oled_control_font5x8+0) + ADDWFC R1, 0 + MOVWF FSR0H + MOVF INDF0+0, 0 + MOVWF oled_wr_str_w1_L0+0 +;oled_control.c,315 :: if(page!=2 & page!=4 & page!=6) { + MOVF FARG_oled_wr_str_page+0, 0 + XORLW 2 + MOVLW 1 + BTFSC STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF FARG_oled_wr_str_page+0, 0 + XORLW 4 + MOVLW 1 + BTFSC STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R0, 0 + ANDWF R1, 1 + MOVF FARG_oled_wr_str_page+0, 0 + XORLW 6 + MOVLW 1 + BTFSC STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + ANDWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_oled_wr_str69 +;oled_control.c,316 :: w2.B7 = w1.B7; + BTFSC oled_wr_str_w1_L0+0, 7 + GOTO L__oled_wr_str132 + BCF oled_wr_str_w2_L0+0, 7 + GOTO L__oled_wr_str133 +L__oled_wr_str132: + BSF oled_wr_str_w2_L0+0, 7 +L__oled_wr_str133: +;oled_control.c,317 :: w2.B6 = w1.B7; + BTFSC oled_wr_str_w1_L0+0, 7 + GOTO L__oled_wr_str134 + BCF oled_wr_str_w2_L0+0, 6 + GOTO L__oled_wr_str135 +L__oled_wr_str134: + BSF oled_wr_str_w2_L0+0, 6 +L__oled_wr_str135: +;oled_control.c,318 :: w2.B5 = w1.B6; + BTFSC oled_wr_str_w1_L0+0, 6 + GOTO L__oled_wr_str136 + BCF oled_wr_str_w2_L0+0, 5 + GOTO L__oled_wr_str137 +L__oled_wr_str136: + BSF oled_wr_str_w2_L0+0, 5 +L__oled_wr_str137: +;oled_control.c,319 :: w2.B4 = w1.B6; + BTFSC oled_wr_str_w1_L0+0, 6 + GOTO L__oled_wr_str138 + BCF oled_wr_str_w2_L0+0, 4 + GOTO L__oled_wr_str139 +L__oled_wr_str138: + BSF oled_wr_str_w2_L0+0, 4 +L__oled_wr_str139: +;oled_control.c,320 :: w2.B3 = w1.B5; + BTFSC oled_wr_str_w1_L0+0, 5 + GOTO L__oled_wr_str140 + BCF oled_wr_str_w2_L0+0, 3 + GOTO L__oled_wr_str141 +L__oled_wr_str140: + BSF oled_wr_str_w2_L0+0, 3 +L__oled_wr_str141: +;oled_control.c,321 :: w2.B2 = w1.B5; + BTFSC oled_wr_str_w1_L0+0, 5 + GOTO L__oled_wr_str142 + BCF oled_wr_str_w2_L0+0, 2 + GOTO L__oled_wr_str143 +L__oled_wr_str142: + BSF oled_wr_str_w2_L0+0, 2 +L__oled_wr_str143: +;oled_control.c,322 :: w2.B1 = w1.B4; + BTFSC oled_wr_str_w1_L0+0, 4 + GOTO L__oled_wr_str144 + BCF oled_wr_str_w2_L0+0, 1 + GOTO L__oled_wr_str145 +L__oled_wr_str144: + BSF oled_wr_str_w2_L0+0, 1 +L__oled_wr_str145: +;oled_control.c,323 :: w2.B0 = w1.B4; } + BTFSC oled_wr_str_w1_L0+0, 4 + GOTO L__oled_wr_str146 + BCF oled_wr_str_w2_L0+0, 0 + GOTO L__oled_wr_str147 +L__oled_wr_str146: + BSF oled_wr_str_w2_L0+0, 0 +L__oled_wr_str147: + GOTO L_oled_wr_str70 +L_oled_wr_str69: +;oled_control.c,325 :: w2.B7 = w1.B6; + BTFSC oled_wr_str_w1_L0+0, 6 + GOTO L__oled_wr_str148 + BCF oled_wr_str_w2_L0+0, 7 + GOTO L__oled_wr_str149 +L__oled_wr_str148: + BSF oled_wr_str_w2_L0+0, 7 +L__oled_wr_str149: +;oled_control.c,326 :: w2.B6 = w1.B6; + BTFSC oled_wr_str_w1_L0+0, 6 + GOTO L__oled_wr_str150 + BCF oled_wr_str_w2_L0+0, 6 + GOTO L__oled_wr_str151 +L__oled_wr_str150: + BSF oled_wr_str_w2_L0+0, 6 +L__oled_wr_str151: +;oled_control.c,327 :: w2.B5 = w1.B5; + BTFSC oled_wr_str_w1_L0+0, 5 + GOTO L__oled_wr_str152 + BCF oled_wr_str_w2_L0+0, 5 + GOTO L__oled_wr_str153 +L__oled_wr_str152: + BSF oled_wr_str_w2_L0+0, 5 +L__oled_wr_str153: +;oled_control.c,328 :: w2.B4 = w1.B5; + BTFSC oled_wr_str_w1_L0+0, 5 + GOTO L__oled_wr_str154 + BCF oled_wr_str_w2_L0+0, 4 + GOTO L__oled_wr_str155 +L__oled_wr_str154: + BSF oled_wr_str_w2_L0+0, 4 +L__oled_wr_str155: +;oled_control.c,329 :: w2.B3 = w1.B4; + BTFSC oled_wr_str_w1_L0+0, 4 + GOTO L__oled_wr_str156 + BCF oled_wr_str_w2_L0+0, 3 + GOTO L__oled_wr_str157 +L__oled_wr_str156: + BSF oled_wr_str_w2_L0+0, 3 +L__oled_wr_str157: +;oled_control.c,330 :: w2.B2 = w1.B4; + BTFSC oled_wr_str_w1_L0+0, 4 + GOTO L__oled_wr_str158 + BCF oled_wr_str_w2_L0+0, 2 + GOTO L__oled_wr_str159 +L__oled_wr_str158: + BSF oled_wr_str_w2_L0+0, 2 +L__oled_wr_str159: +;oled_control.c,331 :: w2.B1 = w1.B3; + BTFSC oled_wr_str_w1_L0+0, 3 + GOTO L__oled_wr_str160 + BCF oled_wr_str_w2_L0+0, 1 + GOTO L__oled_wr_str161 +L__oled_wr_str160: + BSF oled_wr_str_w2_L0+0, 1 +L__oled_wr_str161: +;oled_control.c,332 :: w2.B0 = w1.B3; + BTFSC oled_wr_str_w1_L0+0, 3 + GOTO L__oled_wr_str162 + BCF oled_wr_str_w2_L0+0, 0 + GOTO L__oled_wr_str163 +L__oled_wr_str162: + BSF oled_wr_str_w2_L0+0, 0 +L__oled_wr_str163: +;oled_control.c,333 :: } +L_oled_wr_str70: +;oled_control.c,334 :: Soft_I2C_Write(w2); + MOVF oled_wr_str_w2_L0+0, 0 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,335 :: if(led_type==4 | led_type==5) Soft_I2C_Write(w2); // 128*64 + MOVF oled_control_led_type+0, 0 + XORLW 4 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R1 + MOVF oled_control_led_type+0, 0 + XORLW 5 + MOVLW 1 + BTFSS STATUS+0, 2 + MOVLW 0 + MOVWF R0 + MOVF R1, 0 + IORWF R0, 1 + BTFSC STATUS+0, 2 + GOTO L_oled_wr_str71 + MOVF oled_wr_str_w2_L0+0, 0 + MOVWF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +L_oled_wr_str71: +;oled_control.c,313 :: for (h = 0; h <= 4; h++) { // write letter + INCF oled_wr_str_h_L0+0, 1 +;oled_control.c,336 :: } + GOTO L_oled_wr_str66 +L_oled_wr_str67: +;oled_control.c,337 :: Soft_I2C_Write (0); + CLRF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,338 :: Soft_I2C_Write (0); + CLRF FARG_Soft_I2C_Write+0 + CALL _Soft_I2C_Write+0 +;oled_control.c,311 :: for (i = 0; i < leng; i++) { // write string + INCF oled_wr_str_i_L0+0, 1 +;oled_control.c,340 :: } + GOTO L_oled_wr_str61 +L_oled_wr_str62: +;oled_control.c,341 :: Soft_I2C_Stop (); + CALL _Soft_I2C_Stop+0 +;oled_control.c,342 :: } +L_end_oled_wr_str: + RETURN +; end of _oled_wr_str + +_Soft_I2C_Init: + +;oled_control.c,346 :: void Soft_I2C_Init () { +;oled_control.c,347 :: led_addr = EEPROM_read(0); // 4E,7E for 1602 or 78, 7A for OLED + CLRF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF oled_control_led_addr+0 +;oled_control.c,348 :: led_type = EEPROM_read(1); + MOVLW 1 + MOVWF FARG_EEPROM_Read_Address+0 + CALL _EEPROM_Read+0 + MOVF R0, 0 + MOVWF oled_control_led_type+0 +;oled_control.c,349 :: if(led_type==0) { + MOVF R0, 0 + XORLW 0 + BTFSS STATUS+0, 2 + GOTO L_Soft_I2C_Init72 +;oled_control.c,350 :: Soft_I2C_Scl_Direction = 0; + BCF TRISB6_bit+0, BitPos(TRISB6_bit+0) +;oled_control.c,351 :: Soft_I2C_Sda_Direction = 0; + BCF TRISB7_bit+0, BitPos(TRISB7_bit+0) +;oled_control.c,352 :: LATB.B6 = 1; + BSF LATB+0, 6 +;oled_control.c,353 :: LATB.B7 = 1; + BSF LATB+0, 7 +;oled_control.c,354 :: } + GOTO L_Soft_I2C_Init73 +L_Soft_I2C_Init72: +;oled_control.c,356 :: Soft_I2C_Scl_Direction = 1; + BSF TRISB6_bit+0, BitPos(TRISB6_bit+0) +;oled_control.c,357 :: Soft_I2C_Sda_Direction = 1; + BSF TRISB7_bit+0, BitPos(TRISB7_bit+0) +;oled_control.c,358 :: Soft_I2C_Scl = 0; + BCF LATB6_bit+0, BitPos(LATB6_bit+0) +;oled_control.c,359 :: Soft_I2C_Sda = 0; + BCF LATB7_bit+0, BitPos(LATB7_bit+0) +;oled_control.c,360 :: } +L_Soft_I2C_Init73: +;oled_control.c,361 :: } +L_end_Soft_I2C_Init: + RETURN +; end of _Soft_I2C_Init + +_Soft_I2C_Start: + +;oled_control.c,363 :: void Soft_I2C_Start () { +;oled_control.c,364 :: if(led_type!=0) { + MOVF oled_control_led_type+0, 0 + XORLW 0 + BTFSC STATUS+0, 2 + GOTO L_Soft_I2C_Start74 +;oled_control.c,365 :: Soft_I2C_Scl_Direction = 1; + BSF TRISB6_bit+0, BitPos(TRISB6_bit+0) +;oled_control.c,366 :: Delay_us(5); + MOVLW 6 + MOVWF R13 +L_Soft_I2C_Start75: + DECFSZ R13, 1 + GOTO L_Soft_I2C_Start75 + NOP +;oled_control.c,367 :: Soft_I2C_Sda_Direction = 1; + BSF TRISB7_bit+0, BitPos(TRISB7_bit+0) +;oled_control.c,368 :: Delay_us(5); + MOVLW 6 + MOVWF R13 +L_Soft_I2C_Start76: + DECFSZ R13, 1 + GOTO L_Soft_I2C_Start76 + NOP +;oled_control.c,369 :: Soft_I2C_Sda_Direction = 0; + BCF TRISB7_bit+0, BitPos(TRISB7_bit+0) +;oled_control.c,370 :: Delay_us(5); + MOVLW 6 + MOVWF R13 +L_Soft_I2C_Start77: + DECFSZ R13, 1 + GOTO L_Soft_I2C_Start77 + NOP +;oled_control.c,371 :: Soft_I2C_Scl_Direction = 0; + BCF TRISB6_bit+0, BitPos(TRISB6_bit+0) +;oled_control.c,372 :: Delay_us(5); + MOVLW 6 + MOVWF R13 +L_Soft_I2C_Start78: + DECFSZ R13, 1 + GOTO L_Soft_I2C_Start78 + NOP +;oled_control.c,373 :: } +L_Soft_I2C_Start74: +;oled_control.c,374 :: } +L_end_Soft_I2C_Start: + RETURN +; end of _Soft_I2C_Start + +_Soft_I2C_Write: + +;oled_control.c,376 :: void Soft_I2C_Write (char d) { +;oled_control.c,378 :: if(led_type!=0) { + MOVF oled_control_led_type+0, 0 + XORLW 0 + BTFSC STATUS+0, 2 + GOTO L_Soft_I2C_Write79 +;oled_control.c,379 :: for(i=0; i<=7; i++) { + CLRF R1+0 +L_Soft_I2C_Write80: + MOVF R1+0, 0 + SUBLW 7 + BTFSS STATUS+0, 0 + GOTO L_Soft_I2C_Write81 +;oled_control.c,380 :: if(d.B7==0) Soft_I2C_Sda_Direction = 0; else Soft_I2C_Sda_Direction = 1; + BTFSC FARG_Soft_I2C_Write_d+0, 7 + GOTO L_Soft_I2C_Write83 + BCF TRISB7_bit+0, BitPos(TRISB7_bit+0) + GOTO L_Soft_I2C_Write84 +L_Soft_I2C_Write83: + BSF TRISB7_bit+0, BitPos(TRISB7_bit+0) +L_Soft_I2C_Write84: +;oled_control.c,381 :: Delay_us(5); + MOVLW 6 + MOVWF R13 +L_Soft_I2C_Write85: + DECFSZ R13, 1 + GOTO L_Soft_I2C_Write85 + NOP +;oled_control.c,382 :: Soft_I2C_Scl_Direction = 1; + BSF TRISB6_bit+0, BitPos(TRISB6_bit+0) +;oled_control.c,383 :: Delay_us(5); + MOVLW 6 + MOVWF R13 +L_Soft_I2C_Write86: + DECFSZ R13, 1 + GOTO L_Soft_I2C_Write86 + NOP +;oled_control.c,384 :: Soft_I2C_Scl_Direction = 0; + BCF TRISB6_bit+0, BitPos(TRISB6_bit+0) +;oled_control.c,385 :: Delay_us(5); + MOVLW 6 + MOVWF R13 +L_Soft_I2C_Write87: + DECFSZ R13, 1 + GOTO L_Soft_I2C_Write87 + NOP +;oled_control.c,386 :: d = d << 1; + LSLF FARG_Soft_I2C_Write_d+0, 1 +;oled_control.c,379 :: for(i=0; i<=7; i++) { + INCF R1+0, 1 +;oled_control.c,387 :: } + GOTO L_Soft_I2C_Write80 +L_Soft_I2C_Write81: +;oled_control.c,389 :: Soft_I2C_Sda_Direction = 1; //ACK + BSF TRISB7_bit+0, BitPos(TRISB7_bit+0) +;oled_control.c,390 :: Delay_us(5); + MOVLW 6 + MOVWF R13 +L_Soft_I2C_Write88: + DECFSZ R13, 1 + GOTO L_Soft_I2C_Write88 + NOP +;oled_control.c,391 :: Soft_I2C_Scl_Direction = 1; + BSF TRISB6_bit+0, BitPos(TRISB6_bit+0) +;oled_control.c,392 :: Delay_us(5); + MOVLW 6 + MOVWF R13 +L_Soft_I2C_Write89: + DECFSZ R13, 1 + GOTO L_Soft_I2C_Write89 + NOP +;oled_control.c,393 :: Soft_I2C_Scl_Direction = 0; + BCF TRISB6_bit+0, BitPos(TRISB6_bit+0) +;oled_control.c,394 :: Delay_us(5); + MOVLW 6 + MOVWF R13 +L_Soft_I2C_Write90: + DECFSZ R13, 1 + GOTO L_Soft_I2C_Write90 + NOP +;oled_control.c,395 :: } +L_Soft_I2C_Write79: +;oled_control.c,396 :: } +L_end_Soft_I2C_Write: + RETURN +; end of _Soft_I2C_Write + +_Soft_I2C_Stop: + +;oled_control.c,398 :: void Soft_I2C_Stop () { +;oled_control.c,399 :: if(led_type!=0) { + MOVF oled_control_led_type+0, 0 + XORLW 0 + BTFSC STATUS+0, 2 + GOTO L_Soft_I2C_Stop91 +;oled_control.c,400 :: Soft_I2C_Sda_Direction = 0; + BCF TRISB7_bit+0, BitPos(TRISB7_bit+0) +;oled_control.c,401 :: Delay_us(5); + MOVLW 6 + MOVWF R13 +L_Soft_I2C_Stop92: + DECFSZ R13, 1 + GOTO L_Soft_I2C_Stop92 + NOP +;oled_control.c,402 :: Soft_I2C_Scl_Direction = 1; + BSF TRISB6_bit+0, BitPos(TRISB6_bit+0) +;oled_control.c,403 :: Delay_us(5); + MOVLW 6 + MOVWF R13 +L_Soft_I2C_Stop93: + DECFSZ R13, 1 + GOTO L_Soft_I2C_Stop93 + NOP +;oled_control.c,404 :: Soft_I2C_Sda_Direction = 1; + BSF TRISB7_bit+0, BitPos(TRISB7_bit+0) +;oled_control.c,405 :: Delay_us(5); + MOVLW 6 + MOVWF R13 +L_Soft_I2C_Stop94: + DECFSZ R13, 1 + GOTO L_Soft_I2C_Stop94 + NOP +;oled_control.c,406 :: } +L_Soft_I2C_Stop91: +;oled_control.c,407 :: } +L_end_Soft_I2C_Stop: + RETURN +; end of _Soft_I2C_Stop diff --git a/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/oled_control.c b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/oled_control.c new file mode 100644 index 0000000..6a629bb --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/oled_control.c @@ -0,0 +1,407 @@ + +#include "oled_control.h" +#include "font5x8.h" +// + +void led_send (char nible) { + char sdata; + sdata = 0; + RW = 0; E = 1; + sdata = sdata + nible; + sdata = sdata << 4; + if(LED) sdata = sdata + 8; + if(E) sdata = sdata + 4; + if(RW) sdata = sdata + 2; + if(RS) sdata = sdata + 1; + // + Soft_I2C_Start(); + Soft_I2C_Write(led_addr); // device addres + Soft_I2C_Write(sdata); // + Soft_I2C_Stop(); + delay_ms(1); + sdata = sdata - 4; // E = 0 + Soft_I2C_Start(); + Soft_I2C_Write(led_addr); // device addres + Soft_I2C_Write(sdata); // + Soft_I2C_Stop(); + delay_ms(1); +} +// +void led_init (void) { + shift_line = EEPROM_read(7); + oled_shift = EEPROM_read(8); + if(led_type>1) oled_init(); // OLED + else if(led_type==1) { // 1602 LCD display init + LED = 1; + RS = 0; // Command + // + led_send(3); + delay_ms(5); + led_send(3); + delay_ms(1); + led_send(3); + led_send(2); + // + led_send(2); + led_send(8); // + // + led_send(0); + led_send(8); // LCD OFF + // + led_send(0); + led_send(1); // LCD clear + delay_ms(5); + // + led_send(0); + led_send(4 + 2); // I/D, S + // + led_send(0); + led_send(8 + 4 + 0 + 0); // LCD ON, Cursor, Blink Cursor + } +} + +void dysp_on() { + if(led_type > 1) send_command(0xAF); // display ON + else if(led_type==1) { + LED = 1; + RS = 0; + led_send(0); + led_send(0); + } +} + +void dysp_off() { + if(led_type > 1) send_command(0xAE); // display OFF + else if(led_type==1) { + LED = 0; + RS = 0; + led_send(0); + led_send(0); + } +} + + + void oled_init (void) { // OLED init + char i, r; + Soft_I2C_Start(); + Soft_I2C_Write(led_addr); // device addres + Soft_I2C_Write(0); // 0 - continious mode, command; 64 - Co, data + Soft_I2C_Write (0xAE); // display OFF + // + if(led_type==2 | led_type==3) { // 128*32 OLED + Soft_I2C_Write (0xD5); // clock division + Soft_I2C_Write (0x80); // ratio + // + Soft_I2C_Write (0xA8); // multiplexer + Soft_I2C_Write (0x3f); // + // + Soft_I2C_Write (0xD3); // offset + if(led_type==2) Soft_I2C_Write (0 + shift_line); // column shift + else Soft_I2C_Write (31 + shift_line); // column shift + // + Soft_I2C_Write (0x40); // set line, line = 0 + // + Soft_I2C_Write (0x8D); // charge pump + Soft_I2C_Write (0x14); // 0x10 - external, 0x14 - internal + // + Soft_I2C_Write (0x81); // contrast + Soft_I2C_Write (180); // 0-255 + // + Soft_I2C_Write (0xD9); // pre-charge + Soft_I2C_Write (0x22); // 0x22 - external, 0xF1 - internal + // + Soft_I2C_Write (0x20); // memory addressing mode + Soft_I2C_Write (0x02); // page addressing mode + // + Soft_I2C_Write (0x21); // set column range + Soft_I2C_Write (0); // column start + Soft_I2C_Write (127); // column stop + // + Soft_I2C_Write (0x2E); // stop scrolling + // + if(led_type==2) { + Soft_I2C_Write (0xA0); // segment re-map, A0 - normal, A1 - remapped + // + Soft_I2C_Write (0xC0); // scan direction, C0 - normal, C8 - remapped + } + else { + Soft_I2C_Write (0xA1); // segment re-map, A0 - normal, A1 - remapped + // + Soft_I2C_Write (0xC8); // scan direction, C0 - normal, C8 - remapped + } + // + Soft_I2C_Write (0xDA); // COM pins configure + Soft_I2C_Write (0x02); // 12 for x64 + // + Soft_I2C_Write (0xDB); // V-COM detect + Soft_I2C_Write (0x40); // + // + } + else { // 128*64 OLED + Soft_I2C_Write (0xD5); // clock division + Soft_I2C_Write (0x80); // ratio + // + Soft_I2C_Write (0xA8); // multiplexer + Soft_I2C_Write (63); // + // + Soft_I2C_Write (0xD3); // offset + Soft_I2C_Write (shift_line); // no offset for x64 ! + // + Soft_I2C_Write (0x40); // set line, line = 0 + // + Soft_I2C_Write (0x8D); // charge pump + Soft_I2C_Write (0x14); // 0x10 - external, 0x14 - internal + // + Soft_I2C_Write (0x81); // contrast + Soft_I2C_Write (255); // 0-255 + // + Soft_I2C_Write (0xD9); // pre-charge + Soft_I2C_Write (0xf1); // 0x22 - external, 0xF1 - internal + // + Soft_I2C_Write (0x20); // memory addressing mode + Soft_I2C_Write (0x02); // page addressing mode 02 + // + Soft_I2C_Write (0x21); // set column range + Soft_I2C_Write (0); // column start + Soft_I2C_Write (127); // column stop + // + Soft_I2C_Write (0x2E); // stop scrolling + // + if(led_type==4) { + Soft_I2C_Write (0xA0); // segment re-map, A0 - normal, A1 - remapped + // + Soft_I2C_Write (0xC0); // scan direction, C0 - normal, C8 - remapped + } + else { + Soft_I2C_Write (0xA1); // segment re-map, A0 - normal, A1 - remapped + // + Soft_I2C_Write (0xC8); // scan direction, C0 - normal, C8 - remapped + } + // + Soft_I2C_Write (0xDA); // COM pins configure + Soft_I2C_Write (0x12); // 12 for x64 + // + Soft_I2C_Write (0xDB); // V-COM detect + Soft_I2C_Write (0x40); // + } + Soft_I2C_Write (0xA4); // display entire ON + // + Soft_I2C_Write (0xA6); // 0xA6 - normal, 0xA7 - inverse + // + Soft_I2C_Stop (); + // + // ********clear OLED*********** + // + Delay_ms(100); + Soft_I2C_Start(); + Soft_I2C_Write(led_addr); // device addres + Soft_I2C_Write(64); // 0 - continious mode, command; 64 - Co, data + // + if(led_type==2 | led_type==3) { // 128*32 OLED + for (r = 0; r <=3; r++) { + set_addressing (r, 0); // clear all 4 pages + for (i = 0; i < 128; i++, Soft_I2C_Write(0)); // clear one page pixels + } + } + else { // 128*64 OLED + for (r = 0; r <=7; r++) { + set_addressing (r, 0); // clear all 8 pages + for (i = 0; i < 128; i++, Soft_I2C_Write(0x00)); // clear one page pixels + } + + } + // + Soft_I2C_Stop (); + send_command (0xAF); // display ON + // + +} + + + +void send_command (char oled_command) { + Soft_I2C_Start(); + Soft_I2C_Write(led_addr); // device addres + Soft_I2C_Write(128); // 128 - command, 192 - data + Soft_I2C_Write(oled_command); + Soft_I2C_Stop(); +} + +void set_addressing (char pagenum, char c_start) { + char a, b, c; + c = c_start + oled_shift; + Soft_I2C_Start(); + Soft_I2C_Write(led_addr); // device addres + Soft_I2C_Write(0); // 0 - continious mode, command; 64 - Co, data + Soft_I2C_Write(0xB0 + pagenum); // set page number + // + if (c <= 15) { a = c; b = 0; } + else { b = c / 16; a = c - b * 16; } + Soft_I2C_Write (a); // set lower nibble of start address + Soft_I2C_Write (0x10 + b); // set higher nibble of start address + // + Soft_I2C_Start(); + Soft_I2C_Write(led_addr); // device addres + Soft_I2C_Write(64); // 0 - continious mode, command; 64 - Co, data + } +// + + +void led_wr_str (char col, char pos, char str[], char leng ) { // + char i; + if(led_type==4 | led_type==5) oled_wr_str(pos, col, str, leng); // 128*64 OLED display + else if(led_type==2 | led_type==3) oled_wr_str(7*pos+4, col*2, str, leng); // 128*32 OLED display + else { // 1602 LCD + // Set address + RS = 0; + led_send(8 + col*4); + led_send(pos); + // + RS = 1; + for (i = 0; i < leng; i++) { // write string + // write letter + led_send(str[i] >> 4); + led_send(str[i]); + } + + } +} +// + +void oled_wr_str (char col, char page, char str[], char leng ) { // 128*32 or 128*64 OLED + char i, h, g, w1, w2; + Soft_I2C_Start(); + Soft_I2C_Write(led_addr); // device addres + Soft_I2C_Write(64); // 0 - continious mode, command; 64 - Co, data + // + set_addressing (page, col); + // + for (i = 0; i < leng; i++) { // write string + if (str[i] == 0) g = 0; else g = str[i] - 32; // NULL detection + for (h = 0; h <= 4; h++) { // write letter + w1 = font5x8[g*5+h]; + if(page!=2 & page!=4 & page!=6) { + w2.B7 = w1.B3; + w2.B6 = w1.B3; + w2.B5 = w1.B2; + w2.B4 = w1.B2; + w2.B3 = w1.B1; + w2.B2 = w1.B1; + w2.B1 = w1.B0; + w2.B0 = w1.B0; + } + else { + w2.B7 = w1.B2; + w2.B6 = w1.B2; + w2.B5 = w1.B1; + w2.B4 = w1.B1; + w2.B3 = w1.B0; + w2.B2 = w1.B0; + w2.B1 = 0; + w2.B0 = 0; + } + Soft_I2C_Write(w2); + if(led_type==4 | led_type==5) Soft_I2C_Write(w2); // 128*64 + } + Soft_I2C_Write (0); + Soft_I2C_Write (0); + } + set_addressing (page+1, col); + // + for (i = 0; i < leng; i++) { // write string + if (str[i] == 0) g = 0; else g = str[i] - 32; // NULL detection + for (h = 0; h <= 4; h++) { // write letter + w1 = font5x8[g*5+h]; + if(page!=2 & page!=4 & page!=6) { + w2.B7 = w1.B7; + w2.B6 = w1.B7; + w2.B5 = w1.B6; + w2.B4 = w1.B6; + w2.B3 = w1.B5; + w2.B2 = w1.B5; + w2.B1 = w1.B4; + w2.B0 = w1.B4; } + else { + w2.B7 = w1.B6; + w2.B6 = w1.B6; + w2.B5 = w1.B5; + w2.B4 = w1.B5; + w2.B3 = w1.B4; + w2.B2 = w1.B4; + w2.B1 = w1.B3; + w2.B0 = w1.B3; + } + Soft_I2C_Write(w2); + if(led_type==4 | led_type==5) Soft_I2C_Write(w2); // 128*64 + } + Soft_I2C_Write (0); + Soft_I2C_Write (0); + //if(led_type==2 | led_type==3) Soft_I2C_Write (0); // 128*32 + } + Soft_I2C_Stop (); +} + + + + void Soft_I2C_Init () { + led_addr = EEPROM_read(0); // 4E,7E for 1602 or 78, 7A for OLED + led_type = EEPROM_read(1); + if(led_type==0) { + Soft_I2C_Scl_Direction = 0; + Soft_I2C_Sda_Direction = 0; + LATB.B6 = 1; + LATB.B7 = 1; + } + else { + Soft_I2C_Scl_Direction = 1; + Soft_I2C_Sda_Direction = 1; + Soft_I2C_Scl = 0; + Soft_I2C_Sda = 0; + } + } + + void Soft_I2C_Start () { + if(led_type!=0) { + Soft_I2C_Scl_Direction = 1; + Delay_us(5); + Soft_I2C_Sda_Direction = 1; + Delay_us(5); + Soft_I2C_Sda_Direction = 0; + Delay_us(5); + Soft_I2C_Scl_Direction = 0; + Delay_us(5); + } + } + +void Soft_I2C_Write (char d) { + char i; + if(led_type!=0) { + for(i=0; i<=7; i++) { + if(d.B7==0) Soft_I2C_Sda_Direction = 0; else Soft_I2C_Sda_Direction = 1; + Delay_us(5); + Soft_I2C_Scl_Direction = 1; + Delay_us(5); + Soft_I2C_Scl_Direction = 0; + Delay_us(5); + d = d << 1; + } + // + Soft_I2C_Sda_Direction = 1; //ACK + Delay_us(5); + Soft_I2C_Scl_Direction = 1; + Delay_us(5); + Soft_I2C_Scl_Direction = 0; + Delay_us(5); + } +} + +void Soft_I2C_Stop () { + if(led_type!=0) { + Soft_I2C_Sda_Direction = 0; + Delay_us(5); + Soft_I2C_Scl_Direction = 1; + Delay_us(5); + Soft_I2C_Sda_Direction = 1; + Delay_us(5); + } +} \ No newline at end of file diff --git a/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/oled_control.c.ini b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/oled_control.c.ini new file mode 100644 index 0000000..ed705b6 --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/oled_control.c.ini @@ -0,0 +1,9 @@ +[Bookmarks] +Count=0 +[Position] +Line=30 +Column=1 +[BreakPoints] +Count=0 +[FoldedLines] +Count=0 diff --git a/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/oled_control.cp b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/oled_control.cp new file mode 100644 index 0000000..a3a3de3 --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/oled_control.cp @@ -0,0 +1,535 @@ +#line 1 "E:/ATU-100/fw_EXT_3.1/1938_EXT_board_sources_V_3.0/oled_control.c" +#line 1 "e:/atu-100/fw_ext_3.1/1938_ext_board_sources_v_3.0/oled_control.h" + + +sbit Soft_I2C_Scl at LATB6_bit; +sbit Soft_I2C_Sda at LATB7_bit; +sbit Soft_I2C_Scl_Direction at TRISB6_bit; +sbit Soft_I2C_Sda_Direction at TRISB7_bit; + +static char RS, RW, E, LED, nible; + +static char led_addr, led_type; +static char shift_line; + +static char oled_shift; + +void set_addressing (char, char); +void led_send (char); +void led_init (void); +void oled_init (void); +void send_command (char); +void set_addressing (char, char); +void led_wr_str (char, char, char*, char); +void oled_wr_str (char, char, char*, char); +void dysp_on(void); +void dysp_off(void); + + +void Soft_I2C_Init (void); +void Soft_I2C_Start (void); +void Soft_I2C_Write (char); +void Soft_I2C_Stop (void); +#line 1 "e:/atu-100/fw_ext_3.1/1938_ext_board_sources_v_3.0/font5x8.h" + static const char font5x8[] = { + +0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x5F, 0x00, 0x00, +0x00, 0x07, 0x00, 0x07, 0x00, +0x14, 0x7F, 0x14, 0x7F, 0x14, +0x24, 0x2A, 0x7F, 0x2A, 0x12, +0x23, 0x13, 0x08, 0x64, 0x62, +0x36, 0x49, 0x55, 0x22, 0x50, +0x00, 0x05, 0x03, 0x00, 0x00, +0x00, 0x1C, 0x22, 0x41, 0x00, +0x00, 0x41, 0x22, 0x1C, 0x00, +0x08, 0x2A, 0x1C, 0x2A, 0x08, +0x08, 0x08, 0x3E, 0x08, 0x08, +0x00, 0x50, 0x30, 0x00, 0x00, +0x08, 0x08, 0x08, 0x08, 0x08, +0x00, 0x30, 0x30, 0x00, 0x00, +0x20, 0x10, 0x08, 0x04, 0x02, +0x3E, 0x51, 0x49, 0x45, 0x3E, +0x00, 0x42, 0x7F, 0x40, 0x00, +0x42, 0x61, 0x51, 0x49, 0x46, +0x21, 0x41, 0x45, 0x4B, 0x31, +0x18, 0x14, 0x12, 0x7F, 0x10, +0x27, 0x45, 0x45, 0x45, 0x39, +0x3C, 0x4A, 0x49, 0x49, 0x30, +0x01, 0x71, 0x09, 0x05, 0x03, +0x36, 0x49, 0x49, 0x49, 0x36, +0x06, 0x49, 0x49, 0x29, 0x1E, +0x00, 0x36, 0x36, 0x00, 0x00, +0x00, 0x56, 0x36, 0x00, 0x00, +0x00, 0x08, 0x14, 0x22, 0x41, +0x14, 0x14, 0x14, 0x14, 0x14, +0x41, 0x22, 0x14, 0x08, 0x00, +0x02, 0x01, 0x51, 0x09, 0x06, +0x32, 0x49, 0x79, 0x41, 0x3E, +0x7E, 0x11, 0x11, 0x11, 0x7E, +0x7F, 0x49, 0x49, 0x49, 0x36, +0x3E, 0x41, 0x41, 0x41, 0x22, +0x7F, 0x41, 0x41, 0x22, 0x1C, +0x7F, 0x49, 0x49, 0x49, 0x41, +0x7F, 0x09, 0x09, 0x01, 0x01, +0x3E, 0x41, 0x41, 0x51, 0x32, +0x7F, 0x08, 0x08, 0x08, 0x7F, +0x00, 0x41, 0x7F, 0x41, 0x00, +0x20, 0x40, 0x41, 0x3F, 0x01, +0x7F, 0x08, 0x14, 0x22, 0x41, +0x7F, 0x40, 0x40, 0x40, 0x40, +0x7F, 0x02, 0x04, 0x02, 0x7F, +0x7F, 0x04, 0x08, 0x10, 0x7F, +0x3E, 0x41, 0x41, 0x41, 0x3E, +0x7F, 0x09, 0x09, 0x09, 0x06, +0x3E, 0x41, 0x51, 0x21, 0x5E, +0x7F, 0x09, 0x19, 0x29, 0x46, +0x46, 0x49, 0x49, 0x49, 0x31, +0x01, 0x01, 0x7F, 0x01, 0x01, +0x3F, 0x40, 0x40, 0x40, 0x3F, +0x1F, 0x20, 0x40, 0x20, 0x1F, +0x7F, 0x20, 0x18, 0x20, 0x7F, +0x63, 0x14, 0x08, 0x14, 0x63, +0x03, 0x04, 0x78, 0x04, 0x03, +0x61, 0x51, 0x49, 0x45, 0x43, +0x00, 0x00, 0x7F, 0x41, 0x41, +0x02, 0x04, 0x08, 0x10, 0x20, +0x41, 0x41, 0x7F, 0x00, 0x00, +0x04, 0x02, 0x01, 0x02, 0x04, +0x40, 0x40, 0x40, 0x40, 0x40, +0x00, 0x01, 0x02, 0x04, 0x00, +0x20, 0x54, 0x54, 0x54, 0x78, +0x7F, 0x48, 0x44, 0x44, 0x38, +0x38, 0x44, 0x44, 0x44, 0x20, +0x38, 0x44, 0x44, 0x48, 0x7F, +0x38, 0x54, 0x54, 0x54, 0x18, +0x08, 0x7E, 0x09, 0x01, 0x02, +0x08, 0x14, 0x54, 0x54, 0x3C, +0x7F, 0x08, 0x04, 0x04, 0x78, +0x00, 0x44, 0x7D, 0x40, 0x00, +0x20, 0x40, 0x44, 0x3D, 0x00, +0x00, 0x7F, 0x10, 0x28, 0x44, +0x00, 0x41, 0x7F, 0x40, 0x00, +0x7C, 0x04, 0x18, 0x04, 0x78, +0x7C, 0x08, 0x04, 0x04, 0x78, +0x38, 0x44, 0x44, 0x44, 0x38, +0x7C, 0x14, 0x14, 0x14, 0x08, +0x08, 0x14, 0x14, 0x18, 0x7C, +0x7C, 0x08, 0x04, 0x04, 0x08, +0x48, 0x54, 0x54, 0x54, 0x20, +0x04, 0x3F, 0x44, 0x40, 0x20, +0x3C, 0x40, 0x40, 0x20, 0x7C, +0x1C, 0x20, 0x40, 0x20, 0x1C, +0x3C, 0x40, 0x30, 0x40, 0x3C, +0x44, 0x28, 0x10, 0x28, 0x44, +0x0C, 0x50, 0x50, 0x50, 0x3C, +0x44, 0x64, 0x54, 0x4C, 0x44, +0x00, 0x08, 0x36, 0x41, 0x00, +0x00, 0x00, 0x7F, 0x00, 0x00, +0x00, 0x41, 0x36, 0x08, 0x00, +0x08, 0x08, 0x2A, 0x1C, 0x08, +0x08, 0x1C, 0x2A, 0x08, 0x08 +}; +#line 6 "E:/ATU-100/fw_EXT_3.1/1938_EXT_board_sources_V_3.0/oled_control.c" +void led_send (char nible) { + char sdata; + sdata = 0; + RW = 0; E = 1; + sdata = sdata + nible; + sdata = sdata << 4; + if(LED) sdata = sdata + 8; + if(E) sdata = sdata + 4; + if(RW) sdata = sdata + 2; + if(RS) sdata = sdata + 1; + + Soft_I2C_Start(); + Soft_I2C_Write(led_addr); + Soft_I2C_Write(sdata); + Soft_I2C_Stop(); + delay_ms(1); + sdata = sdata - 4; + Soft_I2C_Start(); + Soft_I2C_Write(led_addr); + Soft_I2C_Write(sdata); + Soft_I2C_Stop(); + delay_ms(1); +} + +void led_init (void) { + shift_line = EEPROM_read(7); + oled_shift = EEPROM_read(8); + if(led_type>1) oled_init(); + else if(led_type==1) { + LED = 1; + RS = 0; + + led_send(3); + delay_ms(5); + led_send(3); + delay_ms(1); + led_send(3); + led_send(2); + + led_send(2); + led_send(8); + + led_send(0); + led_send(8); + + led_send(0); + led_send(1); + delay_ms(5); + + led_send(0); + led_send(4 + 2); + + led_send(0); + led_send(8 + 4 + 0 + 0); + } +} + +void dysp_on() { + if(led_type > 1) send_command(0xAF); + else if(led_type==1) { + LED = 1; + RS = 0; + led_send(0); + led_send(0); + } +} + +void dysp_off() { + if(led_type > 1) send_command(0xAE); + else if(led_type==1) { + LED = 0; + RS = 0; + led_send(0); + led_send(0); + } +} + + + void oled_init (void) { + char i, r; + Soft_I2C_Start(); + Soft_I2C_Write(led_addr); + Soft_I2C_Write(0); + Soft_I2C_Write (0xAE); + + if(led_type==2 | led_type==3) { + Soft_I2C_Write (0xD5); + Soft_I2C_Write (0x80); + + Soft_I2C_Write (0xA8); + Soft_I2C_Write (0x3f); + + Soft_I2C_Write (0xD3); + if(led_type==2) Soft_I2C_Write (0 + shift_line); + else Soft_I2C_Write (31 + shift_line); + + Soft_I2C_Write (0x40); + + Soft_I2C_Write (0x8D); + Soft_I2C_Write (0x14); + + Soft_I2C_Write (0x81); + Soft_I2C_Write (180); + + Soft_I2C_Write (0xD9); + Soft_I2C_Write (0x22); + + Soft_I2C_Write (0x20); + Soft_I2C_Write (0x02); + + Soft_I2C_Write (0x21); + Soft_I2C_Write (0); + Soft_I2C_Write (127); + + Soft_I2C_Write (0x2E); + + if(led_type==2) { + Soft_I2C_Write (0xA0); + + Soft_I2C_Write (0xC0); + } + else { + Soft_I2C_Write (0xA1); + + Soft_I2C_Write (0xC8); + } + + Soft_I2C_Write (0xDA); + Soft_I2C_Write (0x02); + + Soft_I2C_Write (0xDB); + Soft_I2C_Write (0x40); + + } + else { + Soft_I2C_Write (0xD5); + Soft_I2C_Write (0x80); + + Soft_I2C_Write (0xA8); + Soft_I2C_Write (63); + + Soft_I2C_Write (0xD3); + Soft_I2C_Write (shift_line); + + Soft_I2C_Write (0x40); + + Soft_I2C_Write (0x8D); + Soft_I2C_Write (0x14); + + Soft_I2C_Write (0x81); + Soft_I2C_Write (255); + + Soft_I2C_Write (0xD9); + Soft_I2C_Write (0xf1); + + Soft_I2C_Write (0x20); + Soft_I2C_Write (0x02); + + Soft_I2C_Write (0x21); + Soft_I2C_Write (0); + Soft_I2C_Write (127); + + Soft_I2C_Write (0x2E); + + if(led_type==4) { + Soft_I2C_Write (0xA0); + + Soft_I2C_Write (0xC0); + } + else { + Soft_I2C_Write (0xA1); + + Soft_I2C_Write (0xC8); + } + + Soft_I2C_Write (0xDA); + Soft_I2C_Write (0x12); + + Soft_I2C_Write (0xDB); + Soft_I2C_Write (0x40); + } + Soft_I2C_Write (0xA4); + + Soft_I2C_Write (0xA6); + + Soft_I2C_Stop (); + + + + Delay_ms(100); + Soft_I2C_Start(); + Soft_I2C_Write(led_addr); + Soft_I2C_Write(64); + + if(led_type==2 | led_type==3) { + for (r = 0; r <=3; r++) { + set_addressing (r, 0); + for (i = 0; i < 128; i++, Soft_I2C_Write(0)); + } + } + else { + for (r = 0; r <=7; r++) { + set_addressing (r, 0); + for (i = 0; i < 128; i++, Soft_I2C_Write(0x00)); + } + + } + + Soft_I2C_Stop (); + send_command (0xAF); + + +} + + + +void send_command (char oled_command) { + Soft_I2C_Start(); + Soft_I2C_Write(led_addr); + Soft_I2C_Write(128); + Soft_I2C_Write(oled_command); + Soft_I2C_Stop(); +} + +void set_addressing (char pagenum, char c_start) { + char a, b, c; + c = c_start + oled_shift; + Soft_I2C_Start(); + Soft_I2C_Write(led_addr); + Soft_I2C_Write(0); + Soft_I2C_Write(0xB0 + pagenum); + + if (c <= 15) { a = c; b = 0; } + else { b = c / 16; a = c - b * 16; } + Soft_I2C_Write (a); + Soft_I2C_Write (0x10 + b); + + Soft_I2C_Start(); + Soft_I2C_Write(led_addr); + Soft_I2C_Write(64); + } + + + +void led_wr_str (char col, char pos, char str[], char leng ) { + char i; + if(led_type==4 | led_type==5) oled_wr_str(pos, col, str, leng); + else if(led_type==2 | led_type==3) oled_wr_str(7*pos+4, col*2, str, leng); + else { + + RS = 0; + led_send(8 + col*4); + led_send(pos); + + RS = 1; + for (i = 0; i < leng; i++) { + + led_send(str[i] >> 4); + led_send(str[i]); + } + + } +} + + +void oled_wr_str (char col, char page, char str[], char leng ) { + char i, h, g, w1, w2; + Soft_I2C_Start(); + Soft_I2C_Write(led_addr); + Soft_I2C_Write(64); + + set_addressing (page, col); + + for (i = 0; i < leng; i++) { + if (str[i] == 0) g = 0; else g = str[i] - 32; + for (h = 0; h <= 4; h++) { + w1 = font5x8[g*5+h]; + if(page!=2 & page!=4 & page!=6) { + w2.B7 = w1.B3; + w2.B6 = w1.B3; + w2.B5 = w1.B2; + w2.B4 = w1.B2; + w2.B3 = w1.B1; + w2.B2 = w1.B1; + w2.B1 = w1.B0; + w2.B0 = w1.B0; + } + else { + w2.B7 = w1.B2; + w2.B6 = w1.B2; + w2.B5 = w1.B1; + w2.B4 = w1.B1; + w2.B3 = w1.B0; + w2.B2 = w1.B0; + w2.B1 = 0; + w2.B0 = 0; + } + Soft_I2C_Write(w2); + if(led_type==4 | led_type==5) Soft_I2C_Write(w2); + } + Soft_I2C_Write (0); + Soft_I2C_Write (0); + } + set_addressing (page+1, col); + + for (i = 0; i < leng; i++) { + if (str[i] == 0) g = 0; else g = str[i] - 32; + for (h = 0; h <= 4; h++) { + w1 = font5x8[g*5+h]; + if(page!=2 & page!=4 & page!=6) { + w2.B7 = w1.B7; + w2.B6 = w1.B7; + w2.B5 = w1.B6; + w2.B4 = w1.B6; + w2.B3 = w1.B5; + w2.B2 = w1.B5; + w2.B1 = w1.B4; + w2.B0 = w1.B4; } + else { + w2.B7 = w1.B6; + w2.B6 = w1.B6; + w2.B5 = w1.B5; + w2.B4 = w1.B5; + w2.B3 = w1.B4; + w2.B2 = w1.B4; + w2.B1 = w1.B3; + w2.B0 = w1.B3; + } + Soft_I2C_Write(w2); + if(led_type==4 | led_type==5) Soft_I2C_Write(w2); + } + Soft_I2C_Write (0); + Soft_I2C_Write (0); + + } + Soft_I2C_Stop (); +} + + + + void Soft_I2C_Init () { + led_addr = EEPROM_read(0); + led_type = EEPROM_read(1); + if(led_type==0) { + Soft_I2C_Scl_Direction = 0; + Soft_I2C_Sda_Direction = 0; + LATB.B6 = 1; + LATB.B7 = 1; + } + else { + Soft_I2C_Scl_Direction = 1; + Soft_I2C_Sda_Direction = 1; + Soft_I2C_Scl = 0; + Soft_I2C_Sda = 0; + } + } + + void Soft_I2C_Start () { + if(led_type!=0) { + Soft_I2C_Scl_Direction = 1; + Delay_us(5); + Soft_I2C_Sda_Direction = 1; + Delay_us(5); + Soft_I2C_Sda_Direction = 0; + Delay_us(5); + Soft_I2C_Scl_Direction = 0; + Delay_us(5); + } + } + +void Soft_I2C_Write (char d) { + char i; + if(led_type!=0) { + for(i=0; i<=7; i++) { + if(d.B7==0) Soft_I2C_Sda_Direction = 0; else Soft_I2C_Sda_Direction = 1; + Delay_us(5); + Soft_I2C_Scl_Direction = 1; + Delay_us(5); + Soft_I2C_Scl_Direction = 0; + Delay_us(5); + d = d << 1; + } + + Soft_I2C_Sda_Direction = 1; + Delay_us(5); + Soft_I2C_Scl_Direction = 1; + Delay_us(5); + Soft_I2C_Scl_Direction = 0; + Delay_us(5); + } +} + +void Soft_I2C_Stop () { + if(led_type!=0) { + Soft_I2C_Sda_Direction = 0; + Delay_us(5); + Soft_I2C_Scl_Direction = 1; + Delay_us(5); + Soft_I2C_Sda_Direction = 1; + Delay_us(5); + } +} diff --git a/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/oled_control.h b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/oled_control.h new file mode 100644 index 0000000..3102c74 --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/oled_control.h @@ -0,0 +1,30 @@ +// Software I2C connections +// +sbit Soft_I2C_Scl at LATB6_bit; +sbit Soft_I2C_Sda at LATB7_bit; +sbit Soft_I2C_Scl_Direction at TRISB6_bit; +sbit Soft_I2C_Sda_Direction at TRISB7_bit; +// +static char RS, RW, E, LED, nible; + +static char led_addr, led_type; +static char shift_line; + +static char oled_shift; +// +void set_addressing (char, char); +void led_send (char); +void led_init (void); +void oled_init (void); +void send_command (char); +void set_addressing (char, char); +void led_wr_str (char, char, char*, char); +void oled_wr_str (char, char, char*, char); +void dysp_on(void); +void dysp_off(void); +// + +void Soft_I2C_Init (void); +void Soft_I2C_Start (void); +void Soft_I2C_Write (char); +void Soft_I2C_Stop (void); \ No newline at end of file diff --git a/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/oled_control.h.ini b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/oled_control.h.ini new file mode 100644 index 0000000..c00befe --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/oled_control.h.ini @@ -0,0 +1,9 @@ +[Bookmarks] +Count=0 +[Position] +Line=17 +Column=93 +[BreakPoints] +Count=0 +[FoldedLines] +Count=0 diff --git a/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/oled_control.mcl b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/oled_control.mcl new file mode 100644 index 0000000000000000000000000000000000000000..6fc8e0ec68c457dc40a48653398f6782866b2904 GIT binary patch literal 48659 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 literal 0 HcmV?d00001 diff --git a/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/pic_init.asm b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/pic_init.asm new file mode 100644 index 0000000..79b9b2a --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/pic_init.asm @@ -0,0 +1,74 @@ + +_pic_init: + +;pic_init.c,6 :: void pic_init (void) { +;pic_init.c,7 :: asm CLRWDT; + CLRWDT +;pic_init.c,8 :: WDTCON.B5 = 0; + BCF WDTCON+0, 5 +;pic_init.c,9 :: WDTCON.B4 = 1; + BSF WDTCON+0, 4 +;pic_init.c,10 :: WDTCON.B3 = 0; // 1 sec WDT + BCF WDTCON+0, 3 +;pic_init.c,11 :: WDTCON.B2 = 1; + BSF WDTCON+0, 2 +;pic_init.c,12 :: WDTCON.B1 = 0; + BCF WDTCON+0, 1 +;pic_init.c,13 :: asm CLRWDT; + CLRWDT +;pic_init.c,15 :: ANSELA = 0; + CLRF ANSELA+0 +;pic_init.c,16 :: ANSA0_bit = 1; // analog inputs + BSF ANSA0_bit+0, BitPos(ANSA0_bit+0) +;pic_init.c,17 :: ANSA1_bit = 1; + BSF ANSA1_bit+0, BitPos(ANSA1_bit+0) +;pic_init.c,18 :: ANSELB = 0; // all as digital + CLRF ANSELB+0 +;pic_init.c,20 :: C1ON_bit = 0; // Disable comparators + BCF C1ON_bit+0, BitPos(C1ON_bit+0) +;pic_init.c,21 :: C2ON_bit = 0; + BCF C2ON_bit+0, BitPos(C2ON_bit+0) +;pic_init.c,23 :: OSCCON = 0b01111000; // 16 MHz oscillator + MOVLW 120 + MOVWF OSCCON+0 +;pic_init.c,25 :: PORTA = 0; + CLRF PORTA+0 +;pic_init.c,26 :: PORTB = 0; + CLRF PORTB+0 +;pic_init.c,27 :: PORTC = 0; + CLRF PORTC+0 +;pic_init.c,28 :: LATA = 0b01000000; // PORT6 /Tx_req to 1 + MOVLW 64 + MOVWF LATA+0 +;pic_init.c,29 :: LATB = 0; + CLRF LATB+0 +;pic_init.c,30 :: LATC = 0; + CLRF LATC+0 +;pic_init.c,31 :: TRISA = 0b00000011; + MOVLW 3 + MOVWF TRISA+0 +;pic_init.c,32 :: TRISB = 0b00000111; + MOVLW 7 + MOVWF TRISB+0 +;pic_init.c,33 :: TRISC = 0b00000000; // + CLRF TRISC+0 +;pic_init.c,35 :: ADC_Init(); + CALL _ADC_Init+0 +;pic_init.c,38 :: ADCON1.B0 = 1; // ADC with the internal reference + BSF ADCON1+0, 0 +;pic_init.c,39 :: ADCON1.B1 = 1; + BSF ADCON1+0, 1 +;pic_init.c,41 :: OPTION_REG.B7 = 0; + BCF OPTION_REG+0, 7 +;pic_init.c,42 :: WPUB.B0 = 1; // PORTB0 Pull-up resistor + BSF WPUB+0, 0 +;pic_init.c,43 :: WPUB.B1 = 1; // PORTB1 Pull-up resistor + BSF WPUB+0, 1 +;pic_init.c,44 :: WPUB.B2 = 1; // PORTB2 Pull-up resistor + BSF WPUB+0, 2 +;pic_init.c,46 :: GIE_bit = 0; + BCF GIE_bit+0, BitPos(GIE_bit+0) +;pic_init.c,48 :: } +L_end_pic_init: + RETURN +; end of _pic_init diff --git a/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/pic_init.c b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/pic_init.c new file mode 100644 index 0000000..996db5a --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/pic_init.c @@ -0,0 +1,48 @@ +// pic_init unit for Micro C PRO +// David Fainitski for ATU-100 project +// PIC1938 Microchip + + +void pic_init (void) { + asm CLRWDT; + WDTCON.B5 = 0; + WDTCON.B4 = 1; + WDTCON.B3 = 0; // 1 sec WDT + WDTCON.B2 = 1; + WDTCON.B1 = 0; + asm CLRWDT; + + ANSELA = 0; + ANSA0_bit = 1; // analog inputs + ANSA1_bit = 1; + ANSELB = 0; // all as digital + + C1ON_bit = 0; // Disable comparators + C2ON_bit = 0; + + OSCCON = 0b01111000; // 16 MHz oscillator + + PORTA = 0; + PORTB = 0; + PORTC = 0; + LATA = 0b01000000; // PORT6 /Tx_req to 1 + LATB = 0; + LATC = 0; + TRISA = 0b00000011; + TRISB = 0b00000111; + TRISC = 0b00000000; // + // + ADC_Init(); + // + + ADCON1.B0 = 1; // ADC with the internal reference + ADCON1.B1 = 1; + // + OPTION_REG.B7 = 0; + WPUB.B0 = 1; // PORTB0 Pull-up resistor + WPUB.B1 = 1; // PORTB1 Pull-up resistor + WPUB.B2 = 1; // PORTB2 Pull-up resistor + //interrupt setting + GIE_bit = 0; + +} \ No newline at end of file diff --git a/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/pic_init.c.ini b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/pic_init.c.ini new file mode 100644 index 0000000..6141643 --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/pic_init.c.ini @@ -0,0 +1,9 @@ +[Bookmarks] +Count=0 +[Position] +Line=28 +Column=45 +[BreakPoints] +Count=0 +[FoldedLines] +Count=0 diff --git a/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/pic_init.cp b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/pic_init.cp new file mode 100644 index 0000000..5415409 --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/pic_init.cp @@ -0,0 +1,49 @@ +#line 1 "E:/ATU-100/fw_EXT_3.1/1938_EXT_board_sources_V_3.0/pic_init.c" + + + + + +void pic_init (void) { + asm CLRWDT; + WDTCON.B5 = 0; + WDTCON.B4 = 1; + WDTCON.B3 = 0; + WDTCON.B2 = 1; + WDTCON.B1 = 0; + asm CLRWDT; + + ANSELA = 0; + ANSA0_bit = 1; + ANSA1_bit = 1; + ANSELB = 0; + + C1ON_bit = 0; + C2ON_bit = 0; + + OSCCON = 0b01111000; + + PORTA = 0; + PORTB = 0; + PORTC = 0; + LATA = 0b01000000; + LATB = 0; + LATC = 0; + TRISA = 0b00000011; + TRISB = 0b00000111; + TRISC = 0b00000000; + + ADC_Init(); + + + ADCON1.B0 = 1; + ADCON1.B1 = 1; + + OPTION_REG.B7 = 0; + WPUB.B0 = 1; + WPUB.B1 = 1; + WPUB.B2 = 1; + + GIE_bit = 0; + +} diff --git a/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/pic_init.h b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/pic_init.h new file mode 100644 index 0000000..b3c67d3 --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/pic_init.h @@ -0,0 +1,80 @@ +// Connections +// +sbit n_Tx at LATA6_bit; +sbit p_Tx at LATA7_bit; +// +//sbit Button at RB0_bit; +//sbit BYP_button at RB2_bit; +//sbit Auto_button at RB1_bit; +// +sbit Cap_10 at LATC7_bit; +sbit Cap_22 at LATC3_bit; +sbit Cap_47 at LATC6_bit; +sbit Cap_100 at LATC2_bit; +sbit Cap_220 at LATC5_bit; +sbit Cap_470 at LATC1_bit; +sbit Cap_1000 at LATC4_bit; +sbit Cap_sw at LATC0_bit; +// +sbit Ind_005 at LATB3_bit; +sbit Ind_011 at LATA2_bit; +sbit Ind_022 at LATB4_bit; +sbit Ind_045 at LATA3_bit; +sbit Ind_1 at LATB5_bit; +sbit Ind_22 at LATA5_bit; +sbit Ind_45 at LATA4_bit; +// +void pic_init (void); + +/* +void lcd_prep() { + asm CLRWDT; + if(type==4 |type==5){ // 128*64 OLED + + Delay_ms(150); + if(P_High==1) led_wr_str (0, 16, "PWR= 0W", 8); + else led_wr_str (0, 16, "PWR=0.0W", 8); + led_wr_str (2, 16, "SWR=0.00", 8); + if(Test==1 | Loss_ind==0) {led_wr_str(4, 16, "L=0.00uH", 8); led_wr_str(6, 16, "C= 0pF", 8); } + else if(Test==0 & Loss_ind==1) { // Loss ind + if(P_High==1) led_wr_str(4, 16, "ANT= 0W", 8); + else led_wr_str(4, 16, "ANT=0.0W", 8); + led_wr_str(6, 16, "EFF= 0%", 8); + } + if(Auto) led_wr_str (0, 16+8*12, ".", 1); + } + else if(type!=0) { // 1602 LCD & 128*32 OLED + + Delay_ms(150); + if(P_High==1) led_wr_str (0, 0, "PWR= 0W", 8); + else led_wr_str (0, 0, "PWR=0.0W", 8); + led_wr_str (1, 0, "SWR=0.00", 8); + if(type==1) { // 1602 LCD + if(Test==1 | Loss_ind==0) {led_wr_str (0, 9, "L=0.00u", 7); led_wr_str (1, 9, "C= 0p", 7); } + else if(Test==0 & Loss_ind==1){ // Loss ind + if(P_High==1) led_wr_str (0, 9, "AN= 0W", 7); + else led_wr_str (0, 9, "AN=0.0W", 7); + led_wr_str (1, 9, "EFF= 0%", 7); + } + } + else { // 128*32 OLED + if(Test==1 | Loss_ind==0) { led_wr_str (0, 9, "L=0.00uH", 8); led_wr_str (1, 9, "C= 0pF", 8); } + else if(Test==0 & Loss_ind==1) { + if(P_High==1) led_wr_str (0, 9, "ANT= 0W", 8); + else led_wr_str (0, 9, "ANT=0.0W", 8); + led_wr_str (1, 9, "EFF= 0%", 8); + } + } + if(Auto) led_wr_str (0, 8, ".", 1); + } + asm CLRWDT; + if(lcd_prep_short==1) { + ind_old = 0; + cap_old = 0; + if(Loss_ind==0) lcd_ind(); + } + return; +} +*/ + + diff --git a/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/pic_init.h.ini b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/pic_init.h.ini new file mode 100644 index 0000000..ff17404 --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/pic_init.h.ini @@ -0,0 +1,9 @@ +[Bookmarks] +Count=0 +[Position] +Line=73 +Column=16 +[BreakPoints] +Count=0 +[FoldedLines] +Count=0 diff --git a/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/pic_init.mcl b/ATU_100_EXT_board/FirmWare_PIC16F1938/1938_EXT_board_sources_V_3.1/pic_init.mcl new file mode 100644 index 0000000000000000000000000000000000000000..2d9b02f48826f2a3899ca16ba6c97947e35832ca GIT binary patch literal 3445 zcmZvfS#K0q5QWc}K*&OHB7(C6N|Y!BA-4_2e#=acjYpcy3_U~q5^1DB9{fV`z(eH! z#smK#`@Zk{23b);>QwdZJ4MlQ-+TJ2bC>SEb*KGI*}oOQM9#Su@Z2qSZtWAmV^pkc z6l=??kRb5V_POcyh3$*S&tdM;v**uX7wOK<4t8sNFE91DBZ--MrZwh-xAtF`a*sN$ z*GKYT+9<~N%SnfNU9opQ!4~e5$jfpzO?@Zno>Kd7w8NIpWn)||LJOIf7%2O7naQS- zO>uDk;wh|X9EG-#G81i6Y}RC}J1K_))Rno~gYkO5jk>y9oZv-!ar*rB#Tk_&MH4YK z(@)3x>A>7&F&wD55j9^*JPGS#I4(KAx-vEzR+BcY%%r2FQ{NY(rINBH{kAmH!rF-J z@H({+S@JshCsl9UhLzTWx}zkuAt{xVx+LT|b<1f_RwSm4vc_^b92AVRGBzAddUD&< z`f1Eai*1e0cA$klpwqo|eQv2X*Lc#NoE@XCjP(ZHjYU|QNueZ-EQ?G2EGmme{%XC1 zYANYuRLe=9Ky@PNlc-K6y@F~b=~JjqCB2GjHR&}}Ye^R}u$*aR4&97h$l!9Om<(Su z;};e6w!wfeGt+65xp1DyAiz;(c2Nd715g!y%Evt5xo}Cs}a4DP)oLX+osd| zlwXU4bmLdvyxPB0!@L0gis;XX{)p)Jh^|I-C8FOV`Zc0oBKkR^pCbA(q8}pqKBDg; z`Zl7kBl;?$FC+S*LGs3Kd};0%(1H%}Q{ZS<-YCWF;avQcKiHPSe(w3UcdOaCZWFXX z7X?6Ac