mov r5,#0
     mov r6,#16    ;设置二进制数位数
     clr c
bin_0:   mov a,r1
     rlc a
     mov r1,a
     mov a,r2
     rlc a
     mov r2,a
     mov r0,#ar3
     mov r7,#3     ;设置BCD字节数
bin_1:   mov a,@r0
     addc a,@r0
     da a
     mov @r0,a
     inc r0
     djnz r7,bin_1
     djnz r6,bin_0
     POP PSW
     POP ACC
     ret
;---------------ASCII4_BIN2转换子程序
;入口:R0=ASCII码首地址(共四字节ASCII码)
;出口:r1=BIN码低字节,R2=BIN码高字节
ascii4_bin2:PUSH ACC
     acall ascii_bin
     anl a,#0fh
     swap a
     mov r1,a
     inc r0
     acall ascii_bin
     anl a,#0fh
     orl ar1,a
     inc r0
     acall ascii_bin
     anl a,#0fh
     swap a
     mov r2,a
     inc r0
     acall ascii_bin
     anl a,#0fh
     orl ar2,a
     POP ACC
     ret
;---------------ASCII_BIN转换子程序
;入口:R0=ASCII地址
;出口:A=BIN码
ascii_bin:mov a,@r0
     clr c
     subb a,#3ah
     jnc ascii_0
     add a,#7
ascii_0:add a,#3
     ret
end
;--------3--------rand_disp.a51-------------------------
name  rand_disp
     extrn number(TH0_H,TL0_L,wdt_time)
     PUBLIC I_T0,disp_buf,disp_wc,time_20ms,wdt
  prog SEGMENT CODE         ;定义代码段
  BYTE_BUFF segment data    ;定义字节数据段1
  byte_buffI segment idata ;定义字节数据段2
  bit_buff segment data bitaddressable         ;定义位数据段
      RSEG BYTE_BUFF
     wdt: ds 1
     time_s_c: ds 1
     time_20ms: ds 1
     DISP_C: ds 11      ;显示位
     disp_buf data disp_c+1 ;个位缓冲区,此个位并非真正的个位,指最右一位,以下类推
     disp_2 data disp_c+2   ;十个位缓冲区
     disp_3 data disp_c+3  ;百位缓冲区 
     disp_4 data disp_c+4   ;千位缓冲区
     disp_5 data disp_c+5   ;通道位缓冲区
     disp_6 data disp_c+6   ;地址位缓冲区 
     disp_7 data disp_c+7   ;无
     disp_8 data disp_c+8   ;无
     disp_s data disp_c+9   ;闪烁计数器
     
     rseg bit_buff
     disp_wc: ds 1 
     disp_c_1 bit disp_wc.0 ;个位闪烁标志位 1-闪烁
     disp_c_2 bit disp_wc.1 ;十位闪烁标志位
     disp_c_3 bit disp_wc.2 ;百位闪烁标志位    
     disp_c_4 bit disp_wc.3 ;千位闪烁标志位
     disp_s_c bit disp_wc.4 ;闪烁控制位   1-闪烁
              
     RSEG PROG 
     using 0  
     dsb equ p3.4
     cr_not equ p3.5
     cp equ p3.6
I_T0:    push acc
     push ar0
     push dph
     push dpl
     push psw
     mov th0,#th0_h
     mov tl0,#tl0_l
     mov dptr,#tab
;--------------------------------------------- 
     djnz disp_s,d_20
     cpl disp_s_c
;---------------------------------------------
d_20:    INC DISP_C
     MOV R0,DISP_C
     CJNE R0,#1,DISP2   ;r0=1显示个位
     mov c,disp_c_1
     mov A,disp_buf
mov p1,#0FFH
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 下一页