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

📄 波形信号发生器程序.txt

📁 基于单片机的移相式函数发生器设计,用汇编语言编写!
💻 TXT
📖 第 1 页 / 共 4 页
字号:
          POP   DPL
          POP   DPH
          POP   PSW
          LJMP  TSF0

;置数子程序
;/入口参数:KYEZHI   出口参数:50H-5FH*/
ZHISU1:   PUSH   PSW
          PUSH   DPH
          PUSH   DPL
          SETB   RS0
          SETB   RS1
          MOV    DPTR,#DT1
          MOV    COMX,#0B8H
          MOV    COMY,#40H      ;频
          MOV    JCS1CS2,#00H
          LCALL  DISP
          MOV    DPTR,#DT2
          MOV    COMX,#0B8H
          MOV    COMY,#50H      ;率
          MOV    JCS1CS2,#00H
          LCALL  DISP
          MOV    DPTR,#TABF2
          MOV    COMX,#0B8H
          MOV    COMY,#60H      ;:
          MOV    JCS1CS2,#00H
          LCALL  DISP
          MOV    R6,#00H
          MOV    R5,#40H
          MOV    R4,#00H;计算输入数的个数
          MOV    R0,#50H
LOOOP1:   LCALL  KEY
          MOV    KEYZHI,A
          MOV    A,4EH  ; 判是否有键按下
          CJNE   A,#00H,LOOOP1
          MOV    A,KEYZHI
          CJNE   A,#0EH,KU1
          LJMP   YY1

  KU1:    MOV    @R0,KEYZHI
          LCALL  FINDTAB
          MOV    COMX,#0BAH
          MOV    COMY,R5
          MOV    JCS1CS2,R6
          LCALL  DISP
          MOV    A,R5
          ADD    A,#10H
          MOV    R5,A
          INC    R0
          INC    R4
          MOV    A,R4
          CJNE   A,#04H,RRR1
          MOV    R6,#01H
          MOV    R5,#40H
  RRR1:   LJMP   LOOOP1
   YY1:   MOV    A,R4
          CJNE   A,#00H,KS1
          LJMP   TSF0

   KS1:   MOV     DPTR,#DT3
          MOV     COMX,#0BCH
          MOV     COMY,#40H
          MOV     JCS1CS2,#00H
          LCALL   DISP
          MOV     A,R4
   ZZ1:   CJNE    A,#01H,ZL1
          DEC     50H
          LJMP    ZS1
   ZL1:   CJNE    A,#02H,ZM1
          DEC     50H
          DEC     51H
          MOV     R1,50H
          MOV     50H,51H
          MOV     51H,R1
          LJMP    ZS1
   ZM1:   CJNE    A,#03H,ZN1
          DEC     52H
          DEC     51H
          DEC     50H
          MOV     R1,50H
          MOV     50H,52H
          MOV     52H,R1
          LJMP    ZS1
   ZN1:   CJNE    A,#04H,ZO1
          DEC     53H
          DEC     52H
          DEC     51H
          DEC     50H
          MOV     R1,50H
          MOV     R2,51H
          MOV     50H,53H
          MOV     51H,52H
          MOV     52H,R2
          MOV     53H,R1
          LJMP    ZS1
   ZO1:   CJNE    A,#05H,ZP1
          DEC     54H
          DEC     53H
          DEC     52H
          DEC     51H
          DEC     50H
          MOV     R1,50H
          MOV     R2,51H
          MOV     50H,54H
          MOV     51H,53H
          MOV     53H,R2
          MOV     54H,R1
          LJMP    ZS1
   ZP1:   CJNE    A,#06H,ZA1
          DEC     55H
          DEC     54H
          DEC     53H
          DEC     52H
          DEC     51H
          DEC     50H
          MOV     R1,50H
          MOV     R2,51H
          MOV     R3,52H
          MOV     50H,55H
          MOV     51H,54H
          MOV     52H,53H
          MOV     53H,R3
          MOV     54H,R2
          MOV     55H,R1
          LJMP    ZS1
   ZA1:   CJNE    A,#07H,ZB1
          DEC     56H
          DEC     55H
          DEC     54H
          DEC     53H
          DEC     52H
          DEC     51H
          DEC     50H
          MOV     R1,50H
          MOV     R2,51H
          MOV     R3,52H
          MOV     50H,56H
          MOV     51H,55H
          MOV     52H,54H
          LJMP    ZS1
   ZB1:   CJNE    A,#08H,$
          DEC     57H
          DEC     56H
          DEC     55H
          DEC     54H
          DEC     53H
          DEC     52H
          DEC     51H
          DEC     50H
          MOV     R1,50H
          MOV     R2,51H
          MOV     R3,52H
          MOV     R4,53H
          MOV     50H,57H
          MOV     51H,56H
          MOV     52H,55H
          MOV     53H,54H
          MOV     54H,R4
          MOV     55H,R3
          MOV     56H,R2
          MOV     57H,R1
  ZS1:    PUSH    PSW
          MOV     R0,#50H
          MOV     R1,#4FH
          LCALL   BCDHEX
          MOV     4CH,         5CH         ;高位不用置零
          MOV     4DH,         5DH
          MOV     4EH,         5EH
          MOV     4FH,         5FH
          MOV     5CH,         #00H
          MOV     5DH,         #0AH        ;置数值先送入4D~4F单元
          MOV     5EH,         #0D9H
          MOV     5FH,         #0C7H         
          LCALL   MULNM
          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,#00H
          MOV     5DH,#0FH
          MOV     5EH,#42H
          MOV     5FH,#40H                    
          LCALL   DIVD2
;送频率字    
PLZ1:     CLR    P1.7
          MOV    P0,4FH
          NOP

	  LJMP  $
          POP   DPL
          POP   DPH
          POP   PSW
          LJMP  TSF0
;双口RAM写字程序
;入口:00H~OFFH单元的内容写入
          GRAM   EQU    0C0H   ;双口RAM高位地址
          DRAM   EQU    08H    ;双口RAM地位地址
WRITERAM: MOV    R7,#08H      ;循环8次,写8个单元
          MOV    R1,#50H
          MOV    P2,#GRAM
          MOV    R0,#DRAM
     AA:  MOV    P0,R0
          MOV    A,@R1
          MOVX   @R0,A
          INC    R1
          INC    R0
          MOVX   @R0,A
          DJNZ   R7,AA
          RET
;读双口RAM字程序
;读回的内容存放在00H~0FFH单元中
   GGRAM   EQU    0C0H   ;双口RAM高位地址
   DDRAM   EQU    08H    ;双口RAM地位地址
  READRAM: MOV    R7,    #08H
           MOV    R1,    #40H
           MOV    P2,    #GGRAM
           MOV    R0,    #DDRAM
    BB:    MOV    P0,    R0
           MOVX   A,     @R0
           MOV    @R1,   A
           INC    R0
           INC    R1
           DJNZ   R7,    BB
           RET

           AD0	  EQU	30H
           AD1	  EQU	31H
           AD2	  EQU	32H
           AD3	  EQU	33H
           AD4	  EQU	34H
           AD5	  EQU	35H
           AD6	  EQU	36H
           ADA	  EQU	4FH
           ADB	  EQU	5FH
           ADC	  EQU	4DH
           ADDV	  EQU	5DH

;非压缩的BCD码转换成十六数
BCDHEX :
         MOV     4CH,#00H
         MOV     4DH,#00H
         MOV     4EH,#10H
         MOV     4FH,#00H
         MOV     R7,#04H
     KL: MOV     A,@R0
         MOV     @R1,A
         INC     R0
         MOV     A,@R0
         SWAP    A
         ORL     A,@R1
         MOV     @R1,A
         INC     R0
         DEC     R1
         DJNZ    R7,KL
         NOP		  ; N BYTES COMPRESSED BCD CODES TO M BYTES HEX CODES
	 MOV	 30H,#07H ; HERE N=M=3 BCD(4C,4D,4E,4FH)--HEX(5C,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
         NOP
         RET

;乘法子程序
MULNM:    NOP                    ; N BYTES X M BYTES = N+M BYTES HERE N=4;M=4
	  MOV	30H,#07H         ; (4C,4D,4E,4FH)*(5C,5D,5E,5FH)=(58--5FH)
	  MOV	31H,#08H
MULTT:	  MOV	A,AD0
	  MOV	R3,AD1
	  MOV	R2,A
	  ADD	A,R3
	  INC	A
	  MOV	AD2,A
	  MOV	A,#ADB
	  CLR	C
	  SUBB	A,R3
	  MOV	AD6,A
	  MOV	R1,A
	  SUBB	A,R2
	  MOV	AD5,A
	  INC	R2
MULNMZ:   MOV	@R1,#00H
	  DEC	R1
	  DJNZ	R2,MULNMZ
MULNMB:   MOV	R2,AD0
	  MOV	R1,AD6
	  MOV	R0,#ADA
	  CLR	00H
MULNML:   MOV	A,ADB
	  JZ	MULNMD
	  MOV	B,@R0
	  MUL	AB
	  ADD	A,@R1
	  MOV	@R1,A
	  JNB	00H,MULNM1
	  INC	B
MULNM1:   MOV	A,B
	  DEC	R1
	  ADDC	A,@R1
	  MOV	@R1,A
	  MOV	00H,C
	  DEC	R0
	  DJNZ	R2,MULNML
MULNMD:   MOV	R0,AD5
	  CLR	A
	  MOV	R2,AD2
MULNMS:   XCH	A,@R0
	  INC	R0
	  DJNZ	R2,MULNMS
	  DJNZ	R3,MULNMB
          NOP
          RET

;除法子程序
DIVD2:    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
	  JC	DIVM2E
 DIVM2S:  INC	ADA
	  MOV	R2,AD1
	  MOV	R0,AD3
	  MOV	R1,#ADB
	  LCALL SUBMBB
 DIVM2E:  DJNZ	R3,DIVM2D
          RET
 DIVM20:  SETB	0F0H
	  RET

 SHIL1:   MOV	R2,AD0
	  MOV	R0,#ADA
 SHIL1B:  CLR	C
 SHILL:   MOV	A,@R0
	  RLC	A
	  MOV	@R0,A
	  DEC	R0
	  DJNZ	R2,SHILL
	  RET
 SUBMBB:  CLR	C
 SUBMB1:  MOV	A,@R0
	  SUBB	A,@R1
    	  MOV	@R0,A
	  DEC	R0
	  DEC	R1
	  DJNZ	R2,SUBMB1
	  RET
          END
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

⌨️ 快捷键说明

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