⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main887.h

📁 用PIC16F887做的4个触摸按键的例程
💻 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 + -