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

📄 kx1.asm

📁 Alera 的8051 IP core的示例文件5个
💻 ASM
📖 第 1 页 / 共 4 页
字号:
 ; 2005-12-22 'LCD

         RS	EQU	P3.0
         RW	EQU	P3.1
         E	EQU	P3.2
         DAT	EQU	30H
         DAT1	EQU	31H

          ORG   0000H
          MOV   0FFH,#0FFH 
          SJMP  START1
	  ORG	000BH
	  JMP	T0INT
	  ORG	0023H
	  JMP	SIOINT
	  ORG	0030H
          
 GOTO1:   LJMP   GPS
 START1:  MOV    SP,#60H
          NOP
          JNB     P0.0, GOTO1

          MOV	 DAT,#01H      ; CLEAR 液晶显示初始化
	  LCALL	 ENABLE        ; 如果使用LCD液晶显示,在程序开头必须加上这句
          LCALL  DISP3
          MOV	 DAT,#01H      ; CLEAR
	  LCALL	 ENABLE
          MOV   R5,#80H
          MOV   DPTR,#KONX
          LCALL FB6
          MOV    DPTR,#TC1
          MOV    R5,#0C0H
          LCALL  FB1

          MOV	 DAT,#0CH   ; 关闭光标
	  LCALL	 ENABLE
          MOV    7AH,#00H
          MOV    7BH,#00H
          MOV    7CH,#00H
          MOV    7DH,#00H

KKE1:     LCALL KKEYI       ;键盘信号搜索
 KCACOM:  LCALL KCOM1    ;  A > 9 执行键盘命令
          LJMP  KKE1
     ;lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
     ;LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
KCOM1:  CJNE   A,#00H,KN88 ;     键1 (04): ---------------------------(1)
                                        ; 键13(K34)控制----测频率-------
          LCALL  CLR88
          MOV	 DAT,#01H      ; CLEAR
	  LCALL	 ENABLE
                            ;  -----------------------------------------------测频率-------------------------------------
          MOV    DPTR,#FN_A             ;以上程序显示液晶设置
          MOV    R5,#80H
          LCALL  FCN9

   RRRV:  LCALL  TESTF          ; 测频率子程序
          LCALL  TESTFF         ; 数据显示调整子程序

          SJMP   RRRV


  KN88 :  CJNE  A,#01H,KF14             ; 键14(K35)控制----测脉宽-------
          MOV	DAT,#01H      ; CLEAR
	  LCALL	ENABLE

  RRRC:   MOV    DPTR,#FN_B
          MOV    R5,#81H
          LCALL  FCN9
          MOV    0BH,#00H
          MOV    0AH,#00H
          LCALL  WITH            ; 测脉宽子程序
          LCALL  TESTPW          ; 数据显示调整子程序
          SJMP   RRRC
          RET


  KF14:   CJNE  A,#02H,KF15             ; 键15(K36)控制----测占空比-------
          MOV	DAT,#01H      ; CLEAR
	  LCALL	ENABLE
          MOV    DPTR,#FN_C
          MOV    R5,#81H
          LCALL  FCN9
          MOV    0BH,#00H
          MOV    0AH,#00H
RRRN:     LCALL  RATO             ; 测占空比子程序
          LCALL  TESTD            ; 数据显示调整子程序
          SJMP   RRRN

  KF15:                                ; 键16(K37)控制
          MOV    A,#49H
          MOV    B,#80H
          LCALL  DISP2
          MOV    A,#43H
          MOV    B,#80H
          LCALL  DISP2
          LJMP   CCC
          RET
          RET

;LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
;
;KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
  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  ; 除法程序,30H放置被除数字节数,31H放置除数字节数
  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
	  DB	  02H,12H

  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

   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


  MULNM:  NOP             ; N BYTES X M BYTES = N+M BYTES HERE N=3;M=3
	  MOV	30H,#06H  ; (4D,4E,4FH)*(5D,5E,5FH)=(5A--5FH)
	  MOV	31H,#06H  ; 乘法程序,30H放置被乘数字节数,31H放置乘数字节数
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
	  RET

;  LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
KKEYI:	  LCALL KKS1	   ; KEY SCANNING PROG
          JNZ   KLK1       ;  有键盘, 转跳 KLK1
  KN1:	  LCALL DELAY
          LCALL DELAY
          LCALL DELAY
          SJMP  KKEYI      ;  无键,转跳 KKEYI 继续测键

KLK1:	  LCALL DELAY
          LCALL DELAY
          LCALL KKS1
          JNZ   KLK2       ;  确实有键,转跳至 KLK2
          LCALL DELAY
          SJMP  KKEYI

KLK2:	  NOP		      ; THERE IS KEYI
          JB    P1.0,NOK1
          MOV   A,#00H
          LJMP  GOHM
NOK1:     NOP
          JB    P1.1,NOK2
          MOV   A,#01H
          LJMP  GOHM
NOK2:     NOP
          JB    P1.2,NOK3
          MOV   A,#02H
          LJMP  GOHM
NOK3:     NOP
          JB    P1.3,NOK4
          MOV   A,#03H
          LJMP  GOHM
NOK4:     NOP
          JB    P1.4,NOK5
          MOV   A,#04H
          LJMP  GOHM
NOK5:     NOP
          JB    P1.5,NOK6
          MOV   A,#05H
          LJMP  GOHM
NOK6:     NOP
          JB    P1.6,NOK7
          MOV   A,#06H
          LJMP  GOHM
NOK7:     NOP
          JB    P1.7,KLK1
          MOV   A,#07H


GOHM:     PUSH   ACC
KLK3:	  LCALL DELAY
          LCALL KKS1
          JNZ   KLK3
          LCALL DELAY
          LCALL KKS1
          JNZ   KLK3
          POP   ACC
          RET

 KKS1:
          MOV   A,P1
          CPL   A
          RET       ;  IF THERE IS KEYING THEN A =/= 0
;LLLLLLLLLLLLLLLLLLLLLLLLLLLLLL

 ; TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
 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(59,5A,5B,5C,5D,5E,5FH)
	  MOV	     31H,#07H  ; BCD码向16进制HEX码转换程序
	  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

      ;
;llllllllllllllllllllllllllllllllllllll

DSP1:	MOV     R1,40H
	INC     R1
        MOV     40H,R1
        MOV     A,@R1 ; DAT1
	MOV	P1,A
	SETB	RS
	CLR	RW
        nop
	CLR	E
        NOP
        NOP
	SETB	E
        LCALL   DDT9
        DJNZ	R2,DSP1
	RET

ENABLE:	CLR	RS
	CLR	RW
	MOV	P1,DAT
	CLR	E
        nop
	SETB	E
        LCALL   DDT9
	RET


ASC1:    MOV    DPTR,#TAJ
          MOVC   A,@A+DPTR
          RET
 TAJ:     DB     30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,41H,42H,43H,44H,45H,46H
; KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
 ASC:     MOV    DPTR,#TA6
          MOVC   A,@A+DPTR
          RET
 TA6:     DB     30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,20H,48H,7AH,4DH
          DB     0E4H,73H,2EH  ;   0EH- u  ; 0FH- s  ;10H ->.


DISP3:	MOV	DAT,#38H ;8bit 2 Rol 5*7
	LCALL	ENABLE
	MOV	DAT,#0FH	;OPEN LCD : 00001DCB
	LCALL	ENABLE
	MOV	DAT,#06H	;LEFT TO RIGHT:
	LCALL	 ENABLE
	RET

       ;
;
   FB1:   MOV    R4,#14H
          MOV    R6,#00H
    RC5:  MOV    A,R6
          INC    R6
          MOVC   A,@A+DPTR
          MOV    B,R5
          INC    R5
          LCALL  DISP2
          DJNZ   R4,RC5
          RET

TC1:      DB     20H,20H,53H,49H,47H,4EH,41H,4CH,20H,54H,65H,73H,74H,73H,20H,20H
          ;                  SIGNAL_TESTS

;LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
   FB6:   MOV    R4,#0AH  ; SQUARE: ,SAWTOOTH , TRIANGLE, LADDER
          MOV    R6,#00H
   RCV:   MOV    A,R6
          INC    R6
          MOVC   A,@A+DPTR
          MOV    B,R5
          INC    R5
          LCALL  DISP2
          DJNZ   R4,RCV
          RET

  KONX:    DB     20H,20H,20H,20H,4BH,4FH,4EH,58H,49H,4EH ; KONXIN

;LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
 FCN9:   MOV    R4,#05H ;
          MOV    R6,#00H
   RCT9:  MOV    A,R6
          INC    R6
          MOVC   A,@A+DPTR
          MOV    B,R5
          INC    R5
          LCALL  DISP2

⌨️ 快捷键说明

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