用单片机实现温度远程显示 第8页

用单片机实现温度远程显示 第8页

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、显示、软件看门狗及20ms定时器子模块(rand_disp.a51

;--------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] 下一页

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有