• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

这个程序怎样使它只有一个演示?

;=====================================================
;89S51F板DEMO演示子程序.
;----------------------start-----------------------
  
         KEY_NUM EQU 30H
         MD EQU 31H
         BEEP   BIT  P2.0
         LED_R  BIT  P1.0
         LED_Y  BIT  P1.2
         LED_G  BIT  P1.4
        org 000h
        JMP main
        org 0023h
        ljmp  rx_int      
        ORG 100H
   main:MOV SP ,#60H
        mov tmod,#23h
        mov scon,#0d0h
        mov th1,#0e6h    ;串行通信1200-n-2
        mov tl0,#0E6H
        setb tr1
        setb es
        setb ea
        MOV P1,#00H      ;TEST
        MOV P0,#00H
        MOV P2,#00H
        LCALL DELAY
        MOV P1,#0FFH      ;INIT
        MOV P2,#0FFH
        MOV P0,#0FFH
        MOV P3,#0FFH
        CLR A
        MOV MD ,#00H
        MOV A,P3        ;读地址开关SW1-SW4
        CPL A
        ANL A,#0F0H
        SWAP A
        MOV MD,A
        RL A
        MOV DPTR,#JUMP
        JMP @A+DPTR
  JUMP: AJMP MOD0       ;子程序散转到MOD0__MOD15
        AJMP MOD1
        AJMP MOD2
        AJMP MOD3
        AJMP MOD4
        AJMP MOD5
        AJMP MOD6
        AJMP MOD7
        AJMP MOD8
        AJMP MOD9
        AJMP MOD10
        AJMP MOD11
        AJMP MOD12
        AJMP MOD13
        AJMP MOD14
        AJMP MOD15
;----------P0:KEY INTO BIN-------------
;键盘二进制译码      
  MOD0: MOV A,MD
        LCALL DISP0
        LCALL DELAY
        LCALL DELAY
     M0:LCALL KEY
        MOV P0,#0FFH
        MOV A,KEY_NUM
        MOV DPTR,#LED_CODE_P2
        MOVC A,@A+DPTR
        MOV P2,A
        MOV A,KEY_NUM
        SWAP A
        CPL A
        MOV P1,A
        MOV  P0,#0ffh
        mov  sbuf,a
        JMP M0
;---------P1 KEY INTO BCD------------
;键盘十进制译码      
  MOD1:MOV A,MD
       LCALL DISP0
       LCALL DELAY
       LCALL DELAY
    M1:LCALL KEY
       MOV P0,#0FFH
       MOV A,KEY_NUM
       DA A
       LCALL DISP1    
       MOV A,KEY_NUM
       SWAP A
       CPL A
       MOV P1,A
       JMP M1      
;------------P2 SEC_WATCH_TABLE---------------
;电子秒表        
  MOD2:MOV A,MD
       LCALL DISP0
       LCALL DELAY
       LCALL DELAY
       MOV P1,#0FFH
       MOV R0,#00H
       MOV A,#00H
       JB P3.0,$
       MOV P0,#0C0H
       MOV P2,#0C0H
   M21:MOV R3,#10h
   M22:LCALL DELAY   ;SEC_LOOP
       CPL P1.4
       DJNZ R3,M22
       CPL P1.7
       MOV A,R0
       ADD A,#01H
       DA A
       MOV R0,A
       LCALL DISP1
       CJNE R0,#60h,M21
       clr p2.7
       lcall delay
       setb p2.7
       JMP MOD2
;-----------P3 TRAFFIC------------
;模拟交通灯        
  MOD3:MOV A,MD
       LCALL DISP0
       LCALL DELAY
       LCALL DELAY
   M3: MOV R0,#30
       CLR LED_R
   M31:LCALL DELAY
       DJNZ R0,M31
       SETB LED_R
       MOV R0,#06H
       CLR  LED_Y
   M32:LCALL DELAY
       LCALL DELAY
       CPL LED_Y
       DJNZ R0,M32
       SETB LED_Y
       MOV R0,#30
       CLR  LED_G
   M33:LCALL DELAY
       DJNZ R0,M33    
       SETB LED_G
       JMP M3    
;--------P4 DISPLAY_DEMO1------------
;数码管笔段教学
  MOD4: MOV A,MD
        LCALL DISP0
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        JB P3.0,$        ;a
        MOV P2,#0FFH
        MOV P0,#88H
    M41:LCALL DELAY
        LCALL DELAY
        CPL P2.7
        JB P3.0,M41
        SETB P2.7    
        MOV P0,#83H      ;b
    M42:LCALL DELAY
        LCALL DELAY
        CPL P2.6
        JB P3.0,M42
        SETB P2.6        
        MOV P0,#0C6H
    M43:LCALL DELAY      ;C
        LCALL DELAY
        CPL P2.5
        JB P3.0,M43
        SETB P2.5    
        MOV P0,#0A1H     ;D
    M44:LCALL DELAY
        LCALL DELAY
        CPL P2.4
        JB P3.0,M44
        SETB P2.4    
        MOV P0,#86H     ;E
    M45:LCALL DELAY
        LCALL DELAY
        CPL P2.3
        JB P3.0,M45
        SETB P2.3    
        MOV P0,#8EH    ;F
    M46:LCALL DELAY
        LCALL DELAY
        CPL P2.2
        JB P3.0,M46
        SETB P2.2    
        MOV P0,#90H    ;G
    M47:LCALL DELAY
        LCALL DELAY
        CPL P2.1
        JB P3.0,M47
        SETB P2.1
        MOV P0,#89H    ;H
    M48:LCALL DELAY
        LCALL DELAY
        CPL P2.0
        JB P3.0,M48
        SETB P2.0
        JMP MOD4        
;---------P5,DISP_DEMO2------------------
;数码管笔段动画      
  MOD5: MOV A,MD
        LCALL DISP0
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        JB P3.0,$
        MOV P0,#0FFH
        MOV P2,#0FFH
        CLR P2.7
        CLR P0.0
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        CLR P2.6
        CLR P0.5
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        CLR P2.5
        CLR P0.4
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        CLR P2.4
        CLR P0.3
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        CLR P2.3
        CLR P0.2
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        CLR P2.2
        CLR P0.1
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        CLR P2.1
        CLR P0.6
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        MOV P2,#0FFH
        MOV P0,#0FFH
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        MOV P2,#00H                          
        MOV P0,#00H
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        MOV P2,#0FFH
        MOV P0,#0FFH
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        MOV P2,#0FFH
        MOV P0,#0FFH
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        JMP MOD5      
;---------P6 DISP_DEMO3-------------------------
;数码管显示0--F
  MOD6: MOV A,MD
        LCALL DISP0
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        JB P3.0,$
        MOV R0,#00H
    M6: MOV A,R0
        MOV DPTR,#LED_CODE_P2
        MOVC A,@A+DPTR
        MOV P2,A
        MOV  A,R0
        MOV DPTR,#LED_CODE_P0
        MOVC A,@A+DPTR
        MOV P0,A
        MOV A,R0
        SWAP A
        CPL A
        MOV P1,A
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        INC R0
        CJNE R0,#10H,M6  
        MOV R0,#00H
        JMP M6
;------------P7 DISP_DEMO4----------------
;数码管显示0--F,左移循环
  MOD7: MOV A,MD
        LCALL DISP0
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        JB P3.0,$
   M71: MOV P0,#0FFH
        MOV P2,#0FFH
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        MOV P0,#0FFH
        MOV P2,#00000011B
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        MOV R0,#00H
        MOV R3,#01H
   M72: MOV A,R0
        MOV DPTR,#LED_CODE_P0
        MOVC A,@A+DPTR
        MOV P0,A
        INC R0
        MOV A,R3
        MOV DPTR,#LED_CODE_P2
        MOVC A,@A+DPTR
        MOV P2,A
        INC R3
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        CJNE R3,#11H,M72
        MOV P0,#0FFH
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        JMP MOD7
;----------P8 DISP_DEMO5--------
;数码管显示0--F,右移循环      
  MOD8: MOV A,MD
        LCALL DISP0
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        JB P3.0,$
   M81: MOV P0,#0FFH
        MOV P2,#0FFH
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        MOV P2,#0FFH
        MOV P0,#0C0H
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        MOV R0,#00H
        MOV R3,#01H
   M82: MOV A,R0
        MOV DPTR,#LED_CODE_P2
        MOVC A,@A+DPTR
        MOV P2,A
        INC R0
        MOV A,R3
        MOV DPTR,#LED_CODE_P0
        MOVC A,@A+DPTR
        MOV P0,A
        INC R3
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        CJNE R3,#11H,M82
        MOV P2,#0FFH
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        JMP MOD8
;---------P9 LED_DEMO1------------------
;LED右移显示
  MOD9: MOV A,MD
        LCALL DISP0
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        JB P3.0,$
    M91:MOV A,#0EFH
        MOV R0,#08H
    M92:MOV P1,A
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        RL A
        DJNZ R0,M92
        JMP M91
;---------P10 LED_DEMO2----------------
;LED左移显示        
  MOD10:MOV A,MD
        LCALL DISP0
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        JB P3.0,$
    MA1:MOV A,#7FH
        MOV R0,#08H
    MA2:MOV P1,A
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        RR A
        DJNZ R0,MA2
        JMP MA1
;---------P11 LED_DEMO3----------  
;LED 彩灯效果
  MOD11:MOV A,MD
        LCALL DISP0
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        JB P3.0,$
        MOV P1,#0FFH
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        mov p1,#0e7h
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        MOV P1,#0dbH
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        mov p1,#0bdh
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        MOV P1,#7eH
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        mov p1,#00h
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        MOV P1,#0FFH
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        mov p1,#7eh
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        MOV P1,#0bdH
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        mov p1,#0dbh
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        MOV P1,#0e7H
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        mov p1,#00h
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        MOV P1,#0FFH
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        mov p1,#00h
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        JMP MOD11
;----------P12 KEY_DEMO------------  
;按键提示音
  MOD12:MOV A,MD
        LCALL DISP0
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
   m12: lcall key  
        cjne a,#00h,bp
        setb p2.0
        jmp m12
   bp:  clr p2.0
        lcall  delay
        jmp m12
;----------P13 ADD_DEMO---------
;加法器
  MOD13:MOV A,MD
        LCALL DISP0
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        JB P3.0,$
        MOV R0,#00H
   M131:MOV A,R0
        PUSH ACC
        ANL A,#0F0H
        SWAP A
        MOV DPTR,#LED_CODE_P0
        MOVC A,@A+DPTR
        MOV P0,A
        POP ACC
        ANL A,#0FH
        MOV  DPTR,#LED_CODE_P2
        MOVC A,@A+DPTR
        MOV P2,A
   M132:JB P3.0,$
        LCALL DELAY
        JB P3.0,M132
        JNB P1.0,$
        INC R0
        JMP M131
;---------P14 DEC_DEMO-----------
;减法器      
  MOD14:MOV A,MD
        LCALL DISP0
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        JB P3.0,$
        MOV R0,#0FFH
   M141:MOV A,R0
        PUSH ACC
        ANL A,#0F0H
        SWAP A
        MOV DPTR,#LED_CODE_P0
        MOVC A,@A+DPTR
        MOV P0,A
        POP ACC
        ANL A,#0FH
        MOV  DPTR,#led_code_p2
        MOVC A,@A+DPTR
        MOV P2,A
   M142:JB P3.0,$
        LCALL DELAY
        JB P3.0,M142
        JNB P3.0,$
        DEC R0
        JMP M141
;---------P15,CALC_DEMO-----------  
;计算器
  MOD15:MOV A,MD
        LCALL DISP0
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        JB P3.0,$
        MOV R0,#00H
   M151:MOV A,R0
        PUSH ACC
        ANL A,#0F0H
        SWAP A
        MOV DPTR,#LED_CODE_P0
        MOVC A,@A+DPTR
        MOV P0,A
        POP ACC
        ANL A,#0FH
        mov  dptr,#led_code_p2
        MOVC A,@A+DPTR
        MOV P2,A
   M152:LCALL KEY
        JNB P3.0,$
        JNB P3.1,$
        CJNE A,#01H,M153
        INC R0
        JMP M151
   M153:CJNE A,#02H,M151
        CJNE R0,#00H,M154
        JMP M151
   M154:DEC R0
        JMP M151
;----------------rx----------
;串行中断
rx_int:push acc
        push psw
        jnb ri,end_rx
        clr ri
        mov a,sbuf
        mov sbuf,a
        jnb ti,$
        clr ti
        clr  beep
        lcall delay
        lcall  delay
        setb  beep
        
end_rx: pop psw
        pop acc
        reti  
;===============SUB  LIB============================    
DISP0: MOV P0,#8CH            ;"P"
        PUSH ACC          
        MOV DPTR,#LED_CODE_P2
        MOVC A,@A+DPTR
        MOV P2,A
        POP ACC
        RET
DISP1:;DA A
       PUSH ACC
       ANL A,#0FH
       MOV DPTR,#LED_CODE_P2
       MOVC A,@A+DPTR
       MOV P2,A
       POP ACC
       ANL A,#0F0H
       SWAP A
       mov   dptr,#led_code_p0
       MOVC A,@A+DPTR
       MOV P0,A
       RET      
DELAY: MOV R6,#0F0H
   DL1: MOV R7,#0F0H
        DJNZ R7,$
        DJNZ R6,DL1
        RET

   KEY: MOV A,P3             ;jianpian
        ANL A,#0FH
        MOV KEY_NUM,A
        LCALL DELAY
        MOV A,P3
        ANL A,#0FH
        CJNE A,KEY_NUM,KEY
        CPL A
        ANL A,#0FH
        MOV KEY_NUM,A
        RET
        
        
        
LED_CODE_P0:
         DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H     ;"0-F"
         DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH          
LED_CODE_P2:        
         DB 00000011B,10011111B,00100101B,00001101B
         DB 10011001B,01001001B,01000001B,00011111B
         DB 00000001B,00001001B,00010001B,11000001B
         DB 01100011B,10000101B,01100001B,01110001B
        END

全部回复(1)
正序查看
倒序查看
maychang
LV.6
2
2005-09-28 20:59
太多了,而且缺少注释,很费力.
“一个演示”是什么意思?不明白.
0
回复