📄 remotest.asm
字号:
;*****************************************************************************************
;名称:遥控器成品自动测试架
;文件:remoter_auto_test
;作者:张绍斌 shaobinz@163.com
;日期:2008/05/28
;版本:Ver1.0
;*****************************************************************************************
TEST_ON BIT P1.0
BELL BIT P1.1
CD_4INH BIT P1.2
CD_4A BIT P1.3
CD_4B BIT P1.4
CD_4C BIT P1.5
CD_4D BIT P1.6
CD_3INH BIT P1.7
CD_3A BIT P3.0
CD_3B BIT P3.1
CD_3C BIT P3.3
CD_3D BIT P3.4
CD_2INH BIT P3.5
CD_2A BIT P3.6
CD_2B BIT P3.7
CD_2C BIT P2.0
CD_2D BIT P2.1
CD_1INH BIT P2.2
CD_1A BIT P2.3
CD_1B BIT P2.4
CD_1C BIT P2.5
CD_1D BIT P2.6
FIRST BIT P0.7
SECOND BIT P2.7
TMRVAR EQU 63536 ;2MS
DISPBUF1 EQU 30H
DISPBUF2 EQU 31H
CH_NUMBER EQU 32H
SELECT_TIME EQU 33H
FLASH_TIME EQU 34H
OFF_TIME EQU 35H
COUNTER EQU 36H
mS20H EQU 0B1H ;定时器0初值
mS20L EQU 0E0H ;12M 20MS;45536=B1E0H 65536-45536=20000US=20MS
ALL_FLAG DATA 20H
START_FLAG BIT ALL_FLAG.0H
FLASH_FLAG BIT ALL_FLAG.1H
GO_OF_FLAG BIT ALL_FLAG.2H
DA_CHAR_O EQU 00 ;"O"
DA_CHAR_G EQU 17 ;"G"
DA_CHAR_F EQU 15 ;"F"
DA_CHAR_T EQU 13 ;"D"
DA_CHAR_NULL EQU 16 ;
STACK EQU 60H
;/////////////////////////////////////////////////////////////////////////////////////////
ORG 00H
JMP START ;主程序入口
ORG 03H
RETI ;外中断0入口
ORG 0BH
JMP TIME0 ;定时器0
ORG 13H
RETI ;外中断1入口
ORG 1BH
JMP TIME1 ;定时器1
START:
MOV R0 ,#0FFH
CLR A
START1:
MOV @R0 ,A
DJNZ R0, START1 ;CLEAR ALL RAM
MOV SP, #STACK
MOV IE,#00001010B ;EA,X,ET2,ES,ET1,EX1,ET0,EX0
MOV TMOD,#11H ;TWO 16BIT TIMER
MOV IP,#00001001B ;X,X,PT2,PS,PT1,PX1,PT0,PX0
MOV P0,#0FFH
MOV Th1,#HIGH(TMRVAR)
MOV TL1,#LOW(TMRVAR)
MOV TH0,#MS20H
MOV TL0,#MS20H
mov p0,#0ffh
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh
SETB CD_1INH ;全部关掉
SETB CD_2INH
SETB CD_3INH
SETB CD_4INH
; MOV DISPBUF1, #DA_CHAR_O
; MOV DISPBUF2, #DA_CHAR_G
SETB TR1
SETB TR0
SETB EA
CALL BEEP
CALL BEEP
LOOP:
JB START_FLAG,LOOP1
JB GO_OF_FLAG, LOOP_A
MOV DISPBUF1, #DA_CHAR_O
MOV DISPBUF2, #DA_CHAR_G ;"GO"
LJMP LOOP0
LOOP_A:
MOV DISPBUF1, #DA_CHAR_F
MOV DISPBUF2, #DA_CHAR_O ;"of"
MOV OFF_TIME, #50
LOOP_B:
MOV A, OFF_TIME
JNZ LOOP_B
CLR GO_OF_FLAG
JMP LOOP
LOOP0:
JB TEST_ON, LOOP ;测试
CALL DELAY_10MS
JB TEST_ON, LOOP ;去抖
SETB START_FLAG
LOOP1:
CALL DISPLAY_NUMBER
CALL SELECT_CH ;CH_NUM出口数据
CALL CH_WORK
LJMP LOOP
;//////////////////////////////////////////////////////////////////////////////////////////
BEEP:
setb bell
MOV R6,#200
DEX1: MOV R7,#125
DEX2:
DJNZ R7,DEX2
DJNZ R6,dex1
clr bell
RET
;//////////////////////////////////////////////////////////////////////////////////////////
DISPLAY_NUMBER:
MOV A,CH_NUMBER ;十六进转十进制子程序
MOV B,#100
DIV AB
mov a,b
mov b,#10
div ab
MOV dispbuf2,A ;把十位数值存入高位显示缓冲区
MOV dispbuf1,B ;把个位数值存入低位显示缓冲区
RET
;---------------------------------------------------------------------------------------------------
;不需要很精确的一些延时子程序,12M
DELAY_5SEC:; ;5S延时
MOV R4,#50
SJMP DELAY100MS
DELAY_2SEC:; ;2S延时
MOV R4,#20
SJMP DELAY100MS
DELAY_1SEC: ;1S延时
MOV R4,#10
SJMP DELAY100MS
DELAY_500MS: ;500MS延时
MOV R4,#05
SJMP DELAY100MS
DELAY_200MS: ;200MS延时
MOV R4,#02
DELAY100MS:
CALL DELAY_100MS
DJNZ R4,DELAY100MS
RET
DELAY_100MS:
MOV R2,#100 ;100MS延时
SJMP DELAY_1MS
DELAY_50MS:
MOV R2,#50 ;50MS延时
SJMP DELAY_1MS
DELAY_20MS:
MOV R2,#20 ;20MS延时
SJMP DELAY_1MS
DELAY_10MS:
MOV R2,#10 ;10MS延时
DELAY_1MS: ;1MS延时R2赋值0
MOV R3,#250
DJNZ R3,$
DJNZ R3,$ ;FOR 12M ;1+2X250+2X250+1 US
DJNZ R2,DELAY_1MS
RET
;//////////////////////////////////////////////////////////////////////////////////////////
SELECT_CH:
MOV A , SELECT_TIME
JNZ SELECT_CH_END
MOV SELECT_TIME, #10
MOV A,CH_NUMBER
INC A
MOV CH_NUMBER, A
CJNE A, #65, SELECT_CH_END
CALL BEEP ;哔哔,提示结束!
CALL BEEP
SETB GO_OF_FLAG
CLR START_FLAG
MOV CH_NUMBER,#00H
SELECT_CH_END: RET
;//////////////////////////////////////////////////////////////////////////////////////////
CH_WORK: ;入口数据CH_NUM:1~64
MOV A, CH_NUMBER
;CD4067 NUMBER1 1~16
CH_1: CJNE A, #1 , CH_2
CLR CD_1INH
SETB CD_2INH
SETB CD_3INH
SETB CD_4INH
CLR CD_1A ;A B C D
CLR CD_1B ;0 0 0 0
CLR CD_1C
CLR CD_1D
CH_2: CJNE A, #2,CH_3
CLR CD_1INH
SETB CD_2INH
SETB CD_3INH
SETB CD_4INH
SETB CD_1A ;A B C D
CLR CD_1B ;1 0 0 0
CLR CD_1C
CLR CD_1D
CH_3: CJNE A, #3,CH_4
CLR CD_1INH
SETB CD_2INH
SETB CD_3INH
SETB CD_4INH
CLR CD_1A ;A B C D
SETB CD_1B ;0 1 0 0
CLR CD_1C
CLR CD_1D
CH_4: CJNE A, #4,CH_5
CLR CD_1INH
SETB CD_2INH
SETB CD_3INH
SETB CD_4INH
SETB CD_1A ;A B C D
SETB CD_1B ;1 1 0 0
CLR CD_1C
CLR CD_1D
CH_5: CJNE A, #5,CH_6
CLR CD_1INH
SETB CD_2INH
SETB CD_3INH
SETB CD_4INH
CLR CD_1A ;A B C D
CLR CD_1B ;0 0 1 0
SETB CD_1C
CLR CD_1D
CH_6: CJNE A, #6,CH_7
CLR CD_1INH
SETB CD_2INH
SETB CD_3INH
SETB CD_4INH
SETB CD_1A ;A B C D
CLR CD_1B ;1 0 1 0
SETB CD_1C
CLR CD_1D
CH_7: CJNE A, #7,CH_8
CLR CD_1INH
SETB CD_2INH
SETB CD_3INH
SETB CD_4INH
CLR CD_1A ;A B C D
SETB CD_1B ;0 1 1 0
SETB CD_1C
CLR CD_1D
CH_8: CJNE A, #8,CH_9
CLR CD_1INH
SETB CD_2INH
SETB CD_3INH
SETB CD_4INH
SETB CD_1A ;A B C D
SETB CD_1B ;1 1 1 0
SETB CD_1C
CLR CD_1D
CH_9: CJNE A, #9,CH_10
CLR CD_1INH
SETB CD_2INH
SETB CD_3INH
SETB CD_4INH
CLR CD_1A ;A B C D
CLR CD_1B ;0 0 0 1
CLR CD_1C
SETB CD_1D
CH_10: CJNE A, #10,CH_11
CLR CD_1INH
SETB CD_2INH
SETB CD_3INH
SETB CD_4INH
SETB CD_1A ;A B C D
CLR CD_1B ;1 0 0 1
CLR CD_1C
SETB CD_1D
CH_11: CJNE A, #11,CH_12
CLR CD_1INH
SETB CD_2INH
SETB CD_3INH
SETB CD_4INH
CLR CD_1A ;A B C D
SETB CD_1B ;0 1 0 1
CLR CD_1C
SETB CD_1D
CH_12: CJNE A, #12,CH_13
CLR CD_1INH
SETB CD_2INH
SETB CD_3INH
SETB CD_4INH
SETB CD_1A ;A B C D
SETB CD_1B ;1 1 0 1
CLR CD_1C
SETB CD_1D
CH_13: CJNE A, #13,CH_14
CLR CD_1INH
SETB CD_2INH
SETB CD_3INH
SETB CD_4INH
CLR CD_1A ;A B C D
CLR CD_1B ;0 0 1 1
SETB CD_1C
SETB CD_1D
CH_14: CJNE A, #14,CH_15
CLR CD_1INH
SETB CD_2INH
SETB CD_3INH
SETB CD_4INH
SETB CD_1A ;A B C D
CLR CD_1B ;1 0 1 1
SETB CD_1C
SETB CD_1D
CH_15: CJNE A, #15,CH_16
CLR CD_1INH
SETB CD_2INH
SETB CD_3INH
SETB CD_4INH
CLR CD_1A ;A B C D
SETB CD_1B ;0 1 1 1
SETB CD_1C
SETB CD_1D
CH_16: CJNE A, #16,CH_17
CLR CD_1INH
SETB CD_2INH
SETB CD_3INH
SETB CD_4INH
SETB CD_1A ;A B C D
SETB CD_1B ;1 1 1 1
SETB CD_1C
SETB CD_1D
;//////////////////////////////////////////////////////////////////////////////////
;CD4067 NUMBER2 17~32
CH_17: CJNE A, #17 , CH_18
SETB CD_1INH
CLR CD_2INH
SETB CD_3INH
SETB CD_4INH
CLR CD_2A ;A B C D
CLR CD_2B ;0 0 0 0
CLR CD_2C
CLR CD_2D
CH_18: CJNE A, #18,CH_19
SETB CD_1INH
CLR CD_2INH
SETB CD_3INH
SETB CD_4INH
SETB CD_2A ;A B C D
CLR CD_2B ;1 0 0 0
CLR CD_2C
CLR CD_2D
CH_19: CJNE A, #19,CH_20
SETB CD_1INH
CLR CD_2INH
SETB CD_3INH
SETB CD_4INH
CLR CD_2A ;A B C D
SETB CD_2B ;0 1 0 0
CLR CD_2C
CLR CD_2D
CH_20: CJNE A, #20,CH_21
SETB CD_1INH
CLR CD_2INH
SETB CD_3INH
SETB CD_4INH
SETB CD_2A ;A B C D
SETB CD_2B ;1 1 0 0
CLR CD_2C
CLR CD_2D
CH_21: CJNE A, #21,CH_22
SETB CD_1INH
CLR CD_2INH
SETB CD_3INH
SETB CD_4INH
CLR CD_2A ;A B C D
CLR CD_2B ;0 0 1 0
SETB CD_2C
CLR CD_2D
CH_22: CJNE A, #22,CH_23
SETB CD_1INH
CLR CD_2INH
SETB CD_3INH
SETB CD_4INH
SETB CD_2A ;A B C D
CLR CD_2B ;1 0 1 0
SETB CD_2C
CLR CD_2D
CH_23: CJNE A, #23,CH_24
SETB CD_1INH
CLR CD_2INH
SETB CD_3INH
SETB CD_4INH
CLR CD_2A ;A B C D
SETB CD_2B ;0 1 1 0
SETB CD_2C
CLR CD_2D
CH_24: CJNE A, #24,CH_25
SETB CD_1INH
CLR CD_2INH
SETB CD_3INH
SETB CD_4INH
SETB CD_2A ;A B C D
SETB CD_2B ;1 1 1 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -