专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

18简单显示 _随机查询_以本次记录为起点查询

作者:佚名   来源:本站原创   点击数:  更新时间:2013年11月12日   【字体:
   TJ0109_1 DATA 50H ;1至9洞数据统计
    TJ0109_2 DATA 51H ;1至9洞数据统计
    TJ0109_3 DATA 52H ;1至9洞数据统计
    TJ1018_1 DATA 53H ;10至18洞数据统计
    TJ1018_2 DATA 54H ;10至18洞数据统计
    TJ1018_3 DATA 55H ;10至18洞数据统计
    TJ0118_1 DATA 56H ;1至18洞数据统计
    TJ0118_2 DATA 57H ;1至18洞数据统计
    TJ0118_3 DATA 58H ;1至18洞数据统计
    SHUJU_G  DATA 56H
    SHUJU_S  DATA 57H
    SHUJU_B  DATA 58H
    SHUJU_W  DATA 75H
    SHUJU_Z  DATA 76H
   ;;;;;;;;;;;;;;;;;;;;;;;;;;;
    DON1 DATA    31H    ;洞1数据
    DON2 DATA    32H
    DON3 DATA    33H
    DON4 DATA    34H
    DON5 DATA    35H
    DON6 DATA    36H
    DON7 DATA    37H
    DON8 DATA    38H
    DON9 DATA    39H
    DON10 DATA    3AH
    DON11 DATA    3BH
    DON12 DATA    3CH
    DON13 DATA    3DH
    DON14 DATA    3EH
    DON15 DATA    3FH
    DON16 DATA    40H
    DON17 DATA    41H
    DON18 DATA    42H
;;;;;;;;;;;;;;;;;;;;;;;
    KS  BIT P0.0            ;开始
    JA  BIT P0.1            ;加
    JD  BIT P0.2            ;减
    CX  BIT P0.3            ;查询
;;;;;;;;;;;;;;;;;;;;;;;;;
    ORG   0H                        ;程序代码由地址0开始执行
MAIN:
;;;;;;;;;;;;;;;;;;;;;;;;按任意键进入人员编号设置
SX_RY:
        MOV P3,#0FFH  ;;;;;;关闭显示
        JB  KS,SX_RY_1
        JNB KS,$
        AJMP  BISAI_1
SX_RY_1:
        JB  JA,SX_RY_2
        JNB JA,$
        AJMP  BISAI_1
SX_RY_2:
        JB  JD,SX_RY_3
        JNB JD,$
        AJMP  BISAI_1
SX_RY_3:
        JB  CX,SX_RY_4
        JNB CX,$
        AJMP  BISAI_1
SX_RY_4:
        AJMP SX_RY
        RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;数据调用
SHUJU_T:LCALL SHUJU_1_9
        LCALL SHUJU_10_18
        LCALL  SHUJU_0118
        RET
;;;;;;;;;;;;;;;;;;;;;;;;洞位将冲突的数据暂时保存起来
BISAI_1:  MOV R1,#1
          MOV R0,#31H
BISAI_1_A:
          MOV SHUJU_Z,R0 ;将数据暂时保存
          MOV SHUJU_W,R1
          LCALL SHUJU_T
BISAI_1_B:;;;;;;;;;;作为查询时的返回入口
          MOV R0,SHUJU_Z ;将数据送回
          MOV R1,SHUJU_W
          MOV R2,#50
          MOV R3,#50
BISAI_1_2:LCALL XSLED_CX
          DEC R2
          MOV A,R2
          CJNE A,#0,BISAI_1_4
BISAI_1_3: LCALL XSLED_CX_2
           DEC R3
           MOV A,R3
           CJNE A,#0,BISAI_1_6
           AJMP BISAI_1_A
           RET
BISAI_1_4: JB CX,BISAI_1_4_B
           JNB CX,$
           MOV SHUJU_Z,R0 ;将数据暂时保存
           MOV SHUJU_W,R1
           LCALL CX_1_B
           RET
BISAI_1_4_B:
           JB KS,BISAI_1_5
           JNB KS,$
           INC R0
           INC R1
           MOV A,R1
           CJNE A,#19,BISAI_1_2
           LCALL BISAI_37
           RET
BISAI_1_5:  MOV A,@R0
            LCALL BISAI_T
            MOV @R0,A
            AJMP BISAI_1_2
            RET
BISAI_1_6: JB CX,BISAI_1_6_B
           JNB CX,$
           MOV SHUJU_Z,R0 ;将数据暂时保存
           MOV SHUJU_W,R1
           LCALL CX_1_B
           RET
BISAI_1_6_B:
            JB KS,BISAI_1_7
            JNB KS,$
            INC R0
            INC R1
            MOV A,R1
            CJNE A,#19,BISAI_1_3
            LCALL BISAI_37
            RET
BISAI_1_7:  MOV A,@R0
            LCALL BISAI_T
            MOV @R0,A
            AJMP BISAI_1_3
            RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;比赛完成,不再进行数据登记
BISAI_37:
         MOV R0,#100  ;;;;;;;; 修改参数,就可以改变显示的延时时间
         MOV R1,#100   ;;;;;;;; 修改参数,就可以改变显示的延时时间
XS_1:    LCALL ANJIAN_SX
         LCALL XSLED
         MOV P3,#0FFH
         DEC R0
         MOV A,R0
         CJNE A,#0,XS_1
         DEC R1
         MOV A,R1
         CJNE A,#0,XS_2
         LCALL ANJIAN_SX
         RET
XS_2:    MOV R0,#100
         AJMP XS_1
         RET
;;;;;;;;;;;;;;;;;;;;;;;;;;洞位数据调整
BISAI_T:  JB JA,BISAI_T_1
          JNB JA,$
          INC A
          RET
BISAI_T_1:JB JD,BISAI_T_2
          JNB JD,$
          DEC A
          RET
BISAI_T_2:RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;显示时,按下,延时恢复
ANJIAN_SX:
        JB  KS,ANJIAN_SX_1
        JNB KS,$
        AJMP  BISAI_37
ANJIAN_SX_1:
        JB  JA,ANJIAN_SX_2
        JNB JA,$
        AJMP  BISAI_37
ANJIAN_SX_2:
        JB  JD,ANJIAN_SX_3
        JNB JD,$
        AJMP  BISAI_37
ANJIAN_SX_3:
        JB  CX,ANJIAN_SX_4
        JNB CX,$
        AJMP  CX_1
ANJIAN_SX_4:
        RET
;;;;;;;;;;;;;;;;;;;数据0118
SHUJU_0118:
             MOV A,TJ0109_1
             MOV B,TJ1018_1
             ADD A,B
             MOV TJ0118_1,A
             MOV A,TJ0109_2
             MOV B,TJ1018_2
             ADD A,B
             MOV TJ0118_2,A
             MOV A,TJ0109_3
             MOV B,TJ1018_3
             ADD A,B
             MOV TJ0118_3,A
             MOV A,TJ0118_3
             MOV B,#10
             DIV AB
             MOV TJ0118_3,B
             ADD A,TJ0118_2
             MOV B,#10
             DIV AB
             MOV TJ0118_2,B
             ADD A,TJ0118_1
             MOV B,#10
             DIV AB
             MOV TJ0118_1,B
             RET
;;;;;;;;;;;;;数据累加,尽量使用一个R争取不要冲突使用
SHUJU_1_9:
             MOV TJ0109_1,#0
             MOV TJ0109_2,#0
             MOV TJ0109_3,#0
             MOV R0,#31H
SHUJU_1_9_2:
             MOV A,@R0
             ADD A,TJ0109_3
             MOV B,#100
             DIV AB
             MOV R1,A;;;;;;bai
             MOV A,B
             MOV B,#10
             DIV AB
             MOV R2,A;;;;;shi
             MOV TJ0109_3,B;;;;ge
             MOV A,TJ0109_2
             MOV B,R2
             ADD A,B
             MOV B,#10
             DIV AB
             MOV R3,A
             MOV TJ0109_2,B;;;shi
             MOV A,R1
             MOV B,R3
             ADD A,B
             MOV TJ0109_1,A
             INC R0
             MOV A,R0
             CJNE A,#3AH,SHUJU_1_9_2
             RET
SHUJU_10_18:
             MOV TJ1018_1,#0
             MOV TJ1018_2,#0
             MOV TJ1018_3,#0
             MOV R0,#3AH
SHUJU_10_18_2:
             MOV A,@R0
             ADD A,TJ1018_3
             MOV B,#100
             DIV AB
             MOV R1,A;;;;;;bai
             MOV A,B
             MOV B,#10
             DIV AB
             MOV R2,A;;;;;shi
             MOV TJ1018_3,B;;;;ge
             MOV A,TJ1018_2
             MOV B,R2
             ADD A,B
             MOV B,#10
             DIV AB
             MOV R3,A
             MOV TJ1018_2,B;;;shi
             MOV A,R1
             MOV B,R3
             ADD A,B
             MOV TJ1018_1,A
             INC R0
             MOV A,R0
             CJNE A,#43H,SHUJU_10_18_2
             RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;比赛结束使用查询功能
CX_1:   MOV R1,#1
        MOV R0,#31H
CX_1_1: JB KS,CX_1_2
        JNB KS,$
        LCALL BISAI_37
        RET
CX_1_2: JB JA,CX_1_3
        JNB JA,$
        INC R1
        INC R0
        MOV A,R0
        CJNE A,#43H,CX_1_1
        AJMP CX_1
CX_1_3: JB JD,CX_1_4
        JNB JD,$
        DEC R1
        DEC R0
        MOV A,R0
        CJNE A,#30H,CX_1_1
        AJMP CX_2
        RET
CX_1_4: LCALL XSLED_CX
        AJMP CX_1_1
        RET
CX_2:   MOV R1,#18
        MOV R0,#42H
        AJMP CX_1_1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;比赛过程查询数据
CX_1_C:   MOV R1,#1
          MOV R0,#31H
CX_1_B:   JB KS,CX_1_2_B
          JNB KS,$
          LCALL BISAI_1_B
          RET
CX_1_2_B: JB JA,CX_1_3_B
          JNB JA,$
          INC R1
          INC R0
          MOV A,R1
          CJNE A,#19,CX_1_3_B
          AJMP CX_1_C
          RET
CX_1_3_B: JB JD,CX_1_4_B
          JNB JD,$
          DEC R1
          DEC R0
          MOV A,R1
          CJNE A,#0,CX_1_B
          AJMP CX_2_B
          RET
CX_1_4_B: LCALL XSLED_CX
        AJMP CX_1_B
        RET
CX_2_B: MOV R1,#18
        MOV R0,#42H
        AJMP CX_1_B
;;;;;;;;;;;;;;;;;;;;数据显示
XSLED_CX:
          LCALL XSLED
          MOV A,R1   ;;;;;;;;;;;;;设置洞位1
          LCALL LED_LED_10
          MOV A,@R0 ;;;;;;;;;;;;;将相应洞位数据传给A
          LCALL LED_LED_10
          RET
;;;;;;;;;;;;;;;;;;;;闪烁数据显示
XSLED_CX_2:
          LCALL XSLED
          MOV A,R1   ;;;;;;;;;;;;;设置洞位1
          LCALL LED_LED_10
          ;MOV A,@R0 ;;;;;;;;;;;;;将相应洞位数据传给A
          ;LCALL LED_LED_10
          RET
;;;;;;;;;;;;;;;;;;;;;;;;;运行时数码管显示
XSLED:
    MOV P3,#0D0H
    MOV A,TJ0118_1
    LCALL LED
    INC P3
    MOV A,TJ0118_2
    LCALL LED
    INC P3
    MOV A,TJ0118_3
    LCALL LED
    INC P3
    RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;数码显示调用程序
LED:  MOV DPTR,#TABLE
      MOVC A,@A+DPTR
      MOV P1,A
      LCALL DELAY1
      RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;; 除以100得百位数
LED_LED_100:
        MOV B,#100
        DIV AB
        LCALL LED
        INC P3
        MOV A,B
;;;;;;;;;;;;;;;;;;;;;;;;;;;除以10得十位数
LED_LED_10:
        MOV B,#10
        DIV AB
        LCALL LED
        INC P3
        MOV A,B
;;;;;;;;;;;;;;;;;;;;;;;;;;不除得个位数
LED_LED_1:
        LCALL LED
        INC P3
        RET
TABLE:
   DB  0C0H        ;"0"
   DB  0F9H        ;"1"
   DB  0A4H        ;"2"
   DB  0B0H        ;"3"
   DB   99H        ;"4"
   DB   92H        ;"5"
   DB   82H        ;"6"
   DB  0F8H        ;"7"
   DB   80H        ;"8"
   DB   90H        ;"9"
   DB   0FFH       ;"-"
   DB   0FFH       ;"-"
   DB   0BFH       ;"-"
   DB   0BFH       ;"-"
DELAY1:
       MOV R7,#10
L1:    MOV R6,#50
        DJNZ R6,$
       DJNZ R7,L1
       RET
    END
关闭窗口

相关文章