38 #pragma message ( "avr_gpio.h included" ) 44 #define GPIO_MODE_OUTPUT 0x00 45 #define GPIO_MODE_TRI_STATE 0x02 46 #define GPIO_MODE_INPUT_WITH_PULL_UP 0x01 47 #define GPIO_MODE_INPUT_WITHOUT_PULL_UP 0x02 205 inline void GPIO_DisableGlobalPullUp();
206 inline void GPIO_EnableGlobalPullUp();
213 inline void GPIO_Init(
volatile uint8_t* Port,uint8_t Pin,uint8_t PinMode);
214 inline void GPIO_InitPin(uint8_t Pin,uint8_t PinMode);
215 inline void GPIO_DeInit(
volatile uint8_t* Port,uint8_t Pin);
216 inline void GPIO_DeInitPin(uint8_t Pin);
223 inline uint8_t GPIO_Read(
volatile uint8_t* Port, uint8_t Pin);
224 inline uint8_t GPIO_ReadPin(uint8_t Pin);
225 inline void GPIO_Write(
volatile uint8_t* Port, uint8_t Pin, uint8_t PinState);
226 inline void GPIO_Toggle(
volatile uint8_t* Port, uint8_t Pin);
227 inline void GPIO_WritePinLow(uint8_t Pin);
228 inline void GPIO_WritePinHigh(uint8_t Pin);
229 inline void GPIO_WritePinToggle(uint8_t Pin);
237 inline void GPIO_DisableGlobalPullUp()
247 inline void GPIO_EnableGlobalPullUp()
260 inline void GPIO_Init(
volatile uint8_t* Port, uint8_t Pin, uint8_t PinMode)
262 if (PinMode == GPIO_MODE_OUTPUT)
266 else if(PinMode == GPIO_MODE_INPUT_WITH_PULL_UP)
268 *(Port-0x01) &= ~(Pin);
270 GPIO_EnableGlobalPullUp();
272 else if(PinMode == GPIO_MODE_INPUT_WITHOUT_PULL_UP)
274 *(Port-0x01) &= ~(Pin);
286 inline void GPIO_InitPin(uint8_t Pin, uint8_t PinMode)
290 GPIO_Init(&PORTD,(1<<Pin),PinMode);
294 GPIO_Init(&PORTB,(1<<(Pin - 8)),PinMode);
298 GPIO_Init(&PORTC,(1<<(Pin - 14)),PinMode);
311 *(Port-0x01) &= ~(Pin);
312 *(Port-0x02) &= ~(Pin);
323 inline void GPIO_DeInitPin(uint8_t Pin)
327 GPIO_DeInit(&PORTD,(1<<Pin));
331 GPIO_DeInit(&PORTB,(1<<(Pin - 8)));
335 GPIO_DeInit(&PORTC,(1<<(Pin - 14)));
346 inline uint8_t GPIO_Read(
volatile uint8_t* Port, uint8_t Pin)
348 return *(Port - 0x02) & (Pin);
359 inline void GPIO_Write(
volatile uint8_t* Port, uint8_t Pin, uint8_t PinState)
361 if (PinState == HIGH)
365 else if (PinState == LOW)
369 else if (PinState == TOGGLE)
382 inline void GPIO_Toggle(
volatile uint8_t* Port, uint8_t Pin)
395 inline uint8_t GPIO_ReadPin(uint8_t Pin)
399 return GPIO_Read(&PORTD,(1<<Pin));
403 return GPIO_Read(&PORTB,(1<<(Pin - 8)));
407 return GPIO_Read(&PORTC,(1<<(Pin - 14)));
417 inline void GPIO_WritePinHigh(uint8_t Pin)
421 GPIO_Write(&PORTD,(1<<Pin),HIGH);
425 GPIO_Write(&PORTB,(1<<(Pin - 8)),HIGH);
429 GPIO_Write(&PORTC,(1<<(Pin - 14)),HIGH);
439 inline void GPIO_WritePinLow(uint8_t Pin)
443 GPIO_Write(&PORTD,(1<<Pin),LOW);
447 GPIO_Write(&PORTB,(1<<(Pin - 8)),LOW);
451 GPIO_Write(&PORTC,(1<<(Pin - 14)),LOW);
461 inline void GPIO_WritePinToggle(uint8_t Pin)
465 GPIO_Write(&PORTD,(1<<Pin),TOGGLE);
469 GPIO_Write(&PORTB,(1<<(Pin - 8)),TOGGLE);
473 GPIO_Write(&PORTC,(1<<(Pin - 14)),TOGGLE);
إرسال تعليق