powerpic

Replacement board for a Casio CA-53W

/** @file pins.h
 * General I/O Pin driver.
 * This driver handles setting the direction of, and reading/writing to pins.
*/


#ifndef _pins_h_
#define _pins_h_


void    pins_init (void);


// Direction Control
//

/** Set pin to function as output. */
#define pin_set_output(tris, pin)   ((tris) &= ~(1 << (pin)))

/** Set pin to function as input. */
#define pin_set_input(tris, pin)    ((tris) |= (1 << (pin)))

/** Set pin mask to function as output. */
#define pin_mask_output(tris, mask) ((tris) &= ~(mask))

/** Set pin mask to function as input. */
#define pin_mask_input(tris, mask) ((tris) |= (mask))

// Digital Functionality
//

/** Read current pin level. */
#define pin_get_level(port, pin)        (port & (1 << pin)) >> pin

/** Set pin level to value. */
#define pin_set_level(port, pin, level) \
    port = (unsigned char)((port & ~(1 << pin)) | (level << pin))

/** Set pin level high. */
#define pin_set_high(lat, pin)         (lat) |= (1 << pin)

/** Set pin level low */
#define pin_set_low(lat, pin)          (lat) &= ~(1 << pin)

/** Set pin mask level high. */
#define pin_mask_high(lat, mask)        ((lat) |= (mask))

/** Set pin mask level low. */
#define pin_mask_low(lat, mask)        ((lat) &= ~(mask))


// Pull-Up Control
//

/** Enable pull-up on pin. */
#define pin_enable_pullup(wpu, pin)     (wpu |= (1 << (pin)))

/** Disable pull-up on pin. */
#define pin_disable_pullup(wpu, pin)    (wpu &= ~(1 << (pin)))

/** Enable pull-up on pin mask. */
#define pin_mask_pullup(wpu, mask)      ((wpu) |= (mask))


// Analog Functionality Control
//
#define pin_enable_analog(ansel, pin)   (ansel |= (1 << (pin)))
#define pin_disable_analog(ansel, pin)  (ansel &= ~(1 << (pin)))

#endif

// EOF //