_enterPowerSave: begin //openKeyboard.c,116 :: PORTA = 0; PORTA <- 0 //openKeyboard.c,117 :: INTCON.RBIE = 1; // enables PORTB on-change interrupt INTCON <- INTCON | 8 //openKeyboard.c,119 :: sleep; asm: sleep; end _exitPowerSave: begin //openKeyboard.c,124 :: INTCON.RBIE = 0; // disables PORTB on-change interrupt INTCON <- INTCON & -9 end _setupUsart: begin //openKeyboard.c,128 :: switch(br){ // done so, because you can't call USART_Init(variable); but only USART_Init(literal); goto L_setupUsart_0 //openKeyboard.c,129 :: case BAUDRATE_300: USART_Init(300); L_setupUsart_2: SPBRG <- 207 asm: BCF TXSTA, BRGH CALL _Usart_Init //openKeyboard.c,130 :: break; goto L_setupUsart_1 //openKeyboard.c,131 :: case BAUDRATE_1200: USART_Init(1200); L_setupUsart_3: SPBRG <- 207 asm: BSF TXSTA, BRGH CALL _Usart_Init //openKeyboard.c,132 :: break; goto L_setupUsart_1 //openKeyboard.c,133 :: case BAUDRATE_2400: USART_Init(2400); L_setupUsart_4: SPBRG <- 103 asm: BSF TXSTA, BRGH CALL _Usart_Init //openKeyboard.c,134 :: break; goto L_setupUsart_1 //openKeyboard.c,135 :: case BAUDRATE_4800: USART_Init(4800); L_setupUsart_5: SPBRG <- 51 asm: BSF TXSTA, BRGH CALL _Usart_Init //openKeyboard.c,136 :: break; goto L_setupUsart_1 //openKeyboard.c,137 :: case BAUDRATE_9600: USART_Init(9600); L_setupUsart_6: SPBRG <- 25 asm: BSF TXSTA, BRGH CALL _Usart_Init //openKeyboard.c,138 :: break; goto L_setupUsart_1 //openKeyboard.c,139 :: case BAUDRATE_19200: USART_Init(19200); L_setupUsart_7: SPBRG <- 12 asm: BSF TXSTA, BRGH CALL _Usart_Init //openKeyboard.c,140 :: break; goto L_setupUsart_1 //openKeyboard.c,141 :: case BAUDRATE_38400: USART_Init(38400); L_setupUsart_8: SPBRG <- 6 asm: BSF TXSTA, BRGH CALL _Usart_Init //openKeyboard.c,142 :: break; goto L_setupUsart_1 //openKeyboard.c,143 :: case BAUDRATE_57600: USART_Init(57600); L_setupUsart_9: SPBRG <- 3 asm: BSF TXSTA, BRGH CALL _Usart_Init //openKeyboard.c,144 :: break; goto L_setupUsart_1 //openKeyboard.c,145 :: case BAUDRATE_115200: USART_Init(115200); L_setupUsart_10: SPBRG <- 1 asm: BSF TXSTA, BRGH CALL _Usart_Init //openKeyboard.c,146 :: break; goto L_setupUsart_1 //openKeyboard.c,147 :: default: EEprom_write(CONFIG_BAUDRATE, BAUDRATE_4800); // if no config found, set a default 4800 L_setupUsart_11: FARG_EEprom_write+0 <- 1 FARG_EEprom_write+1 <- 4 CALL _EEprom_write //openKeyboard.c,148 :: br = BAUDRATE_4800; FARG_setupUsart+0 <- 4 //openKeyboard.c,149 :: USART_Init(4800); SPBRG <- 51 asm: BSF TXSTA, BRGH CALL _Usart_Init //openKeyboard.c,150 :: } goto L_setupUsart_1 L_setupUsart_0: if ( FARG_setupUsart+0 = 1) then goto L_setupUsart_2 if ( FARG_setupUsart+0 = 2) then goto L_setupUsart_3 if ( FARG_setupUsart+0 = 3) then goto L_setupUsart_4 if ( FARG_setupUsart+0 = 4) then goto L_setupUsart_5 if ( FARG_setupUsart+0 = 5) then goto L_setupUsart_6 if ( FARG_setupUsart+0 = 6) then goto L_setupUsart_7 if ( FARG_setupUsart+0 = 7) then goto L_setupUsart_8 if ( FARG_setupUsart+0 = 8) then goto L_setupUsart_9 if ( FARG_setupUsart+0 = 9) then goto L_setupUsart_10 goto L_setupUsart_11 L_setupUsart_1: //openKeyboard.c,151 :: baudrate = br; _baudrate <- FARG_setupUsart+0 end _turnBacklightOn: begin //openKeyboard.c,155 :: timer = lightFadeOffTime; _timer <- _lightFadeOffTime //openKeyboard.c,156 :: if (!pwmRunning) { if (_pwmRunning) then goto L_turnBacklightOn_12 //openKeyboard.c,157 :: PWM1_Start(); CALL _PWM1_Start //openKeyboard.c,158 :: PWM2_Start(); CALL _PWM2_Start //openKeyboard.c,159 :: pwmRunning = 1; _pwmRunning <- 1 //openKeyboard.c,160 :: } L_turnBacklightOn_12: //openKeyboard.c,161 :: PWM1_Change_Duty(lightStrenght); FARG_PWM1_Change_Duty+0 <- _lightStrenght CALL _PWM1_Change_Duty //openKeyboard.c,162 :: PWM2_Change_Duty(lightStrenght); FARG_PWM2_Change_Duty+0 <- _lightStrenght CALL _PWM2_Change_Duty end _nop: begin end _lightFade: begin //openKeyboard.c,171 :: if (newlyPressd) { if (!_newlyPressd) then goto L_lightFade_13 //openKeyboard.c,172 :: turnBacklightOn(); CALL _turnBacklightOn //openKeyboard.c,173 :: return; return //openKeyboard.c,174 :: } L_lightFade_13: //openKeyboard.c,176 :: if (timer>0) timer --; if ( _timer <= 0) then goto L_lightFade_14 _timer <- _timer - 1 _timer <- _timer goto L_lightFade_15 L_lightFade_14: //openKeyboard.c,180 :: PORTC = 255; PORTC <- 255 //openKeyboard.c,181 :: pwmRunning = 0; _pwmRunning <- 0 //openKeyboard.c,182 :: enterPowerSave(); CALL _enterPowerSave //openKeyboard.c,183 :: } L_lightFade_15: //openKeyboard.c,185 :: if (timer<(~lightStrenght)){ STACK_1 <- ~_lightStrenght if ( _timer >= STACK_1) then goto L_lightFade_16 //openKeyboard.c,186 :: PWM1_Change_Duty(~((unsigned char)timer)); FARG_PWM1_Change_Duty+0 <- ~_timer FARG_PWM1_Change_Duty+0 <- FARG_PWM1_Change_Duty+0 CALL _PWM1_Change_Duty //openKeyboard.c,187 :: PWM2_Change_Duty(~((unsigned char)timer)); FARG_PWM2_Change_Duty+0 <- ~_timer FARG_PWM2_Change_Duty+0 <- FARG_PWM2_Change_Duty+0 CALL _PWM2_Change_Duty //openKeyboard.c,188 :: } L_lightFade_16: end _setupLightMode: begin //openKeyboard.c,194 :: if (pwmRunning){ if (!_pwmRunning) then goto L_setupLightMode_17 //openKeyboard.c,195 :: PWM1_Stop(); CALL _PWM1_Stop //openKeyboard.c,196 :: PWM2_Stop(); CALL _PWM2_Stop //openKeyboard.c,197 :: } L_setupLightMode_17: //openKeyboard.c,199 :: switch (lm){ goto L_setupLightMode_18 //openKeyboard.c,200 :: case LIGHTMODE_ALWAYSOFF: lightHandler = &nop; L_setupLightMode_20: _lightHandler <- 0 //openKeyboard.c,201 :: lightStrenght = 0xFF; _lightStrenght <- 255 //openKeyboard.c,202 :: lightMode = LIGHTMODE_ALWAYSOFF; _lightMode <- 0 //openKeyboard.c,203 :: break; goto L_setupLightMode_19 //openKeyboard.c,205 :: case LIGHTMODE_ALWAYSON: lightHandler = &nop; L_setupLightMode_21: _lightHandler <- 0 //openKeyboard.c,206 :: turnBacklightOn(); CALL _turnBacklightOn //openKeyboard.c,207 :: lightMode = LIGHTMODE_ALWAYSON; _lightMode <- 1 //openKeyboard.c,208 :: break; goto L_setupLightMode_19 //openKeyboard.c,210 :: case LIGHTMODE_FADE: lightHandler = &lightFade; L_setupLightMode_22: _lightHandler <- 0 //openKeyboard.c,211 :: turnBacklightOn(); CALL _turnBacklightOn //openKeyboard.c,212 :: lightStrenght = 0x80; // restore middle luminosity _lightStrenght <- 128 //openKeyboard.c,213 :: lightMode = LIGHTMODE_FADE; _lightMode <- 2 //openKeyboard.c,214 :: break; goto L_setupLightMode_19 //openKeyboard.c,216 :: default : EEprom_write(CONFIG_LIGHTMODE, LIGHTMODE_ALWAYSOFF); L_setupLightMode_23: FARG_EEprom_write+0 <- 3 FARG_EEprom_write+1 <- 0 CALL _EEprom_write //openKeyboard.c,217 :: lightMode = LIGHTMODE_ALWAYSOFF; _lightMode <- 0 //openKeyboard.c,218 :: lightHandler = &nop; _lightHandler <- 0 //openKeyboard.c,219 :: lightStrenght = 0xFF; _lightStrenght <- 255 //openKeyboard.c,220 :: } goto L_setupLightMode_19 L_setupLightMode_18: if ( FARG_setupLightMode+0 = 0) then goto L_setupLightMode_20 if ( FARG_setupLightMode+0 = 1) then goto L_setupLightMode_21 if ( FARG_setupLightMode+0 = 2) then goto L_setupLightMode_22 goto L_setupLightMode_23 L_setupLightMode_19: //openKeyboard.c,222 :: PORTC = 255; PORTC <- 255 //openKeyboard.c,225 :: if (lightMode != LIGHTMODE_ALWAYSOFF) { if ( _lightMode = 0) then goto L_setupLightMode_24 //openKeyboard.c,226 :: PWM1_Init(40000); asm: MOVLW 24 asm: MOVWF PR2 CALL _PWM1_Init //openKeyboard.c,227 :: PWM1_Change_Duty(lightStrenght); FARG_PWM1_Change_Duty+0 <- _lightStrenght CALL _PWM1_Change_Duty //openKeyboard.c,228 :: PWM1_Start(); CALL _PWM1_Start //openKeyboard.c,230 :: PWM2_Init(40000); asm: MOVLW 24 asm: MOVWF PR2 CALL _PWM2_Init //openKeyboard.c,231 :: PWM2_Change_Duty(lightStrenght); FARG_PWM2_Change_Duty+0 <- _lightStrenght CALL _PWM2_Change_Duty //openKeyboard.c,232 :: PWM2_Start(); CALL _PWM2_Start //openKeyboard.c,234 :: pwmRunning = 1; _pwmRunning <- 1 //openKeyboard.c,235 :: } L_setupLightMode_24: end _doScan: begin //openKeyboard.c,239 :: unsigned char sc = 0; doScan_sc_L0 <- 0 //openKeyboard.c,241 :: newlyPressd = 0; _newlyPressd <- 0 //openKeyboard.c,243 :: for (AMask=1; AMask<128; AMask<<=1){ _AMask <- 1 L_doScan_25: if ( _AMask >= 128) then goto L_doScan_26 //openKeyboard.c,245 :: oldData[sc] = data[sc]; // save old data STACK_1 <- 0 + doScan_sc_L0 FSR <- 0 + doScan_sc_L0 STACK_0 <- *FSR *STACK_1 <- STACK_0 //openKeyboard.c,247 :: PORTA = ~AMask; // put a 0 on the line we want to inspect PORTA <- ~_AMask PORTA <- PORTA //openKeyboard.c,248 :: data[sc] = PORTB; // read PORTB (pulled up)...if a line goes to 0, bingo! STACK_0 <- 0 + doScan_sc_L0 *STACK_0 <- PORTB //openKeyboard.c,249 :: data[sc] = data[sc] | PORTB; // antibounce STACK_1 <- 0 + doScan_sc_L0 STACK_0 <- *STACK_1 STACK_0 <- STACK_0 | PORTB *STACK_1 <- STACK_0 //openKeyboard.c,250 :: data[sc] = data[sc] | PORTB; // antibounce STACK_1 <- 0 + doScan_sc_L0 STACK_0 <- *STACK_1 STACK_0 <- STACK_0 | PORTB *STACK_1 <- STACK_0 //openKeyboard.c,251 :: data[sc] = ~data[sc]; // return to positive logic STACK_1 <- 0 + doScan_sc_L0 STACK_0 <- *STACK_1 STACK_0 <- ~STACK_0 *STACK_1 <- STACK_0 //openKeyboard.c,253 :: justPressed[sc] = data[sc]&(~oldData[sc]); STACK_2 <- 0 + doScan_sc_L0 FSR <- 0 + doScan_sc_L0 STACK_1 <- *FSR FSR <- 0 + doScan_sc_L0 STACK_0 <- *FSR STACK_0 <- ~STACK_0 STACK_0 <- STACK_1 & STACK_0 *STACK_2 <- STACK_0 //openKeyboard.c,255 :: newlyPressd = newlyPressd | justPressed[sc]; FSR <- 0 + doScan_sc_L0 STACK_0 <- *FSR _newlyPressd <- _newlyPressd | STACK_0 _newlyPressd <- _newlyPressd //openKeyboard.c,257 :: sc++; doScan_sc_L0 <- doScan_sc_L0 + 1 doScan_sc_L0 <- doScan_sc_L0 //openKeyboard.c,258 :: } L_doScan_27: //openKeyboard.c,243 :: for (AMask=1; AMask<128; AMask<<=1){ STACK_0 <- 1 _AMask <- _AMask shl STACK_0 [Optimized To Dest] _AMask <- _AMask //openKeyboard.c,258 :: } goto L_doScan_25 L_doScan_26: end _serialSend: begin //openKeyboard.c,263 :: unsigned char idx = 0; serialSend_idx_L0 <- 0 //openKeyboard.c,264 :: unsigned char sc = 0; serialSend_sc_L0 <- 0 //openKeyboard.c,266 :: for (AMask=1; AMask<128; AMask<<=1){ _AMask <- 1 L_serialSend_28: if ( _AMask >= 128) then goto L_serialSend_29 //openKeyboard.c,267 :: for (BMask=1; BMask<128; BMask<<=1){ _BMask <- 1 L_serialSend_31: if ( _BMask >= 128) then goto L_serialSend_32 //openKeyboard.c,268 :: if (justPressed[sc] & BMask) USART_Write(serialMap[alt][idx]); FSR <- 0 + serialSend_sc_L0 STACK_0 <- *FSR STACK_0 <- STACK_0 & _BMask if (!STACK_0) then goto L_serialSend_34 STACK_0 <- 49 * _alt STACK_0 <- 0 + STACK_0 STACK_0 <- STACK_0 + serialSend_idx_L0 FARG_Usart_Write+0 <- *STACK_0 FARG_Usart_Write+0 <- FARG_Usart_Write+0 CALL _Usart_Write L_serialSend_34: //openKeyboard.c,269 :: idx++; serialSend_idx_L0 <- serialSend_idx_L0 + 1 serialSend_idx_L0 <- serialSend_idx_L0 //openKeyboard.c,270 :: } L_serialSend_33: //openKeyboard.c,267 :: for (BMask=1; BMask<128; BMask<<=1){ STACK_0 <- 1 _BMask <- _BMask shl STACK_0 [Optimized To Dest] _BMask <- _BMask //openKeyboard.c,270 :: } goto L_serialSend_31 L_serialSend_32: //openKeyboard.c,271 :: sc++; serialSend_sc_L0 <- serialSend_sc_L0 + 1 serialSend_sc_L0 <- serialSend_sc_L0 //openKeyboard.c,272 :: } L_serialSend_30: //openKeyboard.c,266 :: for (AMask=1; AMask<128; AMask<<=1){ STACK_0 <- 1 _AMask <- _AMask shl STACK_0 [Optimized To Dest] _AMask <- _AMask //openKeyboard.c,272 :: } goto L_serialSend_28 L_serialSend_29: //openKeyboard.c,273 :: alt = alts[data[2]&1|((data[1]&1)<<1)|((data[0]&64)>>4)]; // next scan can use alt retrieved here STACK_4 <- _data+2 & 1 STACK_3 <- _data+1 & 1 STACK_2 <- 1 STACK_0 <- STACK_3 shl STACK_2 STACK_4 <- STACK_4 | STACK_0 STACK_3 <- _data & 64 STACK_2 <- 4 STACK_0 <- STACK_3 shr STACK_2 STACK_0 <- STACK_4 | STACK_0 FSR <- 0 + STACK_0 _alt <- *FSR _alt <- _alt end _scanSend: begin //openKeyboard.c,277 :: unsigned char idx = 0; scanSend_idx_L0 <- 0 //openKeyboard.c,278 :: unsigned char sc = 0; scanSend_sc_L0 <- 0 //openKeyboard.c,279 :: unsigned char bs = 0; scanSend_bs_L0 <- 0 //openKeyboard.c,281 :: for (AMask=1; AMask<128; AMask<<=1){ _AMask <- 1 L_scanSend_35: if ( _AMask >= 128) then goto L_scanSend_36 //openKeyboard.c,282 :: somethingChanged = data[sc] ^ oldData[sc]; FSR <- 0 + scanSend_sc_L0 _somethingChanged <- *FSR FSR <- 0 + scanSend_sc_L0 STACK_0 <- *FSR _somethingChanged <- _somethingChanged ^ STACK_0 _somethingChanged <- _somethingChanged //openKeyboard.c,283 :: bs = 0; scanSend_bs_L0 <- 0 //openKeyboard.c,284 :: for (BMask=1; BMask<128; BMask<<=1){ _BMask <- 1 L_scanSend_38: if ( _BMask >= 128) then goto L_scanSend_39 //openKeyboard.c,285 :: if (someThingChanged & BMask) STACK_0 <- _somethingChanged & _BMask if (!STACK_0) then goto L_scanSend_41 //openKeyboard.c,286 :: USART_Write(scanMap[idx] | (((data[sc]&BMask)>>bs)<<6)); // | 64 if pressed STACK_0 <- 0 + scanSend_idx_L0 FARG_Usart_Write+0 <- *STACK_0 FSR <- 0 + scanSend_sc_L0 STACK_0 <- *FSR STACK_2 <- STACK_0 & _BMask STACK_0 <- scanSend_bs_L0 STACK_3 <- STACK_2 shr STACK_0 STACK_2 <- 6 STACK_0 <- STACK_3 shl STACK_2 [Optimized To Dest] FARG_Usart_Write+0 <- FARG_Usart_Write+0 | STACK_0 [Optimized To Dest] FARG_Usart_Write+0 <- FARG_Usart_Write+0 CALL _Usart_Write L_scanSend_41: //openKeyboard.c,287 :: bs++; scanSend_bs_L0 <- scanSend_bs_L0 + 1 scanSend_bs_L0 <- scanSend_bs_L0 //openKeyboard.c,288 :: idx++; scanSend_idx_L0 <- scanSend_idx_L0 + 1 scanSend_idx_L0 <- scanSend_idx_L0 //openKeyboard.c,289 :: } L_scanSend_40: //openKeyboard.c,284 :: for (BMask=1; BMask<128; BMask<<=1){ STACK_0 <- 1 _BMask <- _BMask shl STACK_0 [Optimized To Dest] _BMask <- _BMask //openKeyboard.c,289 :: } goto L_scanSend_38 L_scanSend_39: //openKeyboard.c,290 :: sc++; scanSend_sc_L0 <- scanSend_sc_L0 + 1 scanSend_sc_L0 <- scanSend_sc_L0 //openKeyboard.c,291 :: } L_scanSend_37: //openKeyboard.c,281 :: for (AMask=1; AMask<128; AMask<<=1){ STACK_0 <- 1 _AMask <- _AMask shl STACK_0 [Optimized To Dest] _AMask <- _AMask //openKeyboard.c,291 :: } goto L_scanSend_35 L_scanSend_36: end _ps2Send: begin end _setupSendMode: begin //openKeyboard.c,299 :: switch (sm){ goto L_setupSendMode_42 //openKeyboard.c,300 :: case SENDMODE_SCAN : send = &scanSend; L_setupSendMode_44: _send <- 0 //openKeyboard.c,301 :: sendMode = SENDMODE_SCAN; _sendMode <- 1 //openKeyboard.c,302 :: break; goto L_setupSendMode_43 //openKeyboard.c,304 :: case SENDMODE_SERIAL: send = &serialSend; L_setupSendMode_45: _send <- 0 //openKeyboard.c,305 :: sendMode = SENDMODE_SERIAL; _sendMode <- 0 //openKeyboard.c,306 :: break; goto L_setupSendMode_43 //openKeyboard.c,312 :: default : send = &serialSend; L_setupSendMode_46: _send <- 0 //openKeyboard.c,313 :: EEprom_write(CONFIG_SENDMODE, SENDMODE_SERIAL); FARG_EEprom_write+0 <- 2 FARG_EEprom_write+1 <- 0 CALL _EEprom_write //openKeyboard.c,314 :: sendMode = SENDMODE_SERIAL; _sendMode <- 0 //openKeyboard.c,315 :: } goto L_setupSendMode_43 L_setupSendMode_42: if ( FARG_setupSendMode+0 = 1) then goto L_setupSendMode_44 if ( FARG_setupSendMode+0 = 0) then goto L_setupSendMode_45 goto L_setupSendMode_46 L_setupSendMode_43: end _config: begin //openKeyboard.c,319 :: timer = lightFadeOffTime; _timer <- _lightFadeOffTime //openKeyboard.c,321 :: if ((data[1]&4)&&(lightStrenght<0xff)) { // < if () then goto L_config_49 if ( _lightStrenght >= 255) then goto L_config_49 L352_ex_L_config_49: //openKeyboard.c,322 :: lightStrenght++; _lightStrenght <- _lightStrenght + 1 _lightStrenght <- _lightStrenght //openKeyboard.c,323 :: PWM1_Change_Duty(lightStrenght); FARG_PWM1_Change_Duty+0 <- _lightStrenght CALL _PWM1_Change_Duty //openKeyboard.c,324 :: PWM2_Change_Duty(lightStrenght); FARG_PWM2_Change_Duty+0 <- _lightStrenght CALL _PWM2_Change_Duty //openKeyboard.c,325 :: if (lightMode==LIGHTMODE_ALWAYSOFF) lightMode = LIGHTMODE_FADE; if ( _lightMode != 0) then goto L_config_50 _lightMode <- 2 L_config_50: //openKeyboard.c,326 :: } // decrease light strenght L_config_49: //openKeyboard.c,328 :: if ((data[1]&64)&&(lightStrenght>0)) { // > if () then goto L_config_53 if ( _lightStrenght <= 0) then goto L_config_53 L374_ex_L_config_53: //openKeyboard.c,329 :: lightStrenght--; _lightStrenght <- _lightStrenght - 1 _lightStrenght <- _lightStrenght //openKeyboard.c,330 :: PWM1_Change_Duty(lightStrenght); FARG_PWM1_Change_Duty+0 <- _lightStrenght CALL _PWM1_Change_Duty //openKeyboard.c,331 :: PWM2_Change_Duty(lightStrenght); FARG_PWM2_Change_Duty+0 <- _lightStrenght CALL _PWM2_Change_Duty //openKeyboard.c,332 :: if (lightMode==LIGHTMODE_ALWAYSOFF) lightMode = LIGHTMODE_FADE; if ( _lightMode != 0) then goto L_config_54 _lightMode <- 2 L_config_54: //openKeyboard.c,333 :: } // increase light strenght L_config_53: //openKeyboard.c,336 :: if (justPressed[5]&1){ // 1 STACK_0 <- _justPressed+5 & 1 if (!STACK_0) then goto L_config_55 //openKeyboard.c,340 :: setupLightMode(LIGHTMODE_FADE); FARG_setupLightMode+0 <- 2 CALL _setupLightMode //openKeyboard.c,341 :: lightFadeOffTime = 2<<8; _lightFadeOffTime <- 512 //openKeyboard.c,343 :: } L_config_55: //openKeyboard.c,345 :: if (justPressed[5]&2){ // 2 if () then goto L_config_56 //openKeyboard.c,346 :: if (data[1]&1) STACK_0 <- _data+1 & 1 if (STACK_0) then goto L_config_58 //openKeyboard.c,347 :: ;//setupUsart(BAUDRATE_300); //all setupUsart commented out are to save code words space...otherwise i'm running into demo limit L_config_57: //openKeyboard.c,349 :: setupLightMode(LIGHTMODE_FADE); FARG_setupLightMode+0 <- 2 CALL _setupLightMode //openKeyboard.c,350 :: lightFadeOffTime = 4<<8; // more or less 5 sec _lightFadeOffTime <- 1024 //openKeyboard.c,351 :: } L_config_58: //openKeyboard.c,352 :: } L_config_56: //openKeyboard.c,354 :: if (justPressed[5]&4){ // 3 if () then goto L_config_59 //openKeyboard.c,355 :: if (data[1]&1) STACK_0 <- _data+1 & 1 if (STACK_0) then goto L_config_61 //openKeyboard.c,356 :: ;//setupUsart(BAUDRATE_1200); L_config_60: //openKeyboard.c,358 :: setupLightMode(LIGHTMODE_FADE); FARG_setupLightMode+0 <- 2 CALL _setupLightMode //openKeyboard.c,359 :: lightFadeOffTime = 8<<8; _lightFadeOffTime <- 2048 //openKeyboard.c,360 :: } L_config_61: //openKeyboard.c,361 :: } L_config_59: //openKeyboard.c,363 :: if (justPressed[5]&16){ // 4 if () then goto L_config_62 //openKeyboard.c,364 :: if (data[1]&1) STACK_0 <- _data+1 & 1 if (STACK_0) then goto L_config_64 //openKeyboard.c,365 :: ;//setupUsart(BAUDRATE_2400); L_config_63: //openKeyboard.c,367 :: setupLightMode(LIGHTMODE_FADE); FARG_setupLightMode+0 <- 2 CALL _setupLightMode //openKeyboard.c,368 :: lightFadeOffTime = 16<<8; _lightFadeOffTime <- 4096 //openKeyboard.c,369 :: } L_config_64: //openKeyboard.c,370 :: } L_config_62: //openKeyboard.c,372 :: if (justPressed[5]&8){ // 5 if () then goto L_config_65 //openKeyboard.c,373 :: if (data[1]&1) STACK_0 <- _data+1 & 1 if (!STACK_0) then goto L_config_66 //openKeyboard.c,374 :: setupUsart(BAUDRATE_4800); FARG_setupUsart+0 <- 4 CALL _setupUsart goto L_config_67 L_config_66: //openKeyboard.c,376 :: setupLightMode(LIGHTMODE_FADE); FARG_setupLightMode+0 <- 2 CALL _setupLightMode //openKeyboard.c,377 :: lightFadeOffTime = 32<<8; _lightFadeOffTime <- 8192 //openKeyboard.c,378 :: } L_config_67: //openKeyboard.c,379 :: } L_config_65: //openKeyboard.c,381 :: if (justPressed[5]&32){ // 6 if () then goto L_config_68 //openKeyboard.c,382 :: if (data[1]&1) STACK_0 <- _data+1 & 1 if (!STACK_0) then goto L_config_69 //openKeyboard.c,383 :: setupUsart(BAUDRATE_9600); FARG_setupUsart+0 <- 5 CALL _setupUsart goto L_config_70 L_config_69: //openKeyboard.c,385 :: setupLightMode(LIGHTMODE_FADE); FARG_setupLightMode+0 <- 2 CALL _setupLightMode //openKeyboard.c,386 :: lightFadeOffTime = 64<<8; _lightFadeOffTime <- 16384 //openKeyboard.c,387 :: } L_config_70: //openKeyboard.c,388 :: } L_config_68: //openKeyboard.c,390 :: if (justPressed[5]&64){ // 7 if () then goto L_config_71 //openKeyboard.c,391 :: if (data[1]&1) STACK_0 <- _data+1 & 1 if (STACK_0) then goto L_config_73 //openKeyboard.c,392 :: ;//setupUsart(BAUDRATE_19200); L_config_72: //openKeyboard.c,394 :: setupLightMode(LIGHTMODE_FADE); FARG_setupLightMode+0 <- 2 CALL _setupLightMode //openKeyboard.c,395 :: lightFadeOffTime = 128<<8; _lightFadeOffTime <- 32768 //openKeyboard.c,396 :: } L_config_73: //openKeyboard.c,397 :: } L_config_71: //openKeyboard.c,399 :: if (justPressed[0]&1){ // 8 STACK_0 <- _justPressed & 1 if (!STACK_0) then goto L_config_74 //openKeyboard.c,400 :: if (data[1]&1) STACK_0 <- _data+1 & 1 if (STACK_0) then goto L_config_76 //openKeyboard.c,401 :: ;//setupUsart(BAUDRATE_38400); L_config_75: //openKeyboard.c,403 :: setupLightMode(LIGHTMODE_FADE); FARG_setupLightMode+0 <- 2 CALL _setupLightMode //openKeyboard.c,404 :: lightFadeOffTime = 255<<8; _lightFadeOffTime <- 65280 //openKeyboard.c,405 :: } L_config_76: //openKeyboard.c,406 :: } L_config_74: //openKeyboard.c,408 :: if (justPressed[0]&2){ // 9 if () then goto L_config_77 //openKeyboard.c,409 :: if (data[1]&1) STACK_0 <- _data+1 & 1 if (STACK_0) then goto L_config_79 //openKeyboard.c,410 :: ;//setupUsart(BAUDRATE_57600); L_config_78: //openKeyboard.c,412 :: setupLightMode(LIGHTMODE_ALWAYSON); FARG_setupLightMode+0 <- 1 CALL _setupLightMode L_config_79: //openKeyboard.c,413 :: } L_config_77: //openKeyboard.c,415 :: if (justPressed[0]&4){ // 0 if () then goto L_config_80 //openKeyboard.c,416 :: if (data[1]&1) STACK_0 <- _data+1 & 1 if (STACK_0) then goto L_config_82 //openKeyboard.c,417 :: ;//setupUsart(BAUDRATE_115200); L_config_81: //openKeyboard.c,419 :: setupLightMode(LIGHTMODE_ALWAYSOFF); FARG_setupLightMode+0 <- 0 CALL _setupLightMode L_config_82: //openKeyboard.c,420 :: } L_config_80: //openKeyboard.c,422 :: if (justPressed[3]&1){ // A STACK_0 <- _justPressed+3 & 1 if (!STACK_0) then goto L_config_83 //openKeyboard.c,423 :: setupSendMode(SENDMODE_SCAN); FARG_setupSendMode+0 <- 1 CALL _setupSendMode //openKeyboard.c,424 :: } L_config_83: //openKeyboard.c,426 :: if (justPressed[3]&2){ // S if () then goto L_config_84 //openKeyboard.c,427 :: setupSendMode(SENDMODE_SERIAL); FARG_setupSendMode+0 <- 0 CALL _setupSendMode //openKeyboard.c,428 :: } L_config_84: //openKeyboard.c,430 :: Delay_5ms(); CALL _Delay_5ms end _saveConfig: begin //openKeyboard.c,435 :: EEprom_write(CONFIG_BAUDRATE, baudrate); FARG_EEprom_write+0 <- 1 FARG_EEprom_write+1 <- _baudrate CALL _EEprom_write //openKeyboard.c,436 :: EEprom_write(CONFIG_SENDMODE, sendMode); FARG_EEprom_write+0 <- 2 FARG_EEprom_write+1 <- _sendMode CALL _EEprom_write //openKeyboard.c,437 :: EEprom_write(CONFIG_LIGHTMODE, lightMode); FARG_EEprom_write+0 <- 3 FARG_EEprom_write+1 <- _lightMode CALL _EEprom_write //openKeyboard.c,438 :: EEprom_write(CONFIG_LIGHTSTRENGTH, lightStrenght); FARG_EEprom_write+0 <- 4 FARG_EEprom_write+1 <- _lightStrenght CALL _EEprom_write //openKeyboard.c,439 :: EEprom_write(CONFIG_LIGHTFADEOFFTIME, lightFadeOffTime>>8); FARG_EEprom_write+0 <- 5 STACK_4 <- 8 STACK_0 <- _lightFadeOffTime shr STACK_4 FARG_EEprom_write+1 <- STACK_0 CALL _EEprom_write end _interrupt: begin //openKeyboard.c,443 :: if (INTCON.RBIF) { // SOMETHING CHANGED ON PORTB... if (!INTCON) then goto L_interrupt_85 //openKeyboard.c,444 :: exitPowerSave(); // just wakeup and so some scanning... CALL _exitPowerSave //openKeyboard.c,445 :: INTCON.RBIF = 0; // clear intr flag INTCON <- INTCON & -2 //openKeyboard.c,446 :: } L_interrupt_85: end _main: begin //openKeyboard.c,455 :: OSCCON = 0x67; // 01100111 - 0110 stands for 4Mhz internal clock OSCCON <- 103 //openKeyboard.c,457 :: ANSEL = 0; // Configure AN pins as digital I/O ANSEL <- 0 //openKeyboard.c,458 :: ANSELH = 0; ANSELH <- 0 //openKeyboard.c,460 :: PORTA = 0; // init port A PORTA <- 0 //openKeyboard.c,461 :: TRISA = 0; // 1 = input TRISA <- 0 //openKeyboard.c,463 :: PORTB = 0; // initialize PORTB PORTB <- 0 //openKeyboard.c,464 :: TRISB = 255; // designate PORTB as all input TRISB <- 255 //openKeyboard.c,466 :: PORTC = 0; // initialize PORTC PORTC <- 0 //openKeyboard.c,467 :: TRISC = 0; // designate PORTB 0-7 as output TRISC <- 0 //openKeyboard.c,469 :: OPTION_REG = 0; // pull-ups enabled on PORTB....no external pull-downs OPTION_REG <- 0 //openKeyboard.c,474 :: INTCON.RBIE = 0; // disables PORTB on-change interrupt INTCON <- INTCON & -9 //openKeyboard.c,475 :: INTCON.RBIF = 0; // clear PORTB mismatch values INTCON <- INTCON & -2 //openKeyboard.c,477 :: IOCB = 127; // pin 0-6 of PORTB configured to raise interrupt when changed IOCB <- 127 //openKeyboard.c,479 :: PIE1 = 32; // RCIE = 1; enables EUSART on-receive interrupt PIE1 <- 32 //openKeyboard.c,481 :: INTCON.GIE = 1; // Global Interrupt Enable/disable INTCON <- INTCON | 128 //openKeyboard.c,484 :: Delay_ms(20); // required for eeprom_read to work correctly asm: MOVLW 26 asm: MOVWF STACK_11 asm: MOVLW 255 asm: MOVWF STACK_10 asm: DECFSZ STACK_11,F asm: GOTO $+2 asm: GOTO $+4 asm: DECFSZ STACK_10,F asm: GOTO $-1 asm: GOTO $-5 asm: MOVLW 231 asm: MOVWF STACK_10 asm: DECFSZ STACK_10,F asm: GOTO $-1 asm: nop //openKeyboard.c,485 :: sendMode = EEprom_read(CONFIG_SENDMODE); FARG_EEprom_read+0 <- 2 CALL _EEprom_read _sendMode <- STACK_0 //openKeyboard.c,486 :: setupSendMode(sendMode); FARG_setupSendMode+0 <- STACK_0 CALL _setupSendMode //openKeyboard.c,490 :: Delay_ms(20); // required for eeprom_read to work correctly asm: MOVLW 26 asm: MOVWF STACK_11 asm: MOVLW 255 asm: MOVWF STACK_10 asm: DECFSZ STACK_11,F asm: GOTO $+2 asm: GOTO $+4 asm: DECFSZ STACK_10,F asm: GOTO $-1 asm: GOTO $-5 asm: MOVLW 231 asm: MOVWF STACK_10 asm: DECFSZ STACK_10,F asm: GOTO $-1 asm: nop //openKeyboard.c,491 :: baudrate = EEprom_read(CONFIG_BAUDRATE); FARG_EEprom_read+0 <- 1 CALL _EEprom_read _baudrate <- STACK_0 //openKeyboard.c,492 :: setupUsart(baudrate); // Initalize USART (xxxx baud rate, 1 stop bit, no parity...) FARG_setupUsart+0 <- STACK_0 CALL _setupUsart //openKeyboard.c,495 :: Delay_ms(20); // required for eeprom_read to work correctly asm: MOVLW 26 asm: MOVWF STACK_11 asm: MOVLW 255 asm: MOVWF STACK_10 asm: DECFSZ STACK_11,F asm: GOTO $+2 asm: GOTO $+4 asm: DECFSZ STACK_10,F asm: GOTO $-1 asm: GOTO $-5 asm: MOVLW 231 asm: MOVWF STACK_10 asm: DECFSZ STACK_10,F asm: GOTO $-1 asm: nop //openKeyboard.c,496 :: lightFadeOffTime = EEprom_read(CONFIG_LIGHTFADEOFFTIME) << 8; FARG_EEprom_read+0 <- 5 CALL _EEprom_read STACK_1 <- 8 _lightFadeOffTime <- STACK_0 shl STACK_1 _lightFadeOffTime <- _lightFadeOffTime //openKeyboard.c,497 :: lightStrenght = EEprom_read(CONFIG_LIGHTSTRENGTH); FARG_EEprom_read+0 <- 4 CALL _EEprom_read _lightStrenght <- STACK_0 //openKeyboard.c,499 :: Delay_ms(20); // required for eeprom_read to work correctly asm: MOVLW 26 asm: MOVWF STACK_11 asm: MOVLW 255 asm: MOVWF STACK_10 asm: DECFSZ STACK_11,F asm: GOTO $+2 asm: GOTO $+4 asm: DECFSZ STACK_10,F asm: GOTO $-1 asm: GOTO $-5 asm: MOVLW 231 asm: MOVWF STACK_10 asm: DECFSZ STACK_10,F asm: GOTO $-1 asm: nop //openKeyboard.c,500 :: lightMode = EEprom_read(CONFIG_LIGHTMODE); FARG_EEprom_read+0 <- 3 CALL _EEprom_read _lightMode <- STACK_0 //openKeyboard.c,501 :: setUpLightMode(lightMode); FARG_setupLightMode+0 <- STACK_0 CALL _setupLightMode //openKeyboard.c,503 :: do { L_main_86: //openKeyboard.c,505 :: doScan(); CALL _doScan //openKeyboard.c,507 :: if (data[1]&2) { if () then goto L_main_88 //openKeyboard.c,508 :: config(); // people button pressed -> config mode CALL _config //openKeyboard.c,509 :: }else{ goto L_main_89 L_main_88: //openKeyboard.c,510 :: if (oldData[1]&2) saveConfig(); // ppl btn just released... save config if () then goto L_main_90 CALL _saveConfig L_main_90: //openKeyboard.c,511 :: send(); CALL (*_send) //openKeyboard.c,512 :: } L_main_89: //openKeyboard.c,513 :: lightHandler(); CALL (*_lightHandler) //openKeyboard.c,514 :: Delay_80us(); // without this delay, pic hangs on sleep... CALL _Delay_80us //openKeyboard.c,515 :: } while (1); // endless loop goto L_main_86 end table___scanMap: begin //openKeyboard.c,39 :: const char scanMap[50] = { // i could output directly idx, asm: RETLW 8 asm: RETLW 9 asm: RETLW 10 asm: RETLW 40 asm: RETLW 20 asm: RETLW 30 asm: RETLW 47 asm: RETLW 41 asm: RETLW 42 asm: RETLW 43 asm: RETLW 39 asm: RETLW 44 asm: RETLW 38 asm: RETLW 45 asm: RETLW 31 asm: RETLW 32 asm: RETLW 33 asm: RETLW 35 asm: RETLW 34 asm: RETLW 36 asm: RETLW 37 asm: RETLW 21 asm: RETLW 22 asm: RETLW 23 asm: RETLW 25 asm: RETLW 24 asm: RETLW 26 asm: RETLW 27 asm: RETLW 11 asm: RETLW 12 asm: RETLW 13 asm: RETLW 15 asm: RETLW 14 asm: RETLW 16 asm: RETLW 17 asm: RETLW 1 asm: RETLW 2 asm: RETLW 3 asm: RETLW 5 asm: RETLW 4 asm: RETLW 6 asm: RETLW 7 asm: RETLW 28 asm: RETLW 18 asm: RETLW 19 asm: RETLW 0 asm: RETLW 0 asm: RETLW 29 asm: RETLW 46 asm: RETLW 0 end table___serialMap: begin //openKeyboard.c,48 :: const char serialMap[4][49] = { // CHARACTER MAPPING MATRIX for "pure serial mode" asm: RETLW 56 asm: RETLW 57 asm: RETLW 48 asm: RETLW 13 asm: RETLW 112 asm: RETLW 44 asm: RETLW 0 asm: RETLW 0 asm: RETLW 0 asm: RETLW 0 asm: RETLW 46 asm: RETLW 32 asm: RETLW 109 asm: RETLW 0 asm: RETLW 0 asm: RETLW 122 asm: RETLW 120 asm: RETLW 118 asm: RETLW 99 asm: RETLW 98 asm: RETLW 110 asm: RETLW 97 asm: RETLW 115 asm: RETLW 100 asm: RETLW 103 asm: RETLW 102 asm: RETLW 104 asm: RETLW 106 asm: RETLW 113 asm: RETLW 119 asm: RETLW 101 asm: RETLW 116 asm: RETLW 114 asm: RETLW 121 asm: RETLW 117 asm: RETLW 49 asm: RETLW 50 asm: RETLW 51 asm: RETLW 53 asm: RETLW 52 asm: RETLW 54 asm: RETLW 55 asm: RETLW 107 asm: RETLW 105 asm: RETLW 111 asm: RETLW 0 asm: RETLW 0 asm: RETLW 108 asm: RETLW 8 asm: RETLW 56 asm: RETLW 57 asm: RETLW 48 asm: RETLW 13 asm: RETLW 80 asm: RETLW 44 asm: RETLW 0 asm: RETLW 0 asm: RETLW 0 asm: RETLW 0 asm: RETLW 46 asm: RETLW 32 asm: RETLW 77 asm: RETLW 0 asm: RETLW 0 asm: RETLW 90 asm: RETLW 88 asm: RETLW 86 asm: RETLW 67 asm: RETLW 66 asm: RETLW 78 asm: RETLW 65 asm: RETLW 83 asm: RETLW 68 asm: RETLW 71 asm: RETLW 70 asm: RETLW 72 asm: RETLW 74 asm: RETLW 81 asm: RETLW 87 asm: RETLW 69 asm: RETLW 84 asm: RETLW 82 asm: RETLW 89 asm: RETLW 85 asm: RETLW 49 asm: RETLW 50 asm: RETLW 51 asm: RETLW 53 asm: RETLW 52 asm: RETLW 54 asm: RETLW 55 asm: RETLW 75 asm: RETLW 73 asm: RETLW 79 asm: RETLW 0 asm: RETLW 0 asm: RETLW 76 asm: RETLW 8 asm: RETLW 56 asm: RETLW 57 asm: RETLW 48 asm: RETLW 13 asm: RETLW 41 asm: RETLW 58 asm: RETLW 0 asm: RETLW 0 asm: RETLW 0 asm: RETLW 0 asm: RETLW 63 asm: RETLW 32 asm: RETLW 62 asm: RETLW 0 asm: RETLW 0 asm: RETLW 96 asm: RETLW 39 asm: RETLW 45 asm: RETLW 187 asm: RETLW 124 asm: RETLW 60 asm: RETLW 126 asm: RETLW 154 asm: RETLW 123 asm: RETLW 168 asm: RETLW 125 asm: RETLW 47 asm: RETLW 39 asm: RETLW 33 asm: RETLW 64 asm: RETLW 128 asm: RETLW 37 asm: RETLW 35 asm: RETLW 94 asm: RETLW 38 asm: RETLW 49 asm: RETLW 50 asm: RETLW 51 asm: RETLW 53 asm: RETLW 52 asm: RETLW 54 asm: RETLW 55 asm: RETLW 91 asm: RETLW 42 asm: RETLW 40 asm: RETLW 0 asm: RETLW 0 asm: RETLW 93 asm: RETLW 8 asm: RETLW 56 asm: RETLW 57 asm: RETLW 48 asm: RETLW 13 asm: RETLW 61 asm: RETLW 59 asm: RETLW 0 asm: RETLW 0 asm: RETLW 0 asm: RETLW 0 asm: RETLW 191 asm: RETLW 32 asm: RETLW 181 asm: RETLW 0 asm: RETLW 0 asm: RETLW 230 asm: RETLW 156 asm: RETLW 95 asm: RETLW 231 asm: RETLW 43 asm: RETLW 241 asm: RETLW 225 asm: RETLW 223 asm: RETLW 240 asm: RETLW 165 asm: RETLW 163 asm: RETLW 92 asm: RETLW 34 asm: RETLW 161 asm: RETLW 229 asm: RETLW 232 asm: RETLW 254 asm: RETLW 36 asm: RETLW 253 asm: RETLW 249 asm: RETLW 49 asm: RETLW 50 asm: RETLW 51 asm: RETLW 53 asm: RETLW 52 asm: RETLW 54 asm: RETLW 55 asm: RETLW 169 asm: RETLW 236 asm: RETLW 242 asm: RETLW 0 asm: RETLW 0 asm: RETLW 248 asm: RETLW 8 end GlobalIniopenKeyboard: begin end