⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 plj100.asm

📁 频率计的程序
💻 ASM
📖 第 1 页 / 共 4 页
字号:
                MOV       A,R6
                MOV       SBUF,A
                JNB       TI,$
                CLR       TI
                LCALL     DELAY40
                MOV       A,#0DH
                MOV       SBUF,A
                JNB       TI,$
                CLR       TI
                LCALL     DELAY40
                SETB      RECE_BZ
                CLR       RT485
                ;SETB      ES
                 RET
;========================================
;=================计数器=================
JSPD:           MOV     DSPLA_ADD1,#20
                MOV     A,DSPLA_ADD1
                ADD     A,FYDIG
                ADD     A,LBDIG
                MOV    DSPLA_ADD1,A
                MOV    A,KEYFUN
                CJNE    A,#01,JSPDTZ
                JNB      KEY_BZ,TZ
                CLR      KEY_BZ
                CLR      START
                SETB      CLRD
                NOP
                CLR       CLRD
                NOP
                SETB      CLRD
                NOP
                CLR       CLRD
                MOV     XSDIG1,#00H
                MOV     BCJSQ0,#00H
                MOV     BCJSQ1,#00H
                MOV     BCJSQ2,#00H
                MOV     BCJSQ3,#00H
TZ:             LCALL    BNBCD
                LCALL    DSPLA
                LCALL    DSPLA
                LCALL    DSPLA
                LCALL    DSPLA
                LCALL    PFG
                CLR      CLRD
                SETB     START
TZ1:            MOV      DS_TIME,#10
                LCALL    DSPLA
                LCALL    DSPLA
                LCALL    DSPLA
                LCALL    DSPLA
                SETB     TR0
                LJMP    TIM1END
JSPDTZ:         CLR    START
                LJMP    TZ1
TIM1END1:       LJMP     TIM1END
JSPD1:      LJMP   JSPD
;txd9:      ljmp    RD_TX;GGGGGGGGGGGGGGGGGGGGGGG
;===============定时1S//标准频率100M
TIM0:           PUSH     PSW
                PUSH     ACC
                MOV      TH0,#0FBH
                MOV      TL0,#1H
                LCALL    DSPLA
                LCALL    DSPLA
                DJNZ     DS_TIME,TIM1END1
                ;===================================
                ;判断键盘
                MOV     A,KEYFUN
                CJNE    A,#00,JSPD1
                 ;===================================
                CLR      START;停止计数
                CLR      TR0
                SETB     GK
DENGD:          LCAll    dspla
                JB       EEND,DENGD;有停止信号吗??
                ;====选择1通道====标准频率==
                CLR      ADRB
                CLR      ADRA
                NOP
                MOV      A,P0
                MOV      BZJSQ0,A
                MOV      A,P2
                MOV      BCJSQ0,A
                ;========选择2通道====标准频率==
                SETB      ADRB
                CLR       ADRA
                NOP
                MOV      A,P0
                MOV      BZJSQ1,A
                MOV      A,P2
                MOV      BCJSQ1,A
                ;========选择3通道====标准频率==
                CLR      ADRB
                SETB     ADRA
                NOP
                MOV      A,P0
                MOV      BZJSQ2,A
                MOV      A,P2
                MOV      BCJSQ2,A
                ;========选择4通道====标准频率==
                SETB      ADRA
                SETB      ADRB
                NOP
                MOV      A,P0
                MOV      BZJSQ3,A
                MOV      A,P2
                MOV      BCJSQ3,A
                ;======判断数据是否为0
                MOV     A,BZJSQ3
                JNZ     ZX
                MOV     A,BZJSQ2
                JNZ     ZX
                MOV     A,BZJSQ1
                JNZ     ZX
                MOV     A,BZJSQ0
                JNZ     ZX
                LJMP    TIM1E
               ;============================
ZX:             MOV      A,GDIG
                CJNE     A,#08H,HHHFG
                MOV      BZDIG0,#00h;#00H;60M*64
                MOV      BZDIG1,#00h;#00H
                MOV      BZDIG2,#80h;#80H
                MOV      BZDIG3,#53h;#0a1H
                MOV      BZDIG4,#0eeh;#0a7H
                MOV      BZDIG5,#7bh;#6bH
                MOV      BZDIG6,#0a8h;#4aH
                MOV      BZDIG7,#0ah;#35H;
                LJMP     HJKH
HHHFG:          MOV      BZDIG0,#00h;#00H;60M
                MOV      BZDIG1,#00h;#00H
                MOV      BZDIG2,#4eh;#86H
                MOV      BZDIG3,#0b9h;#9eH
                MOV      BZDIG4,#0efh;#0aeH
                MOV      BZDIG5,#0a1h;#29H
                MOV      BZDIG6,#2ah;#0d5H
                MOV      BZDIG7,#00H;
               ;==========================
HJKH:           LCALL    DSPLA
                LCALL    DSPLA
                LCALL    wdt_dog
                LCALL    DODIV;48M*100000000///Ns
                LCALL    DSPLA
                LCALL    DSPLA
                LCALL    wdt_dog
                LCALL    MUL4;*被测频率计数器
      ;=======================
                LCALL    DSPLA
                LCALL    DSPLA
                LCALL    BMBCD;BCD码转换
                LCALL    DSPLA
                LCALL    DATACL;PFG;数据处理
                LCALL    DSPLA
TIM1E:          LCALL    DSPLA
                MOV      DS_TIME,#3   ;60
                ;=============================
                SETB      CLRD
                NOP
                CLR       CLRD
                NOP
                SETB      CLRD
                NOP
                CLR       CLRD
                ;========================
                SETB      START
TRE:            LCALL    wdt_dog
                LCALL     DSPLA
                JNB      EEND,TRE
                SETB     TR0
                setb     ea
TIM1END:        POP      ACC
                POP      PSW
                RETI
;=========================================
MUL4:    MOV   R1,#BCJSQ0;被乘数低位指针
         MOV   R0,#BZDIG0;乘数低位指针
         MOV   R2,#4;被乘数字节数
         MOV   R3,#5;乘数字节数
         MOV    R4,#CJDIG0;乘积低位指针
DOMUL:   MOV    A,R1
         MOV    R6,A
         MOV    A,R0
         MOV    R5,A
         MOV    A,R2
         ADD    A,R3
         MOV    26H,A
         MOV    R7,A
         MOV    A,R4
         MOV    R0,A
CLEAR:   MOV    @R0,#00H
         INC  R0
         DJNZ   R7,CLEAR
         MOV    A,R4
         MOV    R7,A
         MOV    27H,R7
         MOV    20H,R2
         ;=====================
          push   acc
        mov     49h,a
        mov      4ah,r6
        lcall   dspla
        mov    a,49h
        mov   r6,4ah
        pop    acc
        ;========================
LP31:     MOV    A,R5
         MOV    R0,A
         MOV    A,@R0
         MOV    B,@R1
         MUL   AB
         ACALL  ADDM
         INC  R1
         DJNZ   R2,LP31
         MOV    R2,20H
         MOV  A,R6
         MOV  R1,A
         MOV   A,R7
         INC  A
         MOV  R7,A
         MOV  R4,A
         INC  R5
         DJNZ   R3,LP31
         MOV    R6,27H
         MOV    R5,26H
         RET
ADDM:    MOV   21H,A
         MOV   A,R4
         MOV   R0,A
         MOV  A,21H
         ADD  A,@R0
         MOV  @R0,A
         MOV   A,B
         INC   R0
         ADDC  A,@R0
         MOV   @R0,A
         INC   R0
         MOV   A,@R0
         ADDC  A,#00H
         MOV   @R0,A
         DEC   R0
         MOV   A,R0
         MOV  R4,A
         ;==================
          push   acc
        mov     49h,a
        mov      4ah,r6
        lcall   dspla
        mov    a,49h
        mov   r6,4ah
        pop    acc
        ;=====================
         RET
;========================================
BMBCD:     MOV      R0,#BCD1
           MOV      R6,#40
PLJK1:     MOV      A,#00H
           MOV      @R0,A
           INC      R0
           DJNZ     R6,PLJK1
           ;===========================
           LCALL  wdt_dog
           MOV   R0,#CJDIG0
           MOV    A,R5
           MOV   R7,A
           MOV   R1,#BCD1
           MOV   A,R0
          MOV   R5,A
          MOV   A,R1
          MOV   R6,A
          MOV   A,R7
          MOV   R3,A
          INC   R3
          CLR  A
CLBCD:    MOV   @R1,A
          INC   R1
          DJNZ  R3,CLBCD
          MOV   A,R7
          MOV   B,#08
          MUL   AB
          MOV   R3,A
LP0:      MOV   A,R5
          MOV   R0,A
          MOV   A,R7
          MOV   R2,A
          CLR   C
LP1:      MOV   A,@R0
          RLC   A
          MOV   @R0,A
          INC  R0
          DJNZ   R2,LP1
          MOV   A,R6
          MOV   R1,A
          MOV   A,R7
          MOV   R2,A
          INC  R2
LP2:   MOV   A,@R1
       ADDC  A,@R1
       DA    A
       MOV   @R1,A
       INC  R1
       DJNZ   R2,LP2
       DJNZ   R3,LP0
       MOV    A,R6
       MOV   R1,A
       RET
     ;===============================
DATACL:   MOV     R0,#BCDF1
          MOV     R4,#21
P9:       MOV     @R0,#0
          INC     R0
          DJNZ    R4,P9
          MOV    R0,#BCD10
          MOV    R1,#BCDF20
          MOV    R4,#10
          ;===============
PLKD:     MOV   A,BCD10
          ANL   A,#0F0H
          SWAP   A
          MOV   R1,#BCDF20
          MOV   @R1,A
          DEC   R1
          MOV  A,BCD10
          ANL   A,#0FH
          MOV   @R1,A
          DEC   R1
          ;==================
          MOV   A,BCD9
          ANL   A,#0F0H
          SWAP   A
          MOV   @R1,A
          DEC   R1
          MOV  A,BCD9
          ANL   A,#0FH
          MOV   @R1,A
           DEC   R1
           ;===============
          MOV   A,BCD8
          ANL   A,#0F0H
          SWAP   A
          MOV   @R1,A
          DEC   R1
          MOV  A,BCD8
          ANL   A,#0FH
          MOV   @R1,A
          DEC   R1
          ;================
          MOV   A,BCD7
          ANL   A,#0F0H
          SWAP   A
          MOV   @R1,A
          DEC   R1
          MOV  A,BCD7
          ANL   A,#0FH
          MOV   @R1,A
          DEC   R1
          ;======================
          LCALL   wdt_dog
          MOV   A,BCD6
          ANL   A,#0F0H
          SWAP   A
          MOV   @R1,A
          DEC   R1
          MOV  A,BCD6
          ANL   A,#0FH
          MOV   @R1,A
          DEC   R1
          ;====================
          MOV   A,BCD5
          ANL   A,#0F0H
          SWAP   A
          MOV   @R1,A
          DEC   R1
          MOV  A,BCD5
          ANL   A,#0FH
          MOV   @R1,A
          DEC   R1
          ;=======================
          MOV   A,BCD4
          ANL   A,#0F0H
          SWAP   A
          MOV   @R1,A
          DEC   R1
          MOV  A,BCD4
          ANL   A,#0FH
          MOV   @R1,A
          DEC   R1
          ;-==========
          MOV   A,BCD3
          ANL   A,#0F0H
          SWAP   A
          MOV   @R1,A
          DEC   R1
          MOV  A,BCD3
          ANL   A,#0FH
          MOV   @R1,A
          DEC   R1
          MOV   A,BCD2
          ANL   A,#0F0H
          SWAP   A
          MOV   @R1,A
          DEC   R1
          MOV  A,BCD2
          ANL   A,#0FH
          MOV   @R1,A
         DEC   R1
          MOV   A,BCD1
          ANL   A,#0F0H
          SWAP   A
          MOV   @R1,A
          DEC   R1
          MOV  A,BCD1
          ANL   A,#0FH
          MOV   @R1,A
          ;=================
          MOV   R0,#BCDF10     ;小数点
          MOV   A,@R0
          ADD   A,#10
          MOV   @R0,A
          ;=====================
          MOV   R1,#00H
          MOV   R0,#BCDF20
XL:       MOV   A,@R0
          CJNE  A,#00H,CCC
          DEC   R0
          INC   R1
          CJNE  R1,#13,XL
CCC:      LCALL   wdt_dog
          MOV   DSPLA_ADD9,A
          DEC   R0
          MOV   A,@R0
          MOV   DSPLA_ADD8,A
          DEC   R0
          MOV   A,@R0
          MOV   DSPLA_ADD7,A
          DEC   R0
          MOV   A,@R0
          MOV   DSPLA_ADD6,A
          DEC   R0
          MOV   A,@R0
          MOV   DSPLA_ADD5,A
          DEC   R0
          MOV   A,@R0
          MOV   DSPLA_ADD4,A
         DEC   R0
          MOV   A,@R0
          MOV   DSPLA_ADD3,A
         DEC   R0
          MOV   A,@R0
          MOV   DSPLA_ADD2,A
          CLR   XS_BZ1
          ;======================
          ;判100MHZ
          MOV   A,#08H
          MOV   R5,A
          MOV    R0,#DSPLA_ADD9
EFG:      CLR    C
          MOV    A,@R0
          SUBB   A,#10
          JNC     ENDF
          DEC  R0
          DJNZ   R5,EFG
          MOV    A,DSPLA_ADD3
          ADD    A,#10
          MOV     DSPLA_ADD3,A
          MOV     DSPLA_ADD1,#32
          RET
ENDF:     MOV    DSPLA_ADD1,#20
          RET
;========================================
DODIV:  MOV    R0,#BZDIG0;被除数低位指针
        MOV    R1,#BZJSQ0;除数低位指针///非0
        MOV    R3,#8;字节数
        ;============

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -