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

📄 hvwdefines.h

📁 Asuro小车示例源码 L-R tracksensor controls L-R breakled
💻 H
📖 第 1 页 / 共 2 页
字号:
#define	PB2_L		(0x04<<8)
#define	PB2_H		(0x04)
#define	PB1_L		(0x02<<8)
#define	PB1_H		(0x02)
#define	PB0_L		(0x01<<8)
#define	PB0_H		(0x01)

#define PB7_I     	PB7_L
#define PB7_O     	PB7_H
#define PB6_I     	PB6_L
#define PB6_O     	PB6_H
#define PB5_I     	PB5_L
#define PB5_O     	PB5_H
#define PB4_I     	PB4_L
#define PB4_O     	PB4_H
#define PB3_I     	PB3_L
#define PB3_O     	PB3_H
#define PB2_I     	PB2_L
#define PB2_O     	PB2_H
#define PB1_I     	PB1_L
#define PB1_O     	PB1_H
#define PB0_I     	PB0_L
#define PB0_O     	PB0_H

#define REV_RGT_L	PB5_L	//the WHEEL (not the ENGINE) is turning reverse if REV signal is LOW
#define REV_RGT_H	PB5_H
#define FWD_RGT_L	PB4_L
#define FWD_RGT_H	PB4_H
#define IR_TXD1_L	PB3_L
#define IR_TXD1_H	PB3_H
#define SPD_RGT_L	PB2_L
#define SPD_RGT_H	PB2_H
#define SPD_LFT_L	PB1_L
#define SPD_LFT_H	PB1_H
#define SLD_GRN_L	PB0_L
#define SLD_GRN_H	PB0_H

#define REV_RGT_I	PB5_L
#define REV_RGT_O	PB5_H
#define FWD_RGT_I	PB4_L
#define FWD_RGT_O	PB4_H
#define IR_TXD1_I	PB3_L
#define IR_TXD1_O	PB3_H
#define SPD_RGT_I	PB2_L
#define SPD_RGT_O	PB2_H
#define SPD_LFT_I	PB1_L
#define SPD_LFT_O	PB1_H
#define SLD_GRN_I	PB0_L
#define SLD_GRN_O	PB0_H

#define REV_RGT_N	PB5_L
#define REV_RGT_P	PB5_H
#define FWD_RGT_N	PB4_L
#define FWD_RGT_P	PB4_H
#define IR_TXD1_N	PB3_L
#define IR_TXD1_P	PB3_H
#define SPD_RGT_N	PB2_L
#define SPD_RGT_P	PB2_H
#define SPD_LFT_N	PB1_L
#define SPD_LFT_P	PB1_H
#define SLD_GRN_N	PB0_L
#define SLD_GRN_P	PB0_H

#define	OC2_I		PB3_L
#define	OC2_O		PB3_H
#define	OC1B_L		PB2_L
#define	OC1B_H		PB2_H
#define	OC1A_L		PB1_L
#define	OC1A_H		PB1_H

//PORTC
//+-------+-------+-------+-------+-------+-------+-------+-------+
//|  PC7  |  PC6  |  PC5  |  PC4  |  PC3  |  PC2  |  PC1  |  PC0  | port name
//+-------+-------+-------+-------+-------+-------+-------+-------+
//|   7   |   6   |   5   |   4   |   3   |    2  |    1  |   0   | bit number
//+-------+-------+-------+-------+-------+-------+-------+-------+
//|   -   |   1   |  28   |  27   |  26   |   25  |   24  |  23   | pin number
//+-------+-------+-------+-------+-------+-------+-------+-------+
//|   -   | RESET |VPL_SNS|SWI_JNC|TRS_LFT|TRS_RGT|BOD_LFT|BOD_RGT| signal name (hvw)
//+-------+-------+-------+-------+-------+-------+-------+-------+
#define	PC7_L		(0x80<<8)
#define	PC7_H		(0x80)
#define	PC6_L		(0x40<<8)
#define	PC6_H		(0x40)
#define	PC5_L		(0x20<<8)
#define	PC5_H		(0x20)
#define	PC4_L		(0x10<<8)
#define	PC4_H		(0x10)
#define	PC3_L		(0x08<<8)
#define	PC3_H		(0x08)
#define	PC2_L		(0x04<<8)
#define	PC2_H		(0x04)
#define	PC1_L		(0x02<<8)
#define	PC1_H		(0x02)
#define	PC0_L		(0x01<<8)
#define	PC0_H		(0x01)

#define PC7_I		PC7_L
#define PC7_O		PC7_H
#define PC6_I		PC6_L
#define PC6_O		PC6_H
#define PC5_I		PC5_L
#define PC5_O		PC5_H
#define PC4_I		PC4_L
#define PC4_O		PC4_H
#define PC3_I		PC3_L
#define PC3_O		PC3_H
#define PC2_I		PC2_L
#define PC2_O		PC2_H
#define PC1_I		PC1_L
#define PC1_O		PC1_H
#define PC0_I		PC0_L
#define PC0_O		PC0_H

#define VPL_SNS_L	PC5_L
#define VPL_SNS_H	PC5_H
#define SWI_JNC_L	PC4_L
#define SWI_JNC_H	PC4_H
#define TRS_LFT_L	PC3_L
#define TRS_LFT_H	PC3_H
#define TRS_RGT_L	PC2_L
#define TRS_RGT_H	PC2_H
#define BOD_LFT_L	PC1_L
#define BOD_LFT_H	PC1_H
#define BOD_RGT_L	PC0_L
#define BOD_RGT_H	PC0_H

#define VPL_SNS_I	PC5_L
#define VPL_SNS_O	PC5_H
#define SWI_JNC_I	PC4_L
#define SWI_JNC_O	PC4_H
#define TRS_LFT_I	PC3_L
#define TRS_LFT_O	PC3_H
#define TRS_RGT_I	PC2_L
#define TRS_RGT_O	PC2_H
#define BOD_LFT_I	PC1_L
#define BOD_LFT_O	PC1_H
#define BOD_RGT_I	PC0_L
#define BOD_RGT_O	PC0_H

#define VPL_SNS_N	PC5_L
#define VPL_SNS_P	PC5_H
#define SWI_JNC_N	PC4_L
#define SWI_JNC_P	PC4_H
#define TRS_LFT_N	PC3_L
#define TRS_LFT_P	PC3_H
#define TRS_RGT_N	PC2_L
#define TRS_RGT_P	PC2_H
#define BOD_LFT_N	PC1_L
#define BOD_LFT_P	PC1_H
#define BOD_RGT_N	PC0_L
#define BOD_RGT_P	PC0_H




/*
#define VPS_L		(0x20<<8)
#define VPS_H		(0x20)
#define SWS_L		(0x10<<8)
#define SWS_H		(0x10)
#define TSL_L		(0x08<<8)
#define TSL_H		(0x08)
#define TSR_L		(0x04<<8)
#define TSR_H		(0x04)
#define OML_L		(0x02<<8)		//low
#define OML_H		(0x02)			//high
#define OML_I		OML_L				//input
#define OML_O		OML_H				//output
#define OML_N		OML_L				//no pull_up
#define OML_P		OML_H				//pull_up
#define OMR_L		(0x01<<8)
#define OMR_H		(0x01)
#define OMR_I		OMR_L
#define OMR_O		OMR_H
#define OMR_N		OMR_L
#define OMR_P		OMR_H
*/
/*
//PORTD
#define OMD_L		(0x80<<8)			//odo meter driver
#define OMD_H		(0x80)
#define OMD_I		OMD_L
#define OMD_O		OMD_H
#define	TLD_L		(0x40<<8)			//tracking light driver
#define	TLD_H		(0x40)	
#define	TLD_I		TLD_L
#define	TLD_O		TLD_H
#define	TLD_N		TLD_L
#define	TLD_P		TLD_H
#define	SLR_L		(0x04<<8)			//system led red
#define	SLR_H		(0x04)
*/
//PORTD
//+-------+-------+-------+-------+-------+-------+-------+-------+
//|  PD7  |  PD6  |  PD5  |  PD4  |  PD3  |  PD2  |  PD1  |  PD0  | port name
//+-------+-------+-------+-------+-------+-------+-------+-------+
//|   7   |   6   |   5   |   4   |   3   |    2  |    1  |   0   | bit number
//+-------+-------+-------+-------+-------+-------+-------+-------+
//|  13   |  12   |  11   |   6   |   5   |    4  |    3  |   2   | pin number
//+-------+-------+-------+-------+-------+-------+-------+-------+
//|BOD_COM|TRK_LED|REV_LFT|FWD_LFT|SWITCH |SLD_RED|IR_TXD2|IR_RXD | signal name (hvw)
//+-------+-------+-------+-------+-------+-------+-------+-------+
#define	PD7_L		(0x80<<8)
#define	PD7_H		(0x80)
#define	PD6_L		(0x40<<8)
#define	PD6_H		(0x40)
#define	PD5_L		(0x20<<8)
#define	PD5_H		(0x20)
#define	PD4_L		(0x10<<8)
#define	PD4_H		(0x10)
#define	PD3_L		(0x08<<8)
#define	PD3_H		(0x08)
#define	PD2_L		(0x04<<8)
#define	PD2_H		(0x04)
#define	PD1_L		(0x02<<8)
#define	PD1_H		(0x02)
#define	PD0_L		(0x01<<8)
#define	PD0_H		(0x01)

#define PD7_I		PD7_L
#define PD7_O		PD7_H
#define PD6_I		PD6_L
#define PD6_O		PD6_H
#define PD5_I		PD5_L
#define PD5_O		PD5_H
#define PD4_I		PD4_L
#define PD4_O		PD4_H
#define PD3_I		PD3_L
#define PD3_O		PD3_H
#define PD2_I		PD2_L
#define PD2_O		PD2_H
#define PD1_I		PD1_L
#define PD1_O		PD1_H
#define PD0_I		PD0_L
#define PD0_O		PD0_H

#define BOD_COM_L	PD7_L
#define BOD_COM_H	PD7_H
#define TRK_LED_L	PD6_L
#define TRK_LED_H	PD6_H
#define REV_LFT_L	PD5_L	//remember: signal is active when LOW
#define REV_LFT_H	PD5_H
#define FWD_LFT_L	PD4_L	//remember: signal is active when LOW
#define FWD_LFT_H	PD4_H
#define SWI_IAC_L	PD3_L
#define SWI_IAC_H	PD3_H
#define SLD_RED_L	PD2_L
#define SLD_RED_H	PD2_H
#define IR_TXD2_L	PD1_L
#define IR_TXD2_H	PD1_H
#define IR_RXD_L 	PD0_L
#define IR_RXD_H 	PD0_H

#define BOD_COM_I	PD7_L
#define BOD_COM_O	PD7_H
#define TRK_LED_I	PD6_L
#define TRK_LED_O	PD6_H
#define REV_LFT_I	PD5_L
#define REV_LFT_O	PD5_H
#define FWD_LFT_I	PD4_L
#define FWD_LFT_O	PD4_H
#define SWI_IAC_I	PD3_L
#define SWI_IAC_O	PD3_H
#define SLD_RED_I	PD2_L
#define SLD_RED_O	PD2_H
#define IR_TXD2_I	PD1_L
#define IR_TXD2_O	PD1_H
#define IR_RXD_I	PD0_L
#define IR_RXD_O	PD0_H

#define BOD_COM_N	PD7_L
#define BOD_COM_P	PD7_H
#define TRK_LED_N	PD6_L
#define TRK_LED_P	PD6_H
#define REV_LFT_N	PD5_L
#define REV_LFT_P	PD5_H
#define FWD_LFT_N	PD4_L
#define FWD_LFT_P	PD4_H
#define SWI_IAC_N	PD3_L
#define SWI_IAC_P	PD3_H
#define SLD_RED_N	PD2_L
#define SLD_RED_P	PD2_H
#define IR_TXD2_N	PD1_L
#define IR_TXD2_P	PD1_H
#define IR_RXD_N	PD0_L
#define IR_RXD_P	PD0_H

#define BIT_RATE_2400_BAUD     207
#define BIT_RATE_4800_BAUD     103
#define BIT_RATE_9600_BAUD     51
#define BIT_RATE_14400_BAUD    34
#define BIT_RATE_19200_BAUD    25
#define BIT_RATE_28800_BAUD    16
#define BIT_RATE_38400_BAUD    12
#define BIT_RATE_57600_BAUD    8
#define BIT_RATE_76800_BAUD    6
#define BIT_RATE_115200_BAUD   3
#define BIT_RATE_230400_BAUD   1
#define BIT_RATE_250000_BAUD   1
#define BIT_RATE_500000_BAUD   0

//PIND  Remember: reading normal pin status use PIND not PORTD
//+-------+-------+-------+-------+-------+-------+-------+-------+
//|  PD7  |  PD6  |  PD5  |  PD4  |  PD3  |  PD2  |  PD1  |  PD0  | port name
//+-------+-------+-------+-------+-------+-------+-------+-------+
//|   7   |   6   |   5   |   4   |   3   |    2  |    1  |   0   | bit number
//+-------+-------+-------+-------+-------+-------+-------+-------+
//|  13   |  12   |  11   |   6   |   5   |    4  |    3  |   2   | pin number
//+-------+-------+-------+-------+-------+-------+-------+-------+
//|BOD_COM|TRK_LED|REV_LFT|FWD_LFT|SWITCH |SLD_RED|IR_TXD2|IR_RXD | signal name (hvw)
//+-------+-------+-------+-------+-------+-------+-------+-------+
#define PIND7_L		PD7_L
#define PIND7_H		PD7_H
#define PIND6_L		PD6_L
#define PIND6_H		PD6_H
#define PIND5_L		PD5_L
#define PIND5_H		PD5_H
#define PIND4_L		PD4_L
#define PIND4_H		PD4_H
#define PIND3_L		PD3_L
#define PIND3_H		PD3_H
#define PIND2_L		PD2_L
#define PIND2_H		PD2_H
#define PIND1_L		PD1_L
#define PIND1_H		PD1_H
#define PIND0_L		PD0_L
#define PIND0_H		PD0_H



#define SFR_LEFT_ENGINE_SPEED OCR1A
#define SFR_RGHT_ENGINE_SPEED OCR1B


//Set and Clear Special Function Register bits
#define SFRX(Sfr,Msk) (Sfr=(Sfr&~((Msk)>>8))|(Msk))
// - a Mask (Msk) is 16 bits wide
// - the left  8 bits represents the bits to be cleared (each 1-bit means that corresponding registerbit must be cleared)
// - the right 8 bits represents the bits to be set     (each 1-bit means that corresponding registerbit must be set    )
// a Msk example:
// 7654 3210 7654 3210  (bitnumbers)
// 0010 0000 0000 0100
//   x                  bit 6 must be cleared
//                 x    bit 2 must be set
// p = previous result
// ((Msk)>>8)       => shift clear-bits from the high-byte to the low-byte (1-bits means that corresponding bit must be cleared)
// ~(p)             => invert clear-bits, meaning, bits that must be cleared are now '0' and must not be cleared are now '1' in low-byte
// Sfr&p            => get register data and 'and' it with 'p' so:
//                     1. reg 0 and clr 0 => reg 0 (a cleared bit that must be cleared stays cleared)
//                     2. reg 1 and clr 0 => reg 0 (a set bit that must be cleared is cleared)
//                     3. reg 0 and clr 1 => reg 0 (an cleared bit that must not be cleared stays cleared)
//                     4. reg 1 and clr 1 => reg 1 (an set bit that must not be cleared stays set)
// p|(Msk)          => to-be-set bits in low-byte are just prepaired to be set in register
// Sfr=p            => execute settings





//Write Special Function Register byte
#define SFRW(Sfr,Msk) (Sfr=(Msk))

//Test on mask bits 1 being set and mask bits 0 being cleared (do not test unmasked bits)
//	(Msk)>>8)				=> shift 'clr' mask 8 bits to the right
//	| ((Msk)&0xFF) 	=> 'Or' shifted 'clr' mask with 'set' mask: now all 'clr' and 'set' bits are set to '1'
//  & Sfr						=> Retrieve all 'clr' and 'set' bits from Sfr
//  ^((Msk&0xFF))		=> Get 'set' bitmask, force all 'set' masked '1' bits from Sfr to go '0', leaving errornous bits resulting as '1'
//  !               => invert (any '1' bit is error = boolean pass) to (any '1' bit is error = boolean fail)
#define SFRQ(Sfr,Msk)  (!((((((Msk)>>8)|((Msk)&0xFF)) ) & Sfr)^((Msk)&0xFF))) //werkt!	


//================================================================================


//#define SFRQ(Sfr,Msk)     (((Msk)^Sfr) | ((~((Msk)>>8))&Sfr))

#define	SET_TRACK_LED_OUTPUT    (SFRX(DDRD, TRK_LED_O))
#define	SET_TRACK_LED_ON        (SFRX(PORTD,TRK_LED_H))
#define	SET_TRACK_LED_OFF       (SFRX(PORTD,TRK_LED_L))
#define CHK_TRACK_LED_ON        (SFRT(PORTD,TRK_LED_H))

#define SET_LEFT_BRAKE_LED_ON   (SFRX(PORTC,BOD_LFT_H))
#define SET_LEFT_BRAKE_LED_OFF  (SFRX(PORTC,BOD_LFT_L))
#define SET_RGHT_BRAKE_LED_ON   (SFRX(PORTC,BOD_RGT_H))
#define SET_RGHT_BRAKE_LED_OFF  (SFRX(PORTC,BOD_RGT_L))

#define CHK_LEFT_BRAKE_LED_ON   ( SFRT(PORTC,BOD_LFT_H))
#define CHK_LEFT_BRAKE_LED_OFF  (!SFRT(PORTC,BOD_LFT_H))
#define CHK_RGHT_BRAKE_LED_ON   ( SFRT(PORTC,BOD_RGT_H))
#define CHK_RGHT_BRAKE_LED_OFF  (!SFRT(PORTC,BOD_RGT_H))

#define	SFR_TST(Sfr,Msk)        (Sfr&Msk)
#define	SFRT(Sfr,Msk)           (Sfr&Msk)

#define	TST_TRACK_LED_ON        (SFRT(PORTD,PD6_H))


#define SET_RED_SYSTM_LED_ON		(SFRX(PORTD,SLD_RED_H))
#define SET_RED_SYSTM_LED_OFF		(SFRX(PORTD,SLD_RED_L))
#define SET_GRN_SYSTM_LED_ON		(SFRX(PORTB,SLD_GRN_H))
#define SET_GRN_SYSTM_LED_OFF		(SFRX(PORTB,SLD_GRN_L))

//Set and Clear Bits in Byte
#define BYTE_BIT(Byt,Bit)		(Byt=(Byt&~((Bit)>>8))|(Bit))


#define SET_BYTE_BITS(Byt,Bit)		(Byt=(Byt|Bit))
#define SET_BYTE_BIT(Byt,Bit)		(Byt=(Byt|Bit))
#define CLR_BYTE_BITS(Byt,Bit)		(Byt=(Byt&~(Bit)))
#define CLR_BYTE_BIT(Byt,Bit)		(Byt=(Byt&~(Bit)))
#define CHK_BYTE_BIT_SET(Byt,Bit)	(Byt&Bit)
#define CHK_BYTE_BIT_CLR(Byt,Bit)	(~(Byt&Bit))	// Byt&(Bit) selects bit, 


#define byte unsigned char


#define SFR_ADMUX_MUX_ADC_LEFT_TRACK_SENSOR (MUX2_H|MUX1_H)	//mux3
#define SFR_ADMUX_MUX_ADC_RGHT_TRACK_SENSOR (MUX1_H)				//mux2


#define SET_LEFT_ENGINE_DIRECTION_TO_FORWARD SFRX(PORTD,PD4_L|PD5_H)
#define SET_LEFT_ENGINE_DIRECTION_TO_REVERSE SFRX(PORTD,PD4_H|PD5_L)
#define SET_RGHT_ENGINE_DIRECTION_TO_FORWARD SFRX(PORTB,PB4_L|PB5_H)
#define SET_RGHT_ENGINE_DIRECTION_TO_REVERSE SFRX(PORTB,PB4_H|PB5_L)
#define SET_LEFT_ENGINE_SPEED(LftEngSpd) (OCR1A=LftEngSpd)
#define SET_RGHT_ENGINE_SPEED(RgtEngSpd) (OCR1B=RgtEngSpd)



#endif //_MY_DEFINES_H_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -