📄 ice_259a.dt
字号:
/*
ICE_259 test
JASON HUANG
SEP 04 08
P70 as the benchmark relative i/o port
*/
R0 == 0X00
TCC == 0X01
PC == 0X02
STATUS == 0X03
R3 == 0X03
Z == 2
C == 0
R4 == 0X04
PORT5 == 0X05
PORT6 == 0X06
R7 == 0X07
AISR == 0X08
ADCON == 0X09
ADRUN == 4
RB == 0X0B
RC == 0X0C
RD == 0X0D
RE == 0X0E
ADIF == 5
CMPIF == 4
ADWE == 3
CMPWE == 2
ICWE == 1
RF == 0X0F
TCIF == 0
ICIF == 1
EXIF == 2
TCCAIF == 3
TCCBIF == 4
TCCCIF == 5
HPWTIF == 6
LPWTIF == 7
;R10-R1F and R20-R3F is general purpose register
TEMP == 0X11
ACC_BUF == 0X12
R3_BUF == 0X13
R4_BUF == 0X14
BENCHMARK_VALUE == 0X15 ;P70 INPUT OK
BENCHMARK_TIME == 0X16 ;P70 OUTPUT OK
R6_FLAG == 0X17 ;test port6 input
R5_FLAG == 0X18 ;test port5 input
RF_FLAG == 0X19 ;interrupter flag
TCIF1 == 0
ICIF1 == 1
EXIF1 == 2
TCCAIF1 == 3
TCCBIF1 == 4
TCCCIF1 == 5
HPWTIF1 == 6
LPWTIF1 == 7
R5_STATE == 0X1A ;test port5 output
R6_STATE == 0X1B ;test port6 output
R5_HIGH == 0X1C ;test port5 pull high
R5_DOWN == 0X1D ;port5 pull down
R5_AD == 0X1E ;port5 A/D
AD0 == 0
AD1 == 1
AD2 == 2
AD3 == 3
R70_IN == 4
R70_OUT == 5
R7_STATE == 0X1F ;port7 in/output
;BAKE0
POWERTEST1 == 0X20
POWERTEST2 == 0X21
DELAYTEMP == 0X22
COUNT == 0X23
MATH1 == 0X24
MATH2 == 0X25
MATH3 == 0X26
DATA_1 == 0X27
DATA_2 == 0X28
DATA_3 == 0X29
DATA_A == 0X2A
DATA_B == 0X2B
;****************************************************************
BAKE0 MACRO
BC R4,7
BC R4,6
ENDM
BAKE1 MACRO
BC R4,7
BS R4,6
ENDM
PAGE0 MACRO
BC R3,5
ENDM
PAGE1 MACRO
BS R3,5
ENDM
IOPAGE0 MACRO
BC R3,6
ENDM
IOPAGE1 MACRO
BS R3,6
ENDM
;******************************************************************************
ORG 000H
NOP
JMP POWERON
ORG 003H
NOP
PAGE0
JMP EX_INT
ORG 006H
NOP
PAGE0
JMP PORT5_CHANGE
ORG 009H
NOP
PAGE0
JMP TCC_INT
ORG 00CH
NOP
PAGE0
JMP AD_INT
NOP
ORG 012H
NOP
PAGE0
JMP HP_INT
ORG 015H
NOP
PAGE0
JMP LP_INT
ORG 018H
NOP
PAGE0
JMP TCCA_INT
ORG 01BH
NOP
PAGE0
JMP TCCB_INT
NOP
; ORG 01EH
; JMP TCCC_INT
ORG 020H
NOP
PAGE0
;**************************************************************************
EX_INT:
DISI
PAGE0
JBC RF,2
JMP EX_INT1
BC R3,6
MOV A,@0X04
IOW 0X0F
MOV RF,A
JMP EXIT_EX_INT
EX_INT1:
MOV A,@0XFB
AND A,RF
MOV RF,A
BS RF_FLAG,2
BC R3,6
MOV A,@0X00
IOW 0X0F ;disable ext_int
EXIT_EX_INT:
RETI
;*********************************************************************************
PORT5_CHANGE:
DISI
PAGE0
JBC RF,1
JMP PORT5_CHANGE1
BC R3,6
MOV A,@0X02
IOW 0X0F
MOV RF,A
JMP EXIT_PORT5_CHANGE
PORT5_CHANGE1:
MOV A,@0XFD
AND A,RF
MOV RF,A
BS RF_FLAG,1
BC R3,6
MOV A,@0X00
IOW 0X0F
MOV A,@0XFF
IOW 0X0D
EXIT_PORT5_CHANGE:
RETI
;***********************************************************************************
AD_INT:
DISI
PAGE0
JBC RE,5
JMP AD_INT1
BC R3,6
MOV A,@0X2F
IOW 0X0E
JMP EXIT_AD_INT
AD_INT1:
MOV A,@0XDF
AND A,RE
MOV RE,A ;clean the A/D interrupter flag
BS RF_FLAG,5
BC R3,6
MOV A,@0X0F
IOW 0X0E
MOV A,@0XFF
IOW 0X0B
IOW 0X0D
EXIT_AD_INT:
RETI
;***********************************************************************************
LP_INT:
DISI
PAGE0
JBC RF,7
JMP LP_INT1
BC R3,6
MOV A,@0X80
IOW 0X0F
MOV RF,A
JMP EXIT_LP_INT
LP_INT1:
MOV A,@0X7F
AND A,RF
MOV RF,A ;clean the LP interrupt flag
BS RF_FLAG,7
BC R3,6
MOV A,@0X00
IOW 0X0F
EXIT_LP_INT:
RETI
;***********************************************************************************
HP_INT:
DISI
PAGE0
JBC RF,6
JMP HP_INT1
BC R3,6
MOV A,@0X40
IOW 0X0F
MOV RF,A
JMP EXIT_HP_INT
HP_INT1:
MOV A,@0XBF
AND A,RF
MOV RF,A ;clean the LP interrupt flag
BS RF_FLAG,6
BC R3,6
MOV A,@0X00
IOW 0X0F
EXIT_HP_INT:
RETI
;***********************************************************************************
TCCA_INT:
DISI
PAGE0
JBC RF,3
JMP TCCA_INT1
BC R3,6
MOV A,@0X08
IOW 0X0F
MOV RF,A
JMP EXIT_TCCA_INT
TCCA_INT1:
MOV A,@0XF7
AND A,RF
MOV RF,A
BS RF_FLAG,3
BC R3,6
MOV A,@0X00
IOW 0X0F
EXIT_TCCA_INT:
RETI
;***********************************************************************************
TCCB_INT:
DISI
PAGE0
JBC RF,4
JMP TCCB_INT1
BC R3,6
MOV A,@0X10
IOW 0X0F
MOV RF,A
JMP EXIT_TCCB_INT
TCCB_INT1:
MOV A,@0XEF
AND A,RF
MOV RF,A
BS RF_FLAG,4
BC R3,6
MOV A,@0X00
IOW 0X0F
EXIT_TCCB_INT:
RETI
;***********************************************************************************
TCC_INT:
DISI
PAGE0
JBC RF,0
JMP TCC_INT1
BC R3,6
MOV A,@0X01
IOW 0X0F
MOV RF,A
JMP EXIT_TCC_INT
TCC_INT1:
MOV A,@0XFE
AND A,RF
MOV RF,A
BS RF_FLAG,0
BC R3,6
MOV A,@0X00
IOW 0X0F
EXIT_TCC_INT:
RETI
;***********************************************************************************
POWERON:
NOP
NOP
DISI
PAGE0
MOV A,@0XFC ;select f=4MHZ
MOV R7,A
NOP
NOP
BC R3,6 ;select i/o page0
MOV A,@0XFF
IOW 0X05
IOW 0X06
IOW 0X07 ;define the relative i/o as input
IOW 0X0B ;disable pull down
IOW 0X0C ;disable open drain
IOW 0X0D ;disable pull high
MOV A,@0X00
IOW 0X08
IOW 0X09
IOW 0X0A
IOW 0X0F
CONTW
MOV A,@0X0F
IOW 0X0E ;disable WDT
JMP CLRRAM
MOV A,@0X55
XOR A,POWERTEST1
JBS STATUS,Z
JMP CLRRAM
MOV A,@0XAA
XOR A,POWERTEST2
JBS STATUS,Z
JMP CLRRAM
MOV A,@0X18
AND A,STATUS
XOR A,@0X18
JBS STATUS,Z
JMP MAIN
CLRRAM:
MOV A,@0X7F
MOV R4,A
CLR R0
DEC R4
MOV A,@0X3F
AND A,R4
SUB A,@0X0F
JBS STATUS,C
JMP $-6
MOV R4,R4
JBS STATUS,Z
JMP $-8
MAIN:
WDTC
MOV A,@0X55
MOV POWERTEST1,A
MOV A,@0XAA
MOV POWERTEST2,A
;*********************************************************************
BENCHMARK:
BC R3,6 ;select i/o page0
MOV A,@0XFF
IOW 0X07
IOW 0X06
TEST_70_INPUT:
MOV A,@0XFE
IOW 0X05 ;P50 test P70 LOW
MOV A,@0X00
MOV PORT6,A
MOV PORT5,A
P50_P70:
MOV A,@0XFE
MOV PORT5,A
CALL DELAY
JBC R7,0
JMP P51_P70
MOV A,@0XFF ;P50 test P70 HIGH
MOV PORT5,A
CALL DELAY
JBC R7,0
INC BENCHMARK_VALUE
P51_P70:
MOV A,@0XFD
IOW 0X05
MOV PORT5,A
CALL DELAY
JBC R7,0
JMP P52_P70
MOV A,@0XFF
MOV PORT5,A
CALL DELAY
JBC R7,0
INC BENCHMARK_VALUE
P52_P70:
MOV A,@0XFB
IOW 0X05
MOV PORT5,A
CALL DELAY
JBC R7,0
JMP P53_P70
MOV A,@0XFF
MOV PORT5,A
CALL DELAY
JBC R7,0
INC BENCHMARK_VALUE
P53_P70:
MOV A,@0XF7
IOW 0X05
MOV PORT5,A
CALL DELAY
JBC R7,0
JMP P60_P70
MOV A,@0XFF
MOV PORT5,A
CALL DELAY
JBC R7,0
INC BENCHMARK_VALUE
MOV A,@0XFF
IOW 0X05 ;PORT5 as input
P60_P70:
MOV A,@0XFE
IOW 0X06
MOV PORT6,A
CALL DELAY
JBC R7,0
JMP P61_P70
MOV A,@0XFF
MOV PORT6,A
CALL DELAY
JBC R7,0
INC BENCHMARK_VALUE
P61_P70:
MOV A,@0XFD
IOW 0X06
MOV PORT6,A
CALL DELAY
JBC R7,0
JMP P62_P70
MOV A,@0XFF
MOV PORT6,A
CALL DELAY
JBC R7,0
INC BENCHMARK_VALUE
P62_P70:
MOV A,@0XFB
IOW 0X06
MOV PORT6,A
CALL DELAY
JBC R7,0
JMP P63_P70
MOV A,@0XFF
MOV PORT6,A
CALL DELAY
JBC R7,0
INC BENCHMARK_VALUE
P63_P70:
MOV A,@0XF7
IOW 0X06
MOV PORT6,A
CALL DELAY
JBC R7,0
JMP TEST_P70_OUTPUT
MOV A,@0XFF
MOV PORT6,A
CALL DELAY
JBC R7,0
INC BENCHMARK_VALUE
;*************************************************
TEST_P70_OUTPUT:
MOV A,@0XFF
IOW 0X06
IOW 0X05
MOV A,@0XFE
IOW 0X07
P50_P70_OUT:
MOV A,@0XFC
MOV R7,A
CALL DELAY
JBC PORT5,0
JMP P51_P70_OUT
MOV A,@0XFD
MOV R7,A
CALL DELAY
JBC PORT5,0
INC BENCHMARK_TIME
P51_P70_OUT:
MOV A,@0XFC
MOV R7,A
CALL DELAY
JBC PORT5,1
JMP P52_P70_OUT
MOV A,@0XFD
MOV R7,A
CALL DELAY
JBC PORT5,1
INC BENCHMARK_TIME
P52_P70_OUT:
MOV A,@0XFC
MOV R7,A
CALL DELAY
JBC PORT5,2
JMP P53_P70_OUT
MOV A,@0XFD
MOV R7,A
CALL DELAY
JBC PORT5,2
INC BENCHMARK_TIME
P53_P70_OUT:
MOV A,@0XFC
MOV R7,A
CALL DELAY
JBC PORT5,3
JMP P60_P70_OUT
MOV A,@0XFD
MOV R7,A
CALL DELAY
JBC PORT5,3
INC BENCHMARK_TIME
P60_P70_OUT:
MOV A,@0XFC
MOV R7,A
CALL DELAY
JBC PORT6,0
JMP P61_P70_OUT
MOV A,@0XFD
MOV R7,A
CALL DELAY
JBC PORT6,0
INC BENCHMARK_TIME
P61_P70_OUT:
MOV A,@0XFC
MOV R7,A
CALL DELAY
JBC PORT6,1
JMP P62_P70_OUT
MOV A,@0XFD
MOV R7,A
CALL DELAY
JBC PORT6,1
INC BENCHMARK_TIME
P62_P70_OUT:
MOV A,@0XFC
MOV R7,A
CALL DELAY
JBC PORT6,2
JMP P63_P70_OUT
MOV A,@0XFD
MOV R7,A
CALL DELAY
JBC PORT6,2
INC BENCHMARK_TIME
P63_P70_OUT:
MOV A,@0XFC
MOV R7,A
CALL DELAY
JBC PORT6,3
JMP RESULT_70
MOV A,@0XFD
MOV R7,A
CALL DELAY
JBC PORT6,3
INC BENCHMARK_TIME
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -