Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define BUTTON_1_2_PRESSED 0
- #define BUTTON_1_PRESSED 4
- #define BUTTON_2_PRESSED 8
- #define LED_1 LATA.F0
- #define LED_2 LATA.F1
- #define EVERLOOP while (1)
- #define FALSE 0
- #define TRUE 1
- #define STATE_LOW 0
- #define STATE_HIGH 1
- unsigned int _FreqLed1;
- unsigned int _FreqLed2;
- unsigned int _DelayLed1;
- unsigned int _DelayLed2;
- unsigned int _DurationLed1;
- unsigned int _DurationLed2;
- unsigned int _ButtonPressed1;
- unsigned int _ButtonPressed2;
- void initMCU() {
- ANCON0 = ANCON1 = 0;
- TRISA = 0;
- TRISD = 12;
- LATA = LATD = 0;
- PORTA = PORTD = 0;
- _FreqLed1 = 1;
- _FreqLed2 = 1;
- _DurationLed1 = 2000;
- _DurationLed2 = 2000;
- _DelayLed1 = _DurationLed1;
- _DelayLed2 = _DurationLed2;
- }
- void main() {
- initMCU();
- EVERLOOP {
- delay_ms(1);
- if (_FreqLed1 != 0) {
- _DelayLed1--;
- if (_DelayLed1 == 0) {
- LED_1 = ~LED_1;
- _DelayLed1 = _DurationLed1;
- }
- }
- if (_FreqLed2 != 0) {
- _DelayLed2--;
- if (_DelayLed2 == 0) {
- LED_2 = ~LED_2;
- _DelayLed2 = _DurationLed2;
- }
- }
- switch (PORTD) {
- case BUTTON_1_PRESSED:
- if (_ButtonPressed1 == FALSE) {
- _ButtonPressed1 = TRUE;
- LED_1 = ~LED_1;
- if (_FreqLed1 == 5) {
- _FreqLed1 = 0;
- } else {
- _FreqLed1++;
- }
- switch (_FreqLed1) {
- case 0:
- LED_1 = STATE_LOW;
- _DurationLed1 = 0;
- break;
- case 1:
- _DurationLed1 = 2000;
- break;
- case 2:
- _DurationLed1 = 1500;
- break;
- case 3:
- _DurationLed1 = 1000;
- break;
- case 4:
- _DurationLed1 = 750;
- break;
- case 5:
- _DurationLed1 = 500;
- break;
- }
- _DelayLed1 = _DurationLed1;
- }
- break;
- case BUTTON_2_PRESSED:
- if (_ButtonPressed2 == FALSE) {
- _ButtonPressed2 = TRUE;
- LED_2 = ~LED_2;
- if (_FreqLed2 == 5) {
- _FreqLed2 = 0;
- } else {
- _FreqLed2++;
- }
- switch (_FreqLed2) {
- case 0:
- LED_2 = STATE_LOW;
- _DurationLed2 = 0;
- break;
- case 1:
- _DurationLed2 = 2000;
- break;
- case 2:
- _DurationLed2 = 1500;
- break;
- case 3:
- _DurationLed2 = 1000;
- break;
- case 4:
- _DurationLed2 = 750;
- break;
- case 5:
- _DurationLed2 = 500;
- break;
- }
- _DelayLed2 = _DurationLed2;
- }
- break;
- case 12:
- _ButtonPressed1 = FALSE;
- _ButtonPressed2 = FALSE;
- break;
- default:
- break;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement