注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
xu__changhua的个人空间 https://home.eeworld.com.cn/space-uid-101717.html [收藏] [复制] [分享] [RSS]
日志

再记录一篇昨天星期六调试成功:zigbee+LM331现场AD转换传送到上位机

已有 1881 次阅读2009-3-22 23:45 |个人分类:开发设计

        ORG 0000H
        ljmp setup
        org 000bh
        ljmp timer0
        org 0001bh
        ljmp timer1
        org 0030h
setup:
        MOV TMOD,#27H;定时器0方式三,两个8位定时器
        MOV TH1,#0FdH
        MOV TL1,#0FdH
        mov th0,#0;定时器0的第二个8位定时器,用于定时约500mS
        mov tl0,#0;定时器0的第一个8位定时器,用于统计T0脚来的脉冲,即LM331的AD转换
        MOV PCON ,#00H
        MOV SCON,#40H
        setb pt1
        setb et0
        setb et1
        setb ea
        setb tr0
        setb tr1

 clr ti
 mov r4,#1
        mov r5,#241
 mov dptr,#1000
        clr a
        mov 50h,a
        mov 51h,a
        mov 52h,a
        mov 53h,a
        mov 54h,a
        mov 55h,a
        mov 56h,a
        mov 57h,a
        ljmp $

timere1t:
        ljmp timeret

timer1:
        inc dptr
        mov a,dph
        cjne a,#4,timere1t
        clr tr0      ;定时时间到
        clr tr1
       
       
        mov 70h,tl0  ;有用的值
        mov 71h,50h

        mov 50h,#0
        mov tl0,#0
       
        mov th0,#0
        mov dptr,#0

 clr ti
       
 mov sbuf,#'$'
 jnb ti,$
 clr ti

        LCALL DELAY
 mov sbuf,#' '
 jnb ti,$
 clr ti

        LCALL DELAY
 mov sbuf,#' '
 jnb ti,$
 clr ti

        LCALL DELAY
 mov sbuf,#' '
 jnb ti,$
 clr ti

        LCALL DELAY

        lcall divm_n

        mov 60h,#10h
        mov 61h,#27h
 call divm_n
 mov a,72h
        orl a,#30h
 mov sbuf,a
 jnb ti,$
 clr ti

 mov 60h,#0e8h
 mov 61h,#03h
 call divm_n
 mov a,72h
        orl a,#30h
 mov sbuf,a
 jnb ti,$
 clr ti

        LCALL DELAY
 mov 60h,#100
 mov 61h,#0
 call divm_n
 mov a,72h
        orl a,#30h
 mov sbuf,a
 jnb ti,$
 clr ti

        LCALL DELAY
 mov 60h,#10
 mov 61h,#0
 call divm_n
 mov a,72h
        orl a,#30h
 mov sbuf,a
 jnb ti,$
 clr ti


        LCALL DELAY
 mov a,70h
        orl a,#30h
 mov sbuf,a
 jnb ti,$
 clr ti

        setb tr0
        setb tr1
timeret:
        reti

timer0:
        inc 50h
        reti

DELAY:
     MOV 61H,#00H
     MOV 60H,#00H
     DJNZ 60H,$
     DJNZ 61H,$-4
     RET

 

 

 

 

DIVm_n:;可多字节除,仅需修改CHANG(字节)
;m字节除n字节快速运算
;入口参数:被除数_BCS以上N字节,BCS是最低字节
;          除数_CS以上N字节,CS最低字节
;出口参数:商_沿着被除数的最高字节往上继续存
;放其最低字节,共n字节,余数_则覆盖被除数n字节
;使用寄存器:A,C,R0,R1,R2,R3,R6,R7,位F0

 


BCS EQU 70H;被除数首地址
CS  EQU 60H;  除数首地址
CHANG EQU 2;除数或被除数字节数长度
WEISH EQU CHANG*8;除数或被除数位数
MOV R0,#CS;
MOV R7,#CHANG-1;4-1次相或操作
LOP1:  MOV A,@R0
INC R0
ORL A,@R0
JNZ LOP0
DJNZ R7,LOP1
LJMP DIVRET
LOP0:  CLR A
MOV R0,#BCS+CHANG
MOV R7,#CHANG
LOP3:
  MOV @R0,A
INC R0
DJNZ R7,LOP3
MOV R6,#WEISH;4Byte共32bit
LOP8:
  MOV R0,#BCS
MOV R7,#CHANG*2;被除数连商共8Bbyte
LOP4:
  MOV A,@R0
RLC A
MOV @R0,A
INC R0
DJNZ R7,LOP4
CLR C
MOV R0,#BCS+CHANG
MOV R1,#CS
MOV R7,#CHANG
LOP5:
  MOV A,@R0
SUBB A,@R1
MOV @R0,A
INC R0
INC R1
DJNZ R7,LOP5
JNC LOP6
MOV F0,C
MOV R0,#BCS+CHANG
MOV R1,#CS
MOV R7,#CHANG
CLR C
LOP7:
  MOV A,@R0
ADDC A,@R1
MOV @R0,A
INC R0
INC R1
DJNZ R7,LOP7
MOV C,F0
LOP6:
  CPL C
DJNZ R6,LOP8
MOV R0,#BCS
MOV R1,#BCS+CHANG
MOV R7,#CHANG
LOP9:
  MOV A,@R0
RLC A
MOV R3,A
MOV A,@R1
MOV @R0,A
MOV A,R3
MOV @R1,A
INC R0
INC R1
DJNZ R7,LOP9
DIVRET:
RET
      END

 

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章