📄 main.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 + -