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

📄 remotest.asm

📁 遥控器生产自动测试架程序,有电路图,显示按键控制,全自动测试
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;*****************************************************************************************
;名称:遥控器成品自动测试架
;文件: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 + -