STC15W408AS library 0.18.0
Loading...
Searching...
No Matches
interrupt.h
Go to the documentation of this file.
1#ifndef STC15_INTERRUPTSH
2#define STC15_INTERRUPTSH
3
4#include<bits.h>
5
76
77
83#define INTERRUPT_INT0 0
84
90#define INTERRUPT_INT1 2
91
97#define INTERRUPT_INT2 10
98
104#define INTERRUPT_INT3 11
105
111#define INTERRUPT_INT4 16
112
113
119#define INTERRUPT_COUNTER0 1
120
126#define INTERRUPT_TIMER0 1
127
133#define INTERRUPT_COUNTER1 3
134
140#define INTERRUPT_TIMER1 3
141
147#define INTERRUPT_COUNTER2 12
148
154#define INTERRUPT_TIMER2 12
155
161#define INTERRUPT_COUNTER3 19
162
168#define INTERRUPT_TIMER3 19
169
175#define INTERRUPT_COUNTER4 20
176
182#define INTERRUPT_TIMER4 20
183
189#define INTERRUPT_UART1 4
190
196#define INTERRUPT_UART2 8
197
203#define INTERRUPT_UART3 17
204
210#define INTERRUPT_UART4 18
211
217#define INTERRUPT_ADC 5
218
224#define INTERRUPT_LVD 6
225
231#define INTERRUPT_PCA 7
232
238#define INTERRUPT_SPI 9
239
245#define INTERRUPT_PWM 13
246
252#define INTERRUPT_CMPR 21
253
255
261typedef enum
262{
264 LOW = 0,
266 HIGH = 1
268
281
296
297
298
303
313#define enable_mcu_interrupts() (EA = 1)
314
324#define disable_mcu_interrupts() (EA = 0)
325
333#define is_mcu_interrupts_enabled() (EA == 1)
334
342#define enable_low_voltage_interrupt() (ELVD = 1)
343
351#define disable_low_voltage_interrupt() (ELVD = 0)
352
361#define is_low_voltage_interrupt_enabled() (ELVD == 1 && is_mcu_interrupts_enabled())
362
370#define enable_adc_interrupt() (EADC = 1)
371
379#define disable_adc_interrupt() (EADC = 0)
380
389#define is_adc_interrupt_enabled() (EADC == 1 && is_mcu_interrupts_enabled())
390
398#define enable_uart1_interrupt() (ES = 1)
399
407#define disable_uart1_interrupt() (ES = 0)
408
417#define is_uart1_interrupt_enabled() (ES == 1 && is_mcu_interrupts_enabled())
418
426#define enable_int0_interrupt() (EX0 = 1)
427
435#define disable_int0_interrupt() (EX0 = 0)
436
445#define is_int0_interrupt_enabled() (EX0 == 1 && is_mcu_interrupts_enabled())
446
454#define enable_int1_interrupt() (EX1 = 1)
455
463#define disable_int1_interrupt() (EX1 = 0)
464
473#define is_int1_interrupt_enabled() (EX1 == 1 && is_mcu_interrupts_enabled())
474
482#define enable_int2_interrupt() (bit_set(INT_CLKO, SBIT4))
483
491#define disable_int2_interrupt() (bit_clr(INT_CLKO, SBIT4))
492
501#define is_int2_interrupt_enabled() (test_if_bit_set(INT_CLKO, SBIT4) && is_mcu_interrupts_enabled())
502
510#define enable_int3_interrupt() (bit_set(INT_CLKO, SBIT5))
511
519#define disable_int3_interrupt() (bit_clr(INT_CLKO, SBIT5))
520
529#define is_int3_interrupt_enabled() (test_if_bit_set(INT_CLKO, SBIT5) && is_mcu_interrupts_enabled())
530
538#define enable_int4_interrupt() (bit_set(INT_CLKO, SBIT6))
539
547#define disable_int4_interrupt() (bit_clr(INT_CLKO, SBIT6))
548
557#define is_int4_interrupt_enable() (test_if_bit_set(INT_CLKO, SBIT6) && is_mcu_interrupts_enabled())
558
566#define enable_timer0_interrupt() (ET0 = 1)
567
575#define disable_timer0_interrupt() (ET0 = 0)
576
585#define is_timer0_interrupt_enabled() (ET0 == 1 && is_mcu_interrupts_enabled())
586
594#define enable_timer2_interrupt() (bit_set(IE2, SBIT2))
595
603#define disable_timer2_interrupt() (bit_clr(IE2, SBIT2))
604
613#define is_timer2_interrupt_enabled() (test_if_bit_set(IE2, SBIT2) && is_mcu_interrupts_enabled())
614
622#define enable_spi_interrupt() (bit_set(IE2, SBIT1))
623
631#define disable_spi_interrupt() (bit_clr(IE2, SBIT1))
632
641#define is_spi_interrupt_enabled() (test_if_bit_set(IE2, SBIT1) && is_mcu_interrupts_enabled())
642
653#define enable_comparator_interrupt(trigger) \
654do { \
655 if (trigger == LOW_TO_HIGH || trigger == ANY_EDGE) \
656 { \
657 bit_set(CMPCR1, SBIT5); \
658 } \
659 if (trigger == HIGH_TO_LOW || trigger == ANY_EDGE) \
660 { \
661 bit_set(CMPCR1, SBIT4); \
662 } \
663} while(0)
664
672#define disable_comparator_interrupt() \
673do { \
674 bit_clr(CMPCR1, SBIT5); \
675 bit_clr(CMPCR1, SBIT4); \
676} while(0)
677
686#define is_comparator_interrupt_enabled() ((test_if_bit_set(CMPCR1, SBIT4) || test_if_bit_set(CMPCR1, SBIT5)) && is_mcu_interrupts_enabled())
687
689
690
695
696
704#define set_pca_interrupt_priority(priority) (PPCA = priority)
705
713#define get_pca_interrupt_priority() (PPCA)
714
722#define set_low_voltage_interrupt_priority(priority) (PLVD = priority)
723
731#define get_low_voltage_interrupt_priority() (PVLD)
732
740#define set_adc_interrupt_priority(priority) (PADC = priority)
741
749#define get_adc_interrupt_priority() (PADC)
750
757#define set_uart1_interrupt_priority(priority) (PS = priority)
758
766#define get_uart1_interrupt_priority() (PS)
767
774#define set_int0_interrupt_priority(priority) (PX0 = priority)
775
783#define get_int0_interrupt_priority() (PX0)
784
792#define set_int1_interrupt_priority(priority) (PX1 = priority)
793
801#define get_int1_interrupt_priority() (PX1)
802
810#define set_timer0_interrupt_priority(priority) (PT0 = priority)
811
819#define get_timer0_interrupt_priority() (PT0)
820
828#define set_spi_interrupt_priority(priority) (priority == HIGH ? bit_set(IP2, SBIT1) : bit_clr(IP2, SBIT1))
829
837#define get_spi_interrupt_priority() (test_if_bit_set(IP2, SBIT1))
838
840
841
846
854#define set_int0_interrupt_trigger(trigger) ( IT0 = trigger)
855
864#define get_int0_interrupt_trigger() (IT0)
865
873#define set_int1_interrupt_trigger(trigger) (IT1 = trigger)
874
883#define get_int1_interrupt_trigger() (IT1)
884
886
887#endif
external_interrupt_trigger_t
interrupt (INT0, INT1) trigger enumeration
Definition interrupt.h:275
interrupt_priority_t
priority enumeration
Definition interrupt.h:262
comparator_interrupt_trigger_t
Comparator interrupt trigger enumeration.
Definition interrupt.h:288
@ ONLY_FALLING_EDGE
Generate interrupt only on falling edge.
Definition interrupt.h:279
@ RAISING_OR_FALLING_EDGE
Generate interrupt on both raise and falling edges.
Definition interrupt.h:277
@ HIGH
High priority.
Definition interrupt.h:266
@ LOW
Low priority.
Definition interrupt.h:264
@ HIGH_TO_LOW
High to low edge trigger.
Definition interrupt.h:292
@ LOW_TO_HIGH
Low to high edge trigger.
Definition interrupt.h:290
@ ANY_EDGE
Any edge trigger.
Definition interrupt.h:294