Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define LED_1 LATA.F0
- #define LED_2 LATA.F1
- #define TOUCH_KEY_CLICK_INPUT_0 PORTB.F2
- #define TOUCH_KEY_CLICK_INPUT_1 PORTA.F2
- #define TOUCH_KEY_CLICK_INPUT_2 PORTC.F6
- #define TOUCH_KEY_CLICK_INPUT_3 PORTD.F4
- #define EVERLOOP while (1)
- #define STATE_LOW 0
- #define STATE_HIGH 1
- #define PUSH_BUTTON_1_2_PRESSED 0
- #define PUSH_BUTTON_1_PRESSED 4
- #define PUSH_BUTTON_2_PRESSED 8
- #define TOUCH_KEY_CLICK_C_PRESSED 4
- #define TOUCH_KEY_CLICK_D_PRESSED 8
- #define TOUCH_KEY_CLICK_C_D_PRESSED 12
- #define DEFAULT_DELAY_MS 100
- void initMCU() {
- ADCON0 = 0;
- ADCON1 = 0;
- LATA = 0;
- LATB = 0;
- LATC = 0;
- LATD = 0;
- PORTA = 0;
- PORTB = 0;
- PORTC = 0;
- PORTD = 0;
- TRISA.F0 = 0;
- TRISA.F1 = 0;
- TRISD.F3 = 1;
- TRISD.F2 = 1;
- TOUCH_KEY_CLICK_INPUT_0 = 1;
- TOUCH_KEY_CLICK_INPUT_1 = 1;
- TOUCH_KEY_CLICK_INPUT_2 = 1;
- TOUCH_KEY_CLICK_INPUT_3 = 1;
- }
- char getTouchKeyClickReading() {
- char reading;
- reading.B0 = TOUCH_KEY_CLICK_INPUT_0;
- reading.B1 = TOUCH_KEY_CLICK_INPUT_1;
- reading.B2 = TOUCH_KEY_CLICK_INPUT_2;
- reading.B3 = TOUCH_KEY_CLICK_INPUT_3;
- return reading;
- }
- void main() {
- initMCU();
- EVERLOOP {
- switch (getTouchKeyClickReading()) {
- case TOUCH_KEY_CLICK_C_PRESSED:
- LED_1 = LED_1 ? 0 : 1;
- delay_ms(DEFAULT_DELAY_MS);
- break;
- case TOUCH_KEY_CLICK_D_PRESSED:
- LED_2 = LED_2 ? 0 : 1;
- delay_ms(DEFAULT_DELAY_MS);
- break;
- case TOUCH_KEY_CLICK_C_D_PRESSED:
- if (LED_1 == STATE_LOW) {
- LED_1 = STATE_HIGH;
- }
- if (LED_2 == STATE_HIGH) {
- LED_2 = STATE_LOW;
- }
- delay_ms(DEFAULT_DELAY_MS / 2);
- if (LED_1 == STATE_HIGH) {
- LED_1 = STATE_LOW;
- }
- if (LED_2 == STATE_LOW) {
- LED_2 = STATE_HIGH;
- }
- delay_ms(DEFAULT_DELAY_MS / 2);
- break;
- default:
- if (LED_1 == STATE_HIGH && PORTD != PUSH_BUTTON_1_PRESSED) {
- LED_1 = STATE_LOW;
- }
- if (LED_2 == STATE_HIGH && PORTD != PUSH_BUTTON_2_PRESSED) {
- LED_2 = STATE_LOW;
- }
- break;
- }
- switch (PORTD) {
- case PUSH_BUTTON_1_2_PRESSED:
- if (getTouchKeyClickReading() != TOUCH_KEY_CLICK_C_D_PRESSED) {
- if (LED_1 == STATE_LOW) {
- LED_1 = STATE_HIGH;
- }
- if (LED_2 == STATE_LOW) {
- LED_2 = STATE_HIGH;
- }
- }
- break;
- case PUSH_BUTTON_1_PRESSED:
- if (getTouchKeyClickReading() != TOUCH_KEY_CLICK_C_PRESSED) {
- if (LED_1 == STATE_LOW) {
- LED_1 = STATE_HIGH;
- }
- }
- break;
- case PUSH_BUTTON_2_PRESSED:
- if (getTouchKeyClickReading() != TOUCH_KEY_CLICK_D_PRESSED) {
- if (LED_2 == STATE_LOW) {
- LED_2 = STATE_HIGH;
- }
- }
- break;
- default:
- if (LED_1 == STATE_HIGH &&
- getTouchKeyClickReading() != TOUCH_KEY_CLICK_C_PRESSED) {
- LED_1 = STATE_LOW;
- }
- if (LED_2 == STATE_HIGH &&
- getTouchKeyClickReading() != TOUCH_KEY_CLICK_D_PRESSED) {
- LED_2 = STATE_LOW;
- }
- break;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement