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

📄 main.h

📁 Real Time Operating System for Hi-Tech C compiler.
💻 H
字号:
/************************************************************ 
Copyright (C) 1995-2002 Pumpkin, Inc. and its
Licensor(s). Freely distributable.

$Source: C:\\RCS\\d\\salvo\\demo\\d1\\main.h,v $
$Author: aek $
$Revision: 3.14 $
$Date: 2003-07-17 23:47:23-07 $

Header file. 

See Salvo User Manual for more information.

************************************************************/

#define DELAY_MASK			0x0E 	/* empirically det'd 	*/

#define TMR2_RELOAD 		200  	/* 500Hz ints @ 4MHz 	*/

#define	TX_BUFF_SIZE		10		/* output buffer size   */

#define DOTS_PER_CTXSW		125		/* '.' per context sw	*/

#define SIGNALING_TASKID	6		/* task #6 randomly 	*/
									/*  signals semaphores.	*/
									
#define TWEAK_CYCLE_COUNT	2		/* from .asm output		*/		


#if defined(SYSA)

#include <pic.h>

#if defined(_16F877)
#define STR_PROC_TYPE "PIC16F877, HI-TECH PICC, 10ms. "
#elif defined(_16C77)
#define STR_PROC_TYPE "PIC16C77, HI-TECH PICC, 10ms. "
#else
#define STR_PROC_TYPE "PIC16, HI-TECH PICC, 10ms. "
#endif

#if ((_HTC_VER_MAJOR_*1000 + \
      _HTC_VER_MINOR_*  10 + \
      _HTC_VER_PATCH_*   1) < 8000 )
#if defined(_16F877)
__CONFIG(FOSC0 | UNPROTECT);
#elif defined(_16C77)
__CONFIG(XT | UNPROTECT);
#endif
#else
__CONFIG(XT);
#endif



bank2 char flag;
bank2 int ctxSw;
bank2 int minCtxSw;
bank2 int maxCtxSw;
bank2 char i, j, k;
bank2 unsigned char rxChar;
bank2 unsigned int prevTMR1, currTMR1;
extern bank2 unsigned char txCount;
extern bank2 unsigned char txInPtr, txOutPtr;
extern bank2 unsigned char txBuff[TX_BUFF_SIZE];


static volatile unsigned int TMR1 @ 0x0E;

/* keys */
#define	PORTBIT(adr, bit)	((unsigned)(&adr)*8+(bit))	
static bit keyS2 @ PORTBIT(PORTA, 4);
static bit keyS3 @ PORTBIT(PORTC, 2);
#define bitPEIE			PEIE
#define bitRCIE			RCIE
#define bitRCIF         RCIF
#define bitTMR1ON		TMR1ON
#define bitTMR2IE		TMR2IE
#define bitTMR2IF		TMR2IF
#define bitT0CS			T0CS
#define bitTRMT			TRMT
#define bitTXIE			TXIE
#define bitTXIF			TXIF
#define InitTestHw()
#define Reset()


#elif defined(SYSE) || defined(SYSF)

char flag;
int ctxSw;
int minCtxSw;
int maxCtxSw;
char i, j, k;
unsigned char rxChar;
unsigned int prevTMR1, currTMR1;
extern unsigned char txCount;
extern unsigned char txInPtr, txOutPtr;
extern unsigned char txBuff[TX_BUFF_SIZE];


#if defined(SYSE)

#include <p18cxxx.h>

//__CONFIG(1, EC & UNPROTECT);
#define STR_PROC_TYPE "PIC18C452, Microchip MPLAB-C18, 10ms. "

/* keys */
#define keyS2 		PORTAbits.RA4
#define keyS3 		PORTCbits.RC2 
#define bitPEIE		INTCONbits.PEIE
#define bitRCIE		PIE1bits.RCIE
#define bitRCIF     PIR1bits.RCIF
#define bitTMR1ON   T1CONbits.TMR1ON
#define	bitT0CS		T0CONbits.T0CS
#define bitTMR2IE	PIE1bits.TMR2IE
#define bitTMR2IF	PIR1bits.TMR2IF
#define bitTRMT		TXSTAbits.TRMT
#define bitTXIE		PIE1bits.TXIE
#define bitTXIF		PIR1bits.TXIF

/* MPLAB-ICE2000 PCM18XA0 Processor Module requires	*/
/*  these two instructions in order for table reads	*/
/*  to work properly. D1 uses tables reads when		*/
/*  getting the string characters from program		*/
/*  memory. Without this fix, calls to putstr()		*/
/*  result in lost characters.						*/
#define InitTestHw() do { _asm \
                          movlw 0xB0 \
                          movwf 0xF9C,ACCESS \
                          _endasm \
                     } while(0)

/* #define Reset() */


#elif defined(SYSF)

#include <pic18.h>

__CONFIG(1, EC & UNPROTECT);
#define STR_PROC_TYPE "PIC18C452, HI-TECH PICC-18, 10ms. "

#if 0
static volatile unsigned int TMR1 @ 0xFCE;
#endif

/* keys */
#define	PORTBIT(adr, bit)	((unsigned)(&adr)*8+(bit))	
static bit keyS2 @ PORTBIT(PORTA, 4);
static bit keyS3 @ PORTBIT(PORTC, 2);
static near bit bitTMR1ON @ ((unsigned)&T1CON*8)+0;
#define bitPEIE			PEIE
#define bitRCIE			RCIE
#define bitRCIF         RCIF
#define bitTMR2IE		TMR2IE
#define bitTMR2IF		TMR2IF
#define bitT0CS			T0CS
#define bitTRMT			TRMT
#define bitTXIE			TXIE
#define bitTXIF			TXIF

/* see above.		*/
#define InitTestHw() 	do { asm(" movlw 0xB0"); \
                             asm(" movwf 0xF9C"); \
                     	} while (0)
                     
#define Reset()			asm(" goto 0x0000")
                     
                     
#endif /* SYSE or SYSF */                     


#elif defined(SYST) /* M68HC11 on 6811EVB */

#include <hc11.h>

#define STR_PROC_TYPE "M68HC11EVB, ImageCraft ICC11, 8.19ms. "

char flag;
int ctxSw;
int minCtxSw;
int maxCtxSw;
char i, j, k;
unsigned char rxChar, tmpRxChar;
unsigned int prevTMR1, currTMR1;
extern unsigned char txCount;
extern unsigned char txInPtr, txOutPtr;
extern unsigned char txBuff[TX_BUFF_SIZE];

#define InitTestHw()

#define Reset()			asm(" jmp 0xC000")

#endif


/************************************************************
****                                                     ****
**                                                         **
Hardware-specific Settings.

**                                                         **
****                                                     ****
************************************************************/

#if   defined(SYSA) || defined(SYSE) || defined(SYSF)


#define DisableTMR1()		do { bitTMR1ON = 0; } while (0)
#define DisableTMR2()		do { bitTMR2IE = 0; } while (0)
#define EnableTMR1()		do { bitTMR1ON = 1; } while (0)
#define EnableTMR2()		do { bitTMR2IE = 1; } while (0)
							/* set TMR0 to internal clock source. TMR0	*/
							/*  is used to generate pseudo-random		*/
							/*  delays for the running tasks.			*/
							/* configure TMR1 for 1:1 prescale, use 	*/
							/*  internal clock. TMR1 is used to count 	*/
							/*  instruction cycles.						*/
							/* set TMR2 postcalar to be 1:10, with 		*/
							/*  reload value to give 500Hz for 4MHz		*/
							/*  xtal, and turn TMR2 on.	TMR2 is used to	*/
							/*  call the Salvo system timer.			*/
							/* enable peripheral interrupts				*/
#define Init()				do { bitT0CS = 0; \
						     	 T1CON = 0x01; \
						     	 PR2 = TMR2_RELOAD; \
						     	 T2CON = 0x4C; \
						     	 bitPEIE = 1; \
							} while (0)
						
#define InitPORT()			do { PORTB = 0x00; \
                                 TRISB = 0x00; \
                            } while (0)
                            
#define PORT				PORTB
#define TMR0				TMR0
#define USE_HDWR_KEYS		TRUE

#define	NEWLINE				"\n\r"


#elif  defined(SYST)

#define DisableTMR1()		do { ; } while (0)
#define DisableTMR2()		do { ; } while (0)
#define EnableTMR1()		do { ; } while (0)
#define EnableTMR2()		do { ; } while (0)
#define Init()				do { PORTB = PORTB; \
                            	 PACTL &= 0b11111100; \
                                 PACTL |= 0b00000001; \
                                 TMSK2 |= 0b01000000; \
                            } while (0)

#if defined(USE_PORTC)
#define InitPORT()			do { PIOC &= 0b00001111; \
                                 DDRC  = 0b11111111; \
                                 PORTC = 0x00; \
                            } while (0)
#else
#define InitPORT()			PORTB = 0x00
#endif

#if defined(USE_PORTC)
#define	PORT				PORTC
#else
#define PORT				PORTB
#endif

#define TMR0				((unsigned char) (TCNT & 0x00FF))
#define TMR1				TCNT
#define TMR1H				((unsigned char) ((TCNT >> 8) & 0x00FF))
#define TMR1L           	((unsigned char) (TCNT & 0x00FF))
#define USE_HDWR_KEYS		FALSE

#define	NEWLINE				"\n"


#else /* SYS* not defined */                        
#error Undefined Salvo test system (SYS*). Definition required.


#endif

⌨️ 快捷键说明

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