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

📄 频率计.asm

📁 频率计(51单片机开发例子子程序汇编语言编写)
💻 ASM
字号:

        ORG 0000H
        AJMP MAIN
        ORG 000BH
        LJMP ZD
        ORG 0030H
MAIN:
        MOV SP,#70H
        MOV P1,#00H
        MOV P2,#0FH
        MOV 30H,#02H
        MOV 31H,#00H
        MOV 32H,#00H
        MOV 33H,#05H
        MOV 34H,#00H
        MOV 35H,#09H
        MOV 36H,#00H
        MOV 37H,#07H      ;显示扫描

        MOV 38H,#37H
        MOV 39H,#00H

        MOV 3AH,#00H
        MOV 3BH,#00H      ;存放频率

        MOV TMOD,#01010001B ;中断,16位计数模式

        MOV TH1,#HIGH(65536-100)
        MOV TL1,#LOW(65536-100)
        SETB TR1             ; 开计数器1
        MOV TH0,#HIGH(65536-55000)
        MOV TL0,#LOW(65536-55000)
        MOV IE,#10000010B
        MOV 40H,#20
;*********************************
XS_SM:  LCALL XS_SMZ    ;显示扫描
;*********************************
;选择所测通道
        JB P2.0,XZ00       ;电阻
        MOV P1,#00H
        SETB P1.4
        SETB P1.0
        SETB P2.4
        CLR P2.5
        CLR P2.6
   XZ10:LCALL XS_SMZ
        JNB P2.0,XZ10
        AJMP C_PL
   XZ00:JB P2.1,XZ01       ;电容
        MOV P1,#00H
        SETB P1.5
        SETB P1.2
        SETB P2.5
        CLR P2.4
        CLR P2.6
  XZ_11:LCALL XS_SMZ
        JNB P2.1,XZ_11     ;电感
        AJMP C_PL
   XZ01:JB P2.2,TC_XZ
        MOV P1,#00H
        SETB P1.6
        SETB P2.6
        CLR P2.4
        CLR P2.5
  XZ_12:LCALL XS_SMZ
        JNB P2.2,XZ_12
  TC_XZ:NOP
;**********************************
;开一秒中断测频率
C_PL:   JBC TF1,C_PL0
        LJMP XS_SM
 C_PL0:
        CLR TR1
        MOV TH1,#00H
        MOV TL1,#00H
        SETB TR1
        SETB TR0    ;中断
        LJMP XS_SM
;**********************************
;显示扫描 8次
XS_SMZ:
        MOV R1,38H    ; 0011 0111
        MOV A,39H     ; 0
        SWAP A
        ORL A,@R1
        MOV P0,A
        LCALL DELAY10
        MOV A,39H
        INC A
        MOV 39H,A
        MOV R1,38H
        DEC R1
        MOV 38H,R1
        CJNE R1,#2FH,TC_XS
        MOV 38H,#37H
        MOV 39H,#00H
  TC_XS:NOP
        RET
;**********************************
;中断
ZD:     PUSH ACC
        PUSH PSW
        MOV TH0,#HIGH(65536-55000)
        MOV TL0,#LOW(65536-55000)
        DJNZ 40H,TC_ZD0
        AJMP ZD0
 TC_ZD0:AJMP TC_ZD
  ZD0:  MOV 40H,#20
        CLR TR0
        CLR TR1

        MOV 30H,#00H
        MOV 31H,#00H
        MOV 50H,TH1
        MOV 51H,TL1
        LCALL SL_BCD

        MOV A,52H
        SWAP A
        ANL A,#0FH
        MOV 32H,A
        MOV A,52H
        ANL A,#0FH
        MOV 33H,A
        MOV A,53H
        SWAP A
        ANL A,#0FH
        MOV 34H,A
        MOV A,53H
        ANL A,#0FH
        MOV 35H,A
        MOV A,54H
        SWAP A
        ANL A,#0FH
        MOV 36H,A
        MOV A,54H
        ANL A,#0FH
        MOV 37H,A ; 显示所测频率
        MOV TMOD,#01010001B
        MOV TH1,#HIGH(65536-100)
        MOV TL1,#LOW(65536-100)
        SETB TR1
  TC_ZD:POP PSW
        POP ACC
        RETI
;********************************************
;双字节二进制数转换成三字节BCD码子程式序
;11H 10H  变换后存放 14H13H12H

 SL_BCD:
        MOV 11H,50H;H
        MOV 10H,51H;L

SBIN_BCD:
        MOV R1,#12H
        MOV R5,#03H
        CLR A
  LOOP1:MOV @R1,A
        INC R1
        DJNZ R5,LOOP1
        MOV R7,#10H
  LOOP4:MOV R0,#10H
        MOV R6,#02H
        CLR C
  LOOP2:MOV A,@R0
        RLC A
        MOV @R0,A
        INC R0
        DJNZ R6,LOOP2
        MOV R1,#12H
        MOV R5,#03H
  LOOP3:MOV A,@R1
        ADDC A,@R1
        DA A
        MOV @R1,A
        INC R1
        DJNZ R5,LOOP3
        DJNZ R7,LOOP4

        MOV 54H,12H
        MOV 53H,13H
        MOV 52H,14H
        RET
;显示扫描延时
DELAY10:
        MOV R7,#6
     DL:MOV R6,#250
    DL1:DJNZ R6,DL1
        DJNZ R7,DL
        RET
  
        END
10111010
 39 00 01 00 00 00 00 |00 00 00| 00 00 00 00 00 00 00
  1  2  3  4  5

⌨️ 快捷键说明

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