1 | typedef volatile uint8_t register8_t;
|
2 |
|
3 | typedef struct PORT_struct
|
4 | {
|
5 | register8_t DIR; /* I/O Port Data Direction */
|
6 | register8_t DIRSET; /* I/O Port Data Direction Set */
|
7 | register8_t DIRCLR; /* I/O Port Data Direction Clear */
|
8 | register8_t DIRTGL; /* I/O Port Data Direction Toggle */
|
9 | register8_t OUT; /* I/O Port Output */
|
10 | register8_t OUTSET; /* I/O Port Output Set */
|
11 | register8_t OUTCLR; /* I/O Port Output Clear */
|
12 | register8_t OUTTGL; /* I/O Port Output Toggle */
|
13 | register8_t IN; /* I/O port Input */
|
14 | register8_t INTCTRL; /* Interrupt Control Register */
|
15 | register8_t INT0MASK; /* Port Interrupt 0 Mask */
|
16 | register8_t INT1MASK; /* Port Interrupt 1 Mask */
|
17 | register8_t INTFLAGS; /* Interrupt Flag Register */
|
18 | register8_t reserved_0x0D;
|
19 | register8_t REMAP; /* I/O Port Pin Remap Register */
|
20 | register8_t reserved_0x0F;
|
21 | register8_t PIN0CTRL; /* Pin 0 Control Register */
|
22 | register8_t PIN1CTRL; /* Pin 1 Control Register */
|
23 | register8_t PIN2CTRL; /* Pin 2 Control Register */
|
24 | register8_t PIN3CTRL; /* Pin 3 Control Register */
|
25 | register8_t PIN4CTRL; /* Pin 4 Control Register */
|
26 | register8_t PIN5CTRL; /* Pin 5 Control Register */
|
27 | register8_t PIN6CTRL; /* Pin 6 Control Register */
|
28 | register8_t PIN7CTRL; /* Pin 7 Control Register */
|
29 | } PORT_t;
|
30 |
|
31 | #define PORTA (*(PORT_t *) 0x0600) /* I/O Ports */
|
32 | #define PORTB (*(PORT_t *) 0x0620) /* I/O Ports */
|
33 | #define PORTC (*(PORT_t *) 0x0640) /* I/O Ports */
|
34 | #define PORTD (*(PORT_t *) 0x0660) /* I/O Ports */
|
35 | #define PORTE (*(PORT_t *) 0x0680) /* I/O Ports */
|
36 | #define PORTR (*(PORT_t *) 0x07E0) /* I/O Ports */
|