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

📄 等精度数字频率计的设计(汇编语言和vhdl语言).txt

📁 此为等精度数字频率计的设计
💻 TXT
📖 第 1 页 / 共 2 页
字号:
ORG    0000H

          LJMP    MAIN
          ORG     0030H
MAIN : 
          MOV   SP,#60H
MOV   10H,#10H
          MOV   3FH,#0FH
          MOV   3EH,#00H
          MOV   3DH,#00H
          MOV   3CH,#00H
          MOV   0AH,#00H
          MOV   0BH,#00H
          MOV   A,#0FH
LCALL DIRR00
KKE1:     LCALL KKEYI       ;键盘信号搜索
 KCACOM:  LCALL KCOM1    ;  A > 9 执行键盘命令
          LJMP  KKE1
 DELAY1:  MOV   R1,#6FH
  WWW1:   MOV   R0,#0FFH
  NMN1:   DJNZ  R0,NMN1
          DJNZ  R1,WWW1
	  RET
DELAY2:   MOV   R1,#0fFH
  WWW2:   MOV   R0,#0FFH
  NMN2:   DJNZ  R0,NMN2
          DJNZ  R1,WWW2
	  RET
DELAY3:   MOV   R1,#0fFH
  WWW3:   MOV   R0,#0FFH
  WWW4:   MOV   R2,#00FH
  NMN5:   DJNZ  R2,NMN5
          DJNZ  R0,WWW4
          DJNZ  R1,WWW3
	  RET
; 66666666666666666666666666666666666666666666666
KN888:  LJMP   KN88
  KCOM1:  CJNE   A,#00H,KN888 ; 键1控制
          MOV    18H,#25H
          MOV    17H,#01H
          MOV    0BH,#00H
          MOV    0AH,#00H
          LJMP   TESTF1          ; 测频率
KNJ99:    LJMP   KN99
KN88:     CJNE  A,#01H,KNJ99 ; 键2控制
 RET                    ;  测占空比
KAAN7:    LJMP   KAAN   ;  测脉宽
KN99:     CJNE  A,#02H,KAAN7       ; 键3控制
        RET
;PPPPPPPPPPPPPPPPPPPPPPPPPPPPP
KAAN:    CJNE  A,#03H,KBBN     ;  测相差   ; 键4控制
         RET
KBBN:    CJNE  A,#04H,KDDN        ; 键5控制
RET
KDDN:     CJNE  A,#05H,KEEN        ; 键6控制
RET
KEEN:     CJNE  A,#06H,KFFN         ; 键7控制
          RET
KFFN:     CJNE  A,#07H,KZZN          ; 键8控制
KZZN:     RET
          LJMP KKE1
; LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
; 测频率
;   F = {(TCLK X 50MHz ) X 1000000} / BCLK
IF 1=3
 TESTF:   
          LCALL  DELAY2
          SETB   P2.7        ; START 口预备
          CLR    P2.1        ; CL
          SETB   P2.3        ; EEND:
          SETB   P2.2        ; SPUL:选择CL为预置门控信号
          CLR    P2.0
          SETB   P2.0
          CLR    P2.0        ; 清零
          SETB   P2.1        ; CL  : 预置门打开
 WWTT:    JNB    P2.7,WWTT   ;  测START口,为1,表明已经开始计数,否则继续等待LCALL  DELAY1      ;  已经开始计数,设置计数时间
          CLR    P2.1        ;  设置CL为0,关闭预置门
WWTT1:   JB     P2.7,WWTT1  ;  测START口,若为1,表明仍在计数,继续等待
          CLR    P2.1        ;  计数结束,可以读出计数结果
ENDIF
TESTF1:
          CLR    P2.6        ; SEL2 : 读标准频率数

          CLR    P2.5        ; SEL1
          CLR    P2.4        ; SEL0
          LCALL  DELAY3
          MOV    A,P0
          LCALL  DELAY2
          MOV    20H,A       ; 读标准频率最底8位数
SETB   P2.4   ; SEL0
          CLR    P2.5   ; SEL1
          CLR    P2.6   ; SEL2
LCALL  DELAY3
          MOV    A,P0
          LCALL  DELAY2
          MOV    21H,A
CLR    P2.4   ; SEL0
          SETB   P2.5   ; SEL1
          CLR    P2.6   ; SEL2
LCALL  DELAY3
          MOV    A,P0
          LCALL  DELAY2
          MOV    22H,A
SETB   P2.4   ; SEL0    23H,22H,21H,20H  标准频率计数
          SETB   P2.5   ; SEL1
          CLR    P2.6   ; SEL2
LCALL  DELAY3
          MOV    A,P0
          LCALL  DELAY2
          MOV    23H,A       ; 读标准频率最高8位数
          ; IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
          CLR    P2.4   ; SEL0
          CLR    P2.5   ; SEL1
SETB   P2.6   ; SEL2  读待测频率数
          LCALL  DELAY3
          MOV    A,P0
          LCALL  DELAY2
          MOV    24H,A
SETB   P2.4   ; SEL0
          CLR    P2.5   ; SEL1
          SETB   P2.6   ; SEL2
          LCALL  DELAY3
          MOV    A,P0
          LCALL  DELAY2
          MOV    25H,A
CLR    P2.4   ; SEL0
          SETB   P2.5   ; SEL1
          SETB   P2.6   ; SEL2
          LCALL  DELAY3
          MOV    A,P0
          LCALL  DELAY2
          MOV    26H,A
SETB   P2.4   ; SEL0    27H,26H,25H,24H  待测频率计数
          SETB   P2.5   ; SEL1
          SETB   P2.6   ; SEL2
          LCALL  DELAY3
          MOV    A,P0
          LCALL  DELAY2
          MOV    27H,A

    ; KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK计算
TEST01:
if 1=4
          MOV    4AH,#2DH ;16H      ;  50MHZ X 1000000 = 2D79883D2000H
          MOV    4BH,#79H ;0BCH
          MOV    4CH,#88H ;0C4H
          MOV    4DH,#3DH ;1EH
          MOV    4EH,#20H ;90H
          MOV    4FH,#00H

          MOV    4AH,#00H ;16H      ;  50MHZ X 1000000 = 2D79883D2000H
          MOV    4BH,#00H ;0BCH
          MOV    4CH,#00H ;0C4H
          MOV    4DH,#0B7H ;1EH
          MOV    4EH,#1BH ;90H
          MOV    4FH,#00H
endif
          MOV    4AH,#00H ;00H      ;  20MHZ = 01312D00H
          MOV    4BH,#00H ;00H
          MOV    4CH,#01H ;01H
          MOV    4DH,#31H ;31H
          MOV    4EH,#2DH ;2DH
          MOV    4FH,#00H ;00H

          MOV    5AH,#00H
          MOV    5BH,#00H
          MOV    5CH,27H
          MOV    5DH,26H
          MOV    5EH,25H
          MOV    5FH,24H
          LCALL  MULNM                ;   50MHZ X 1000000 = 2D79883D2000H
          MOV    44H,54H
          MOV    45H,55H
          MOV    46H,56H
          MOV    47H,57H
          MOV    48H,58H
          MOV    49H,59H
          MOV    4AH,5AH
          MOV    4BH,5BH
          MOV    4CH,5CH
          MOV    4DH,5DH
          MOV    4EH,5EH
          MOV    4FH,5FH
MOV    5AH,#00H
          MOV    5BH,#00H
          MOV    5CH,23H
          MOV    5DH,22H
          MOV    5EH,21H
          MOV    5FH,20H
          LCALL  DIVD1
MOV    30H,4FH
          MOV    31H,4EH
          MOV    32H,4DH
          MOV    33H,4CH
          MOV    34H,4BH
          MOV    35H,4AH
          MOV    36H,#00H
          LCALL  HEXBC
; 00000000000000000000000000000
  L43Y:   MOV    A,40H                             ; 显示
          ANL    A,#0FH
          MOV    72H,A
          MOV    A,40H
          ANL    A,#0F0H
          SWAP   A
          MOV    73H,A
          MOV    A,41H
          ANL    A,#0FH
          MOV    74H,A
          MOV    A,41H
          ANL    A,#0F0H
          SWAP   A
          MOV    75H,A
          MOV    A,42H
          ANL    A,#0FH
          MOV    76H,A
          MOV    A,42H
          ANL    A,#0F0H
          SWAP   A
          MOV    77H,A
MOV    A,43H
          ANL    A,#0FH
          MOV    78H,A
          MOV    A,43H
          ANL    A,#0F0H
          SWAP   A
          MOV    79H,A
          LCALL DIRR00
          SJMP $
;          LJMP   TESTF ;RET
DIRR00:    PUSH  DPL
          PUSH  DPH ; 显示子程序
          MOV   R3,#08H
          MOV   R1,#72H
NOPOT0:   MOV	A,@R1	    ; CDIR
          MOV   DPTR,#ZASU91
          MOVC  A,@A+DPTR
          MOV	@R1,A
          INC   R1
          DJNZ  R3,NOPOT0
          MOV   R1,#79H
          MOV   R3,#08H
  JQO0:	  MOV	A,@R1
          MOV   SBUF,A
          JNB TI,$
	    CLR TI
          DEC   R1
          DJNZ  R3,JQO0
          POP   DPH
          POP   DPL
          RET
; a,b,c,d,e,f,g,h
ZASU91:db 0c0h,0f9h,0a4h,0b0h,99h,92h
     db 82h,0f8h,80h,90h,88h
     db 83h,0c6h,0a1h,86h,8eh
     db 8ch,0bfh,0ffh,0ch,89h,0c7h
BCDHEX : NOP		       ; N BYTES COMPRESSED BCD CODES TO M BYTES HEX CODES
	  MOV	     30H,#07H  ; HERE N=M=7	   BCD(49,4A,4B,4C,4D,4E,4FH)--HEX(49,4A,4B,4C,5D,5E,5FH)
	  MOV	     31H,#07H
	  MOV	     R1,#ADB
	  MOV	     R2,AD1
	  MOV	     R3,AD0
	  MOV	     A,#ADA
	  CLR	     C
	  SUBB	      A,R3
	  INC	     A
	  MOV	     R0,A
  DBNZ:   MOV	     @R1,#00H
	  DEC	     R1
	  DJNZ	      R2,DBNZ
	  SJMP	      DBNB
  DBNJ:   MOV	     R1,#ADB
	  MOV	     R2,AD1
	  CLR	     00H
	  CLR	     A
  DBNM:   XCH	     A,@R1
	  MOV	     B,#64H
	  MUL	     AB
	  MOV	     C,00H
	  ADDC	      A,@R1
	  MOV	     @R1,A
	  MOV	     00H,C
	  MOV	     A,B
	  DEC	     R1
	  DJNZ	      R2,DBNM
 DBNB:		CLR	   A
	  XCHD	      A,@R0
	  XCH	     A,@R0
	  SWAP	      A
	  MOV	     B,#0AH
	  MUL	     AB
	  ADD	     A,@R0
	  INC	     R0
 DBNA:		MOV	   R2,AD1
	  DEC	     R2
	  MOV	     R1,#ADB
	  ADD	     A,@R1
	  MOV	     @R1,A
 DBNL:		DEC	   R1
	  CLR	     A
	  ADDC	      A,@R1
	  MOV	     @R1,A
	  DJNZ	      R2,DBNL
	  DJNZ	      R3,DBNJ
	  RET
	  DB	      02H,12H
; llllllllllllllllllllllllllllllllllllllllllll
HEXBCD :  NOP			 ; 7 BYTE HEX TO 8 BYTE BCD : HEX(3XH-30H)-->BCD(4XH-40H)
  MUBTD:  MOV	     R0,#40H
	  MOV	     R7,#08H
	  CLR	     A
  LOPP1:  MOV	     @R0,A
	  INC	     R0
	  DJNZ	     R7,LOPP1
MOV	     R7,#38H
 LOOP4:   MOV	     R1,#30H
	  MOV	     R6,#07H
	  CLR	     C
LOPP2:  MOV	     A,@R1
	  RLC	     A
	  MOV	     @R1,A
	  INC	     R1
	  DJNZ	     R6,LOPP2
MOV	     R5,#08H
	  MOV	     R0,#40H
LOOP3:  MOV	     A,@R0
	  ADDC	     A,@R0
	  DA	     A
	  MOV	     @R0,A
	  INC	     R0
	  DJNZ	     R5,LOOP3
	  DJNZ	     R7,LOOP4
	  RET
;  kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
  DIVD1:  NOP             ; 2N BYTE / N BYTE = N BYTE ,HERE N=3 IN 31H
	  MOV	30H,#0CH  ; (4A,4B,4C,4D,4E,4FH)/(5D,5E,5FH)=(4D,4E,4FH)
	  MOV	31H,#06H
  DIVPP:  MOV	A,AD1
	  MOV	R2,A
	  RL	A
	  RL	A
	  RL	A
	  MOV	R3,A
	  CLR	0F0H
	  CLR	C
	  MOV	A,#ADA
	  SUBB	A,R2
	  MOV	AD3,A
	  MOV	R1,#ADB
 DIVMB2B: MOV	A,@R1
	  JNZ	DIVM2B
	  DEC	R1
	  DJNZ	R2,DIVMB2B
	  SETB	0F0H
	  RET
 DIVM2B:  MOV	R2,AD1
	  MOV	R1,#ADB
	  MOV	R0,AD3
 DIVM2L:  MOV	A,@R0
	  SUBB	A,@R1
	  DEC	R0
	  DEC	R1
	  DJNZ	R2,DIVM2L
	  JNC	DIVM20
 DIVM2D:  LCALL SHIL1
	  JC	DIVM2S
 DIVM2C:  MOV	R0,AD3
	  MOV	R1,#ADB
	  MOV	R2,AD1
 DIVM2CL: MOV	A,@R0
	  SUBB	A,@R1
	  DEC	R0
	  DEC	R1
	  DJNZ	R2,DIVM2CL

⌨️ 快捷键说明

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