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

📄 text1.asm

📁 单片机数字电压表汇编程序.希望大家分享哦
💻 ASM
字号:
RS EQU     P2.1    	;LCD 寄存器选择信号
RW EQU     P2.2    	;LCD 读/写选择信号
E  EQU     P2.3      ;LCD enable
COM EQU     50H
DAT     EQU     51H
 ORG 0000H
    LJMP MAIN  
 ORG 0013H
    LCALL READ  ;READ 0808
    RETI
 ORG 0030H
MAIN:  
   LCALL LINT  ;LCD  INITIAL
  KK: MOV SP,#60H
 AINT:
   MOV TCON,#04H
   MOV IE,#084H
   MOV R2,#0
   MOV DPTR,#0F0FFH
   MOV A,R2
   MOVX @DPTR,A      ;START 0808
   LCALL DELAY         ;WAIT TO INTRRUPT 1
 DJNZ R3,AINT ;再次测量
  
 ;**************BEGIN TO PROCESS DIGITAL****************
MULT:
     MOV B,#0C4H
     MUL AB
     MOV R3,A
     MOV R2,B
DISPLAY:

  MOV R0,#00H
  MOV R7,#10H
  MOV R6,#27H
LP1:
   MOV A,R3
   CLR C
   SUBB A,R7
   MOV R5,A
   MOV A,R2
   SUBB A,R6
   MOV R4,A
   JC NEXT0


   INC R0
   MOV A,R5
   MOV R3,A
   MOV A,R4
   MOV R2,A
   AJMP LP1
   NEXT0:
   MOV 30H,R0
   AJMP LOOP1
 LOOP1:
      MOV R0,#00H
      MOV R6,#03H
      MOV R7,#0E8H
LP2:
    MOV A,R3
   CLR C
   SUBB A,R7
   MOV R5,A
   MOV A,R2
   SUBB A,R6
   MOV R4,A
   JC NEXT1
   INC R0
   MOV A,R5
   MOV R3,A
   MOV A,R4
   MOV R2,A
   AJMP LP2
   NEXT1:
   MOV 31H,R0
   AJMP LOOP2

 LOOP2:
    MOV R0,#00H
    MOV R6,#00H
    MOV R7,#64H
  LP3:
   MOV A,R3
   CLR C
   SUBB A,R7
   MOV R5,A
   MOV A,R2
   SUBB A,R6
   MOV R4,A
   JC NEXT2
   INC R0
   MOV A,R5
   MOV R3,A
   MOV A,R4
   MOV R2,A

   AJMP LP3
   NEXT2:
   MOV 32H,R0
   MOV 34H,#10
   MOV 35H,#11
   MOV 36H,#12
   MOV 37H,#13
AJMP LOOP3
;******************求第四位***************************
LOOP3:
      MOV R0,#00H
      MOV R6,#00H
      MOV R7,#0AH
LP4:
    MOV A,R3
   CLR C
   SUBB A,R7
   MOV R5,A
   MOV A,R2
   SUBB A,R6
   MOV R4,A
   JC NEXT3
   INC R0
   MOV A,R5
   MOV R3,A
   MOV A,R4
   MOV R2,A
   AJMP LP4
   NEXT3:
   MOV 33H,R0
;***************************end**********************
  
  LCALL WPAD
;************************PROCES  END************
;******************显示*************************	
MOV     COM,#82H       ;从第1行第2位开始,设置DDRAM地址
	LCALL PR1         ;写入
	MOV   R4,#12    ;第1行共9个字符
	MOV   DPTR,#ZIFU    ;指向显示字符代码首地址
	LCALL WP3           ;第1行字符代码写入DDAM
	MOV   COM,#0C1H      ;设置第2行DDRAM地址
	LCALL PR1          ;write
	MOV   R4,#015      ;第2行共6个字符
	LCALL WP3           ;第2行字符代码写入DDRAM
	LCALL  DELAY0
 AJMP   KK
;********************program end**********************
ZIFU:	DB   04H,05H,"10509:"," ",06H," ",07H;显示字符
	DB  "Voltage=", 00H,02EH,01H,02H,03H,076H,20H

;*****************0808initial**********************


;*****************自定义汉字*******************
  WPAD: MOV COM,#40H
      LCALL PR1
      MOV R1,#30H
      MOV R4,#08H
 WP2:
     MOV A,@R1
     MOV R3,A
     MOV B,R3
     MOV R5,#08H
     MOV A,#08H
     MUL AB
     MOV R7,A
     MOV DPTR,#ZIMO
 WP1:  MOV A,R7
      MOVC A,@A+DPTR
     MOV DAT,A
     LCALL PR2
     INC DPTR
     DJNZ R5,WP1
     INC R1
 DJNZ R4,WP2
      RET

 WP3:    CLR   A
	MOVC  A,@A+DPTR  ;写入1字节字模数据
	MOV   DAT,A
	LCALL PR2          
	INC   DPTR
	DJNZ  R4,WP3
     
	RET
;*****************end********************
;***********************字库*************
  ZIMO: DB  0eH,11H,11H,11H,11H,11H,0eH,00H;   0
      DB  04H,0CH,04H,04H,04H,04H,0EH,00H;     1
      DB  0EH,11H,01H,02H,04H,08H,1FH,00H;     2
      DB  1FH,02H,04H,02H,01H,11H,0EH,00H;     3
      DB  02H,06H,0AH,12H,1FH,02H,02H,00H;     4
      DB  0FH,08H,0EH,01H,01H,11H,0EH,00H;     5
      DB  06H,08H,10H,1EH,11H,11H,0EH,00H;     6
      DB  1FH,01H,02H,04H,08H,08H,08H,00H;     7
      DB  0EH,11H,11H,0EH,11H,11H,0EH,00H;     8
      DB  0EH,11H,11H,0FH,01H,02H,0CH,00H;     9
      DB 18H,1FH,17H,15H,1FH,11H,1FH,00H;      自
      DB 04H,1FH,0EH,15H,04H,0EH,04H,00H;      本
      DB 0FH,15H,07H,01H,17H,11H,07H,00H;      冯
      DB 04H,1FH,0CH,1FH,04H,15H,0CH,00H;      东
 ;***************end****************************
 ;*****************INTERRUPT PROGRAME************
 READ:
  CLR EA
  MOVX A,@DPTR
 RET
;******************END***************************
  
;***************LCD  INITIAL**********************
 LINT:
  LCALL DELAY;
  MOV COM,#38H;
  LCALL PR1
  MOV COM,#01H
  LCALL PR1
   MOV COM,#06H
  LCALL PR1
   MOV COM,#0CH
  LCALL PR1
  MOV P0,#0
RET

DELAY:	MOV	4BH,#02H
	MOV	4CH,#02H
  DELAY1:	
	DJNZ	4BH,DELAY1
	DJNZ	4CH,DELAY1
	RET

DELAY0:	MOV	4BH,#01FH
	MOV	4CH,#00H
  DELAY2:	
	DJNZ	4BH,DELAY2
	DJNZ	4CH,DELAY2
	RET
;***********************初始化结束*********************
;************************读忙标志and write command**********************
PR1:	PUSH	ACC
	CLR	RS
	SETB	RW
PR11:	MOV	P0,#0FFH
	SETB	E
	LCALL	DELAY
	MOV	A,P0                ;读lcd端口
	CLR	E
	JB	ACC.7,PR11          ;判断忙标志
	CLR	RW                  ;准备写命令
	MOV	P0,COM
	SETB	E                    ;write command
        CLR	E                    ;lcd enable 
	POP	ACC
	RET

;********************busy end and ready to write command*****************
;**********************写显示数据程序************************************
PR2:	PUSH	ACC
	CLR	RS
	SETB	RW
PR21:	MOV	P0,#0FFH
	SETB	E
	LCALL	DELAY
	MOV	A,P0
	CLR	E
	JB	ACC.7,PR21
	SETB	RS
	CLR	RW
	MOV	P0,DAT
	SETB	E
        CLR	E
	POP	ACC
	RET
;*************************END*********************************************
END


























  

⌨️ 快捷键说明

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