📄 main887.h
字号:
// main.h
// Tom Perme
// Microchip
// 2007
/** Part Definitions **/
#include <pic.h>
/** Defines **/
#define CLEAR 0 // Bit Clear/Set Definitions
#define SET 1
#define DEVICE_ADDR 0x42 // Device's I2C Address
#define NUM_BTTNS 17 // Number of capacitive buttons
#define AVG_DELAY 4
#define ON 0 // LED ON Definition (Active Low)
#define OFF 1 // LED OFF Definition (Active Low)
/** Declare Pinouts **/
// I2C Comms.
#define TRISSDA TRISC4
#define TRISSCL TRISC3
// Buzzer
#define BUZZER RC2 // Buzzer's pin
#define TRISBUZZER TRISC2 // .. and tris
#define BUZZON 0
#define BUZZOFF 1 // P-FET configuration
// Mux Driving Pins
#define CTL_PORT PORTB // Port with mux controls on it.
#define MUXSEL RB3 // Mux Selector Pin Enables correct mux
#define TRISMUXSEL TRISB3
#define TRISS2 TRISB2 // S<2:0> Select channel on enabled mux
#define TRISS1 TRISB1
#define TRISS0 TRISB0
// Keypad
#define K_LED0 RE2
#define K_LED1 RD0
#define K_LED2 RA6
#define K_LED3 RA7
#define K_LED4 RD1
#define K_LED5 RC1
#define K_LED6 RE0
#define K_LED7 RD2
#define K_LED8 RD3
#define K_LED9 RE1
// Slider
#define S_LED1 RD6
#define S_LED2 RD5
#define S_LED3 RD4
#define S_LED4 RC7
#define S_LED5 RC6
#define S_LED6 RC5
// Index Definitions (Important!! to make easier to port to another project in conjunction with good Button.BTN names)
#define i0 1
#define i1 2
#define i2 3
#define i3 4
#define i4 5
#define i5 6
#define i6 7
#define i7 8
#define i8 9
#define i9 10
#define iSL1 11
#define iSL2 12
#define iSL3 13
#define iSL4 14
#define iSL5 15
#define iSL6 16
#define iPWR 0
//////////////////////////////////////////////////////////////////////
#ifndef TYPEDEFS_MAIN887_H
#define TYPEDEFS_MAIN887_H
// To make global variables, must make typedefs...
typedef struct {
char BTN0:1; // { byte 0 }
char BTN1:1;
char BTN2:1;
char BTN3:1;
char BTN4:1;
char BTN5:1;
char BTN6:1;
char BTN7:1;
char BTN8:1; // { byte 2 }
char BTN9:1;
char SLIDER1:1;
char SLIDER2:1;
char SLIDER3:1;
char SLIDER4:1;
char SLIDER5:1;
char SLIDER6:1;
char PWR:1; // { byte 3 }
} BButtons;
typedef struct {
char SSPBF:1; // Flag if SSP Module is busy (Comm in progress)
char SLEEP:1; // Flag to indicate sleep operation
char BUZZDONE:1; // Flag to indicate if a buzz is needed or completed
} FFlags;
#endif /* TYPEDEFS_MAIN887_H */
//////////////////////////////////////////////////////////////////////
// I2C Communications
extern unsigned char ByteCount;
extern unsigned int TempInt;
extern unsigned char SSPCommand;
extern unsigned char SSPIndex;
extern unsigned char SSPSize;
extern unsigned char IndexCount;
extern unsigned char AvgIndex;
extern unsigned char SliderIndex;
// Flag variable with SSP Busy Flag bit.
extern FFlags Flags;
// Flags for Capacitive Sensing, BTNx indicates a button down.
extern BButtons Buttons;
extern bank2 unsigned int RAW [NUM_BTTNS];
extern bank2 unsigned int AVERAGE[NUM_BTTNS]; // Can't fit all in one bank. Only 96 bytes per Banks 2|3, (Max 24 bttns)
extern bank3 unsigned int GUARD [NUM_BTTNS];
extern bank3 unsigned int TRIP [NUM_BTTNS]; // "
extern unsigned char FIRST; // first variable to 'discard' first N samples
extern unsigned char INDEX; // Index of what button is being checked.
extern unsigned int VALUE; // current button value
extern unsigned int BIGVAL; // current button bigval
extern unsigned int SMALLAVG; // current button smallavg
// Helper variables
extern unsigned int j; // Loop variable, not for use inside ISR.
#ifndef MAIN887_H // Things to do only once
#define MAIN887_H
#endif /* MAIN887_H */
/* Prototypes */
// Main file prototypes
void INIT(void);
void CapInit(void);
void RestartTimers(void);
void SetNextChannel(void);
void SetChannel(char index);
void CapISR(void);
void ShutdownWheel(void);
void WakeupWheel(void);
void interrupt isr(void); // Declare functions called from isr above for best context saving.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -