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

📄 iogp32.h

📁 FSL GP32 ucos 12345678901234567890
💻 H
字号:
/*	DEFINICION DE IO PARA EL MC689HC08GP32
 *	Copyright (c) 2001 por JFIG TECHNOLOGIES
 */
#ifndef __IO_H
#define __IO_H
#define uint	unsigned int		//Definici髇 corta de un entero no
					//signado
#define uchar	unsigned char		//Definici髇 corta de un char o byte no					//signado
#define EI() _asm("cli\n")		//Habilita interrupciones
#define DI() _asm("sei\n")		//Deshabilita interrupciones

#define FALSE 0
#define TRUE 1

typedef struct {
	unsigned char b0:1;
	unsigned char b1:1;
	unsigned char b2:1;
	unsigned char b3:1;
	unsigned char b4:1;
	unsigned char b5:1;
	unsigned char b6:1;
	unsigned char b7:1;
	} BITS;

/*Estructura cuyos miembros son campos de bits del tama駉 de un solo bit.
Como estoy utilizando typedef, estoy definiendo otro tipo llamado BITS.
Recordemos que typedef se utiliza para renombrar un tipo de dato espec韋ico,
es decir, no se crea un nuevo tipo, se renombra.
*/
 
typedef union {
	unsigned char byte;
	BITS b;
	}BIT_CHAR;

//Con esta estructura, puedo definir un puerto de IO de la siguiente manera:

////////////////////////////////////////////////////////////////////////////
//	 PUERTOS O REGISTROS DE IO
///////////////////////////////////////////////////////////////////////////

//M罶CARAS:

#define B7M  0x80
#define B6M  0x40		
#define B5M  0x20
#define B4M  0x10
#define B3M  0x08
#define B2M  0x04
#define B1M  0x02
#define B0M  0x01

/*Para referenciar una direcci髇 absoluta con el compilador de COSMIC
especificamos la direcci髇 @0xXXXX; a esta direcci髇 le debemos 
asociar un nombre simb髄ico y un tipo*/

//////////////////////////////////////////////
// PUERTO A
//////////////////////////////////////////////

@tiny volatile BIT_CHAR PORTA @0x00;	
@tiny volatile BIT_CHAR DDRA @0x04;	
@tiny volatile BIT_CHAR PTAPUE @0x0D;	

//////////////////////////////////////////////
// PUERTO B
//////////////////////////////////////////////

@tiny volatile BIT_CHAR PORTB @0x01;	
@tiny volatile BIT_CHAR DDRB @0x05;

//////////////////////////////////
// M罶CARAS
//////////////////////////////////
#define PTB0 B0M
#define PTB1 B1M
#define PTB2 B2M
#define PTB3 B3M
#define PTB4 B4M
#define PTB5 B5M
#define PTB6 B6M
#define PTB7 B7M

//////////////////////////////////////////////
// PUERTO C
//////////////////////////////////////////////

@tiny volatile BIT_CHAR PORTC @0x02;	
@tiny volatile BIT_CHAR DDRC @0x06;
@tiny volatile BIT_CHAR PTCPUE @0x0E;	

//////////////////////////////////
// M罶CARAS
//////////////////////////////////
#define PTC0 B0M
#define PTC1 B1M
#define PTC2 B2M
#define PTC3 B3M
#define PTC4 B4M
#define PTC5 B5M
#define PTC6 B6M
#define PTC7 B7M

//////////////////////////////////////////////
// PUERTO D
//////////////////////////////////////////////

@tiny volatile BIT_CHAR PORTD @0x03;	
@tiny volatile BIT_CHAR DDRD @0x07;	
@tiny volatile BIT_CHAR PTDPUE @0x0F;	

//////////////////////////////////////////////
// PUERTO E
//////////////////////////////////////////////

@tiny volatile BIT_CHAR PORTE @0x08;	
@tiny volatile BIT_CHAR DDRE @0x0C;


//////////////////////////////////////////////
//                     SPI
//////////////////////////////////////////////
@tiny volatile BIT_CHAR SPCR @0x0010;
@tiny volatile BIT_CHAR SPSCR @0x0011; 
@tiny volatile BIT_CHAR SPDR @0x0012;

//////////////////////////////////////////////
// M罶CARAS
//////////////////////////////////////////////
#define SPRIE	0x80
#define DMAS	0x40
#define	SPMSTR	0x20
#define CPOL	0x10
#define	CPHA	0x08
#define SPWOM	0x04
#define SPE		0x02
#define	SPTIE	0x01

#define SPRF	0x80
#define ERRIE	0x40
#define	OVRF	0x20
#define MODF	0x10
#define	SPTE	0x08
#define MODFEN	0x04
#define SPR1	0x02
#define	SPR0	0x01

//////////////////////////////////////////////
// MACROS
//////////////////////////////////////////////
#define SpiIntRxEnable SPCR.b.b7 = 1
#define SpiIntRxDisable SPCR.b.b7 = 0
#define SpiMasterMode SPCR.b.b5 = 1
#define SpiSlaveMode SPCR.b.b5 = 0
#define SpiCpolSet SPCR.byte |= CPOL
#define SpiCpolClear SPCR.byte &= ~CPOL
#define SpiCphaSet SPCR.byte |= CPHA
#define SpiCphaClear SPCR.byte &= ~CPHA
#define SpiDisablePullups SPCR.b.b2 = 1
#define SpiEnablePullups SPCR.b.b2 = 0
#define SpiOn SPCR.b.b1 = 1	
#define SpiOff SPCR.b.b1 = 0
#define SpiIntTxEnable SPCR.b.b0 = 1
#define SpiIntTxDisable SPCR.b.b0 = 0
#define SpiReciveFull SPSCR.b.b7 == 1
#define SpiIntErrEnable SPSCR.b.b6 = 1
#define SpiIntErrDisable SPSCR.b.b6 = 0
#define SpiOverflow SPSCR.b.b5 == 1
#define SpiModeFault SPSCR.b.b4 == 1
#define SpitransmitEmpty SPSCR.b.b3 == 1
#define SpiModeFaultEnable SPSCR.b.b2 = 1
#define SpiModeFaultDisable SPSCR.b.b2 = 0
#define SpiFrec_DIV4 SPSCR.byte 
#define SpiFrec_DIV16 SPSCR.byte |= (SPR0)
#define SpiFrec_DIV64 SPSCR.byte |= (SPR1)
#define SpiFrec_DIV256 SPSCR.byte |= (SPR1 | SPR0)

//////////////////////////////////////////////
//                   SCI
/////////////////////////////////////////////
@tiny volatile BIT_CHAR SCC1	@0x0013; 
@tiny volatile BIT_CHAR SCC2	@0x0014; 
@tiny volatile BIT_CHAR SCC3	@0x0015; 
@tiny volatile BIT_CHAR SCS1	@0x0016; 
@tiny volatile BIT_CHAR SCS2	@0x0017;
@tiny volatile BIT_CHAR SCDR	@0x0018; 
@tiny volatile BIT_CHAR SCBR	@0x0019; 


//////////////////////////////////////////////
//                  KBI
//////////////////////////////////////////////

@tiny volatile BIT_CHAR INTKBSCR @0x001A; 
@tiny volatile BIT_CHAR INTKBIER @0x001B; 

/////////////////////////////////////////////
//				  M罶CARAS
/////////////////////////////////////////////
#define KEYF	0x08
#define ACKK	0x04
#define IMASKK	0x02
#define MODEK	0x01

/////////////////////////////////////////////
//				  MACROS
/////////////////////////////////////////////
#define KbiAck	INTKBSCR.b.b2 = 1
#define KbiMaskEnable	INTKBSCR.b.b1 = 1
#define KbiMaskDisable	INTKBSCR.b.b1 = 0
#define KbiFallingEdge	INTKBSCR.b.b0 = 0
#define KbiFallingLevel	INTKBSCR.b.b0 = 1
#define KbiA0Enable	INTKBIER.b.b0 = 1	
#define KbiA0Disable INTKBIER.b.b0 = 0
#define KbiA1Enable	INTKBIER.b.b1 = 1	
#define KbiA1Disable INTKBIER.b.b1 = 0	 
#define KbiA2Enable	INTKBIER.b.b2 = 1	
#define KbiA2Disable INTKBIER.b.b2 = 0	
#define KbiA3Enable	INTKBIER.b.b3 = 1	
#define KbiA3Disable INTKBIER.b.b3 = 0	
#define KbiA4Enable	INTKBIER.b.b4 = 1	
#define KbiA4Disable INTKBIER.b.b4 = 0	
#define KbiA5Enable	INTKBIER.b.b5 = 1	
#define KbiA5Disable INTKBIER.b.b5 = 0	
#define KbiA6Enable	INTKBIER.b.b6 = 1	
#define KbiA6Disable INTKBIER.b.b6 = 0	
#define KbiA7Enable	INTKBIER.b.b7= 1	
#define KbiA7Disable INTKBIER.b.b7= 0	
#define KbiPortaEnable	PORTA.byte = 0xFF
#define	KbiPortaDisable PORTA.byte = 0x00

//////////////////////////////////////////////
//                  TBM
//////////////////////////////////////////////

@tiny volatile BIT_CHAR TBCR @0x001C;

////////////////////////////////////
// M罶CARAS
////////////////////////////////////
#define TBIF    0x80
#define	TBR2	0x40
#define	TBR1	0x20
#define	TBR0    0x10
#define TACK    0x08
#define TBIE    0x04
#define TBON    0x02
#define TBTST   0x01

////////////////////////////////////
// MACROS
////////////////////////////////////
#define TbmIntPending TBCR.b.b7 == 1
#define TbmFrec_1Hz 
#define TbmFrec_16Hz TBCR.byte |= TBR1
#define TbmFrec_1024Hz TBCR.byte |= TBR0 | TBR2
#define TbmFrec_256Hz TBCR.byte |= TBR0 | TBR1
#define TbmFrec_512Hz TBCR.byte |= TBR2
#define TbmFrec_2048Hz TBCR.byte |= TBR2 | TBR1
#define TbmAck TBCR.b.b3 = 1
#define TbmIntEnable TBCR.b.b2 = 1
#define TbmOn TBCR.b.b1 = 1
#define TbmOff TBCR.b.b1 = 0	 
//////////////////////////////////////////////
//		     IRQ
//////////////////////////////////////////////

@tiny volatile BIT_CHAR INTSCR	@0x1D; //IRQ Status and Control Register


/////////////////////////////////////////////
//	          CONFIG
/////////////////////////////////////////////

@tiny volatile BIT_CHAR CONFIG1	@0x1F;
@tiny volatile BIT_CHAR CONFIG2	@0x1E;

/////////////////////////////////////////////
//	        TIMER1
/////////////////////////////////////////////

@tiny volatile	BIT_CHAR T1SC @0x20;
@tiny volatile	char T1CNTH @0x21;	
@tiny volatile	char T1CNTL @0x22;	
@tiny volatile	uint T1CNT  @0x21;
@tiny volatile	char T1MODH @0x23;	
@tiny volatile	char T1MODL @0x24;	
@tiny volatile	uint T1MOD  @0x23;	
@tiny volatile	BIT_CHAR T1SC0 @0x25;
@tiny volatile	char T1CH0H @0x26;	
@tiny volatile	char T1CH0L @0x27;	
@tiny volatile	uint T1CH0  @0x26;	
@tiny volatile	BIT_CHAR T1SC1 @0x28; 
@tiny volatile	char T1CH1H @0x29;	
@tiny volatile	char T1CH1L @0x2A;	
@tiny volatile	uint T1CH1  @0x29;

///////////////////////////////////////////////
// M罶CARAS
///////////////////////////////////////////////
#define TOF B7M
#define TOIE B6M
#define TSTOP B5M
#define TRST B4M
#define PS2 B2M
#define PS1 B1M
#define PS0 B0M
#define CHF B7M
#define CHIE B6M
#define MSB B5M
#define MSA B4M
#define ELSB B3M
#define ELSA B2M
#define TOV B1M
#define CHMAX B0M	 

///////////////////////////////////
// MACROS
///////////////////////////////////
#define Tim1Overflow T1SC.b.b7 == 1
#define Tim1OverIntEnable T1SC.b.b6 = 1
#define Tim1OverIntDisable T1SC.b.b6 = 0
#define Tim1Stop T1SC.b.b5 = 1
#define Tim1Run T1SC.b.b5 = 0
#define Tim1Reset T1SC.b.b4 = 1
#define Tim1ClkBusDiv1	
#define Tim1ClkBusDiv2 T1SC.byte |= PS0
#define Tim1ClkBusDiv4 T1SC.byte |= PS1
#define Tim1ClkBusDiv8 T1SC.byte |= PS0 | PS1
#define Tim1ClkBusDiv16 T1SC.byte |= PS2
#define Tim1ClkBusDiv32 T1SC.byte |= PS2 | PS0
#define Tim1ClkBusDiv64	T1SC.byte |= PS2 | PS1

#define Tim1Ch0IntRequest T1SC0.b.b7 == 1
#define Tim1Ch0IntEnable T1SC0.b.b6 = 1 
#define Tim1Ch0IntDisable T1SC0.b.b6 = 0
#define Tim1Ch0InputcRising T1SC0.byte |= ELSA
#define Tim1Ch0InputcFalling T1SC0.byte |= ELSB
#define Tim1Ch0InputcBoth T1SC0.byte |= ELSB | ELSA

#define Tim1Ch1IntRequest T1SC1.b.b7 == 1
#define Tim1Ch1IntEnable T1SC1.b.b6 = 1 
#define Tim1Ch1InputcRising T1SC1.byte |= ELSA
#define Tim1Ch1InputcFolling T1SC1.byte |= ELSB

#define Tim1Ch0IntAck T1SC0.byte; T1SC0.b.b7 = 0 
#define Tim1Ch1IntAck T1SC1.byte; T1SC1.b.b7 = 0

/////////////////////////////////////////////
//  	        TIMER2
/////////////////////////////////////////////

@tiny volatile	BIT_CHAR T2SC @0x2B;	
@tiny volatile	char T2CNTH @0x2C;	
@tiny volatile	char T2CNTL @0x2D;	
@tiny volatile	uint T2CNT  @0x2C;
@tiny volatile	char T2MODH @0x2E;	
@tiny volatile	char T2MODL @0x2F;	
@tiny volatile	uint T2MOD  @0x2E;	
@tiny volatile	BIT_CHAR T2SC0 @0x30;
@tiny volatile	char T2CH0H @0x31;	
@tiny volatile	char T2CH0L @0x32;	
@tiny volatile	uint T2CH0  @0x31;	
@tiny volatile	BIT_CHAR T2SC1 @0x33;
@tiny volatile	char T2CH1H @0x34;
@tiny volatile	char T2CH1L @0x35;
@tiny volatile	uint T2CH1  @0x34;

/////////////////////////////////////////////
//		  PLL
/////////////////////////////////////////////

@tiny volatile	BIT_CHAR PCTL @0x36;
////////////////////////////////////
// M罶CARAS
////////////////////////////////////
#define PLLIE   0x80
#define	PLLF	0x40
#define	PLLON	0x20
#define	BCS	    0x10
#define PRE1    0x08
#define PRE0    0x04
#define VPR1    0x02
#define VPR0    0x01
	  

@tiny volatile	BIT_CHAR PBWC @0x37; 
////////////////////////////////////
// M罶CARAS
///////////////////////////////////
#define AUTO    0x80
#define	LOCK	0x40
#define	ACQ  	0x20

@tiny volatile	BIT_CHAR PMSH @0x38; 
@tiny volatile	BIT_CHAR PMSL @0x39; 

@tiny volatile	BIT_CHAR PMRS @0x3A;
////////////////////////////////////
// M罶CARAS
////////////////////////////////////
#define VRS7    0x80
#define	VRS6	0x40
#define	VRS5	0x20
#define	VRS4	0x10
#define VRS3    0x08
#define VRS2    0x04
#define VRS1    0x02
#define VRS0    0x01

 
@tiny volatile	BIT_CHAR PMDS @0x3B; 
////////////////////////////////////
// M罶CARAS
////////////////////////////////////
#define RDS3    0x08
#define RDS2    0x04
#define RDS1    0x02
#define RDS0    0x01

///////////////////////////////////
// MACROS 
///////////////////////////////////
#define Fbus_8M PCTL.byte = VPR1; PMSL.byte = 0xD1; PMSH.byte = 0x03;PMRS.byte = (VRS7 | VRS6 | VRS4); PMDS.byte = RDS0

#define PLLIntEnable PCTL.b.b7 = 1
#define PLLOn PCTL.b.b5 = 1	
#define PLLOff PCTL.b.b5 = 0
#define PLLAuto	PBWC.byte = AUTO
#define PLL_Locked PBWC.b.b6 == 1
#define VCO_CLOCK PCTL.b.b4 = 1

/////////////////////////////////////////////
//		 ADC
/////////////////////////////////////////////

@tiny volatile	BIT_CHAR ADSCR @0x3C;
@tiny volatile	BIT_CHAR ADR @0x3D;
@tiny volatile	BIT_CHAR ADCLK @0x3E; 

/////////////////////////////////////////////
//		 SIM
/////////////////////////////////////////////

@near volatile	BIT_CHAR SBSR   @0xfe00;
@near volatile	BIT_CHAR SRSR   @0xfe01;	
@near volatile	char SUBAR      @0xfe02;
@near volatile	BIT_CHAR SBFCR  @0xfe03;	
@near volatile	BIT_CHAR INT1   @0xfe04;	
@near volatile	BIT_CHAR INT2   @0xfe05;	
@near volatile	BIT_CHAR INT3   @0xfe06;

/////////////////////////////////////////////
//		FLASH
/////////////////////////////////////////////

@near volatile	BIT_CHAR FLCR   @0xfe08;		
@near volatile	BIT_CHAR FLBPR   @0xFF7E;

/////////////////////////////////////////////
//		BREAK
/////////////////////////////////////////////

@near volatile	uint BRK        @0xfe09;	
@near volatile	char BRKH       @0xfe09;	
@near volatile	char BRKL       @0xfe0A;	
@near volatile	BIT_CHAR BRKSCR @0xfe0B;	

/////////////////////////////////////////////
//		LVI
/////////////////////////////////////////////

@near volatile	BIT_CHAR LVISR  @0xFE0C;	

//////////////////////////////////////////////
//		COP
//////////////////////////////////////////////
@near volatile	char COPCTL @0xffff;	

#endif

⌨️ 快捷键说明

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