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

📄 feng.asm

📁 51编写的电扇的程序
💻 ASM
字号:
		ORG   0000H
		AJMP   MAIN

		ORG   0003H
		AJMP  OUT0

		ORG   001BH
		AJMP  BRT1

OUT0:	MOV   FLAG1,#1
		MOV   A,DAC0L
		ADD   A,#55H
		MOV   DAC0L,A
		MOV   A,DAC0H
		ADDC  A,#1
		JB    ACC.4,NEXT
		MOV   DAC0H,A
		JMP   LAST
NEXT:   MOV   DAC0H,#08H
		MOV   DAC0L,#00H
LAST:   RETI

BRT1:   MOV   A,FLAG
		JZ    OPEN
		CLR   TR0
		MOV   FLAG,#0
		MOV   57H,TH0
		MOV   58H,TL0
		MOV   TH1,#1CH
		MOV   TL1,#67H
		AJMP  BACK
OPEN:	MOV   TH0,#0
		MOV   TL0,#0
		SETB  TR0
		MOV   FLAG,#1
BACK:	RETI

DACCON  EQU   0FDH
DAC0L   EQU   0F9H
DAC0H   EQU   0FAH
DATA1   EQU   50H
DATA2   EQU   51H
DATA3   EQU   52H
LEN     EQU   43H
FLAG    EQU   44H
FLAG1   EQU   45H

/*写左半屏命令*/
WRITE_COMMAND_L: 
		PUSH  DPH
		PUSH  DPL      
		MOV   DPTR,#0102H
		MOV   A,#04H
		MOVX  @DPTR,A
		MOV   DPTR,#0101H
		MOV   A,DATA1
		MOVX  @DPTR,A
		INC   DPTR
		MOV   A,#14H
		MOVX  @DPTR,A
		MOV   A,#00H
		MOVX  @DPTR,A
		POP   DPL
		POP   DPH
		RET

/*写左半屏数据*/
WRITE_DATA_L:
		PUSH  DPH
		PUSH  DPL
        MOV   DPTR,#0102H
		MOV   A,#05H
		MOVX  @DPTR,A
		MOV   DPTR,#0101H
		MOV   A,DATA2
		MOVX  @DPTR,A
		INC   DPTR
		MOV   A,#15H
		MOVX  @DPTR,A
		MOV   A,#01H
		MOVX  @DPTR,A
		POP   DPL
		POP   DPH
		RET

/*写右半屏命令*/
WRITE_COMMAND_R:
		PUSH  DPH
		PUSH  DPL
        MOV   DPTR,#0102H
		MOV   A,#08H
		MOVX  @DPTR,A
		MOV   DPTR,#0101H
		MOV   A,DATA1
		MOVX  @DPTR,A
		INC   DPTR
		MOV   A,#18H
		MOVX  @DPTR,A
		MOV   A,#00H
		MOVX  @DPTR,A
		POP   DPL
		POP   DPH
		RET

/*写右半屏数据*/
WRITE_DATA_R:
		PUSH  DPH
		PUSH  DPL
        MOV   DPTR,#0102H
		MOV   A,#09H
		MOVX  @DPTR,A
		MOV   DPTR,#0101H
		MOV   A,DATA2
		MOVX  @DPTR,A
		INC   DPTR
		MOV   A,#19H
		MOVX  @DPTR,A
		MOV   A,#01H
		MOVX  @DPTR,A
		POP   DPL
		POP   DPH
		RET

/*延时程序*/
MS40:   MOV   R7,#0E8H
MS2:    MOV   R6,#0FFH
MS1:    DJNZ  R6,MS1
        DJNZ  R7,MS2
		RET
DELAY:  MOV   R5,#04H
DELAY1: LCALL MS40
        DJNZ  R5,DELAY1
		RET

/*************************/

MAIN:	MOV   P2,#00H
		MOV   SP,#60H
		MOV   DACCON,#2DH
		MOV   DAC0H,#08H
		MOV   DAC0L,#00H
		MOV   DPTR,#0100H
		MOV   A,#0FH
		MOVX  @DPTR,A
		SETB  EA
		SETB  EX0
		SETB  IT0
		MOV   FLAG,#0
	;	MOV   FLAG1,#0

		MOV   DATA1,#3EH
		LCALL WRITE_COMMAND_L
		LCALL WRITE_COMMAND_R   ;显示关
		MOV   DATA1,#3FH
		LCALL WRITE_COMMAND_L
		LCALL WRITE_COMMAND_R	;显示开
		MOV   DATA1,#0C0H
		LCALL WRITE_COMMAND_L
		LCALL WRITE_COMMAND_R

		MOV   R1,#8
		MOV   DATA3,#0B8H
		MOV   DATA1,DATA3
M21:	MOV   DATA1,DATA3	  
		LCALL WRITE_COMMAND_L	;左第DATA3页
		LCALL WRITE_COMMAND_R
		MOV   DATA1,#40H
		LCALL WRITE_COMMAND_L
		LCALL WRITE_COMMAND_R
		MOV   R2,#64
L21:    MOV   DATA2,#00H
		LCALL WRITE_DATA_L
		LCALL WRITE_DATA_R
		DJNZ  R2,L21
		INC   DATA3
		DJNZ  R1,M21

							   ;显示汉字‘转速’
		MOV   DATA1,#0C0H
		LCALL WRITE_COMMAND_L
		MOV   DPTR,#WORD
		MOV   R1,#2
		MOV   DATA3,#0B9H	  ;第2页开始显示
M11:    MOV   DATA1,DATA3
		LCALL WRITE_COMMAND_L	;左第DATA3页
		MOV   DATA1,#48H
		LCALL WRITE_COMMAND_L	;Y开始地址
		MOV   R2,#20H
L11:     CLR   A
        MOVC  A,@A+DPTR
		MOV   DATA2,A
		LCALL WRITE_DATA_L
		INC   DPTR
		DJNZ  R2,L11
		INC   DATA3
		DJNZ  R1,M11

							   ;显示单位‘转/分’
		MOV   DATA1,#0C0H
		LCALL WRITE_COMMAND_R
		MOV   DPTR,#UNIT1
		MOV   R1,#2
		MOV   DATA3,#0BBH	  ;第4页开始显示
M3:    MOV   DATA1,DATA3
		LCALL WRITE_COMMAND_R	;右第DATA3页
		MOV   DATA1,#48H
		LCALL WRITE_COMMAND_R	;Y开始地址
		MOV   R2,#22H
L3:     CLR   A
        MOVC  A,@A+DPTR
		MOV   DATA2,A
		LCALL WRITE_DATA_R
		INC   DPTR
		DJNZ  R2,L3
		INC   DATA3
		DJNZ  R1,M3
				
		MOV   TMOD,#15H  ;T1方式1,定时器
		MOV   TH1,#28H
		MOV   TL1,#00H  ;定时器赋初值;60ms
		SETB  ET1
		SETB  PX0
		SETB  TR1       ;启动T1
		
		
MAIN1:	
		MOV   A,58H
		MOV   B,#0E8H
		MUL   AB
		MOV   R5,A
		MOV   R4,B
		MOV   A,57H
		MOV   B,#0E8H
		MUL   AB
		ADD   A,R4
		MOV   R4,A
		MOV   A,B
		ADDC  A,#0
		MOV   R3,A
		MOV   A,58H
		MOV   B,#03H
		MUL   AB
		ADD   A,R4
		MOV   R4,A
		MOV   A,B
		ADDC  A,R3
		MOV   R3,A
		MOV   A,#0
		ADDC  A,#0
		MOV   R2,A
		MOV   A,57H
		MOV   B,#03H
		MUL   AB
		ADD   A,R3
		MOV   R3,A
		MOV   A,B
		ADDC  A,R2
		MOV   R2,A

		MOV   R6,#00H
		MOV   R7,#09H

		MOV   A,R3
		CLR   C
		SUBB  A,R7
		MOV   A,R2
		SUBB  A,R6
MOV   LEN,#16		;57H58H/#0DH->R0R1
DIVL: 	CLR   C
		MOV   A,R5
        RLC   A
		MOV   R5,A
        MOV   A,R4
        RLC   A
		MOV   R4,A
		MOV   A,R3
		RLC   A
		MOV   R3,A
		XCH   A,R2
		RLC   A
		XCH   A,R2
		MOV   F0,C
		CLR   C
		SUBB  A,R7
		MOV   R1,A
		MOV   A,R2
		SUBB  A,R6
		JB    F0,DVME
		JC    DMDE
DVME:   MOV   R2,A
		MOV   A,R1
		MOV   R3,A
		INC   R5
DMDE:   DJNZ  LEN,DIVL
		CLR   F0

		MOV   A,R4
		MOV   R0,A
		MOV   A,R5
		MOV   R1,A	
		

		;进制转换     R0R1->R3R4
BINBCD: CLR   A
       	MOV   R3,#00H
		MOV   R4,#00H
		MOV   LEN,#16
BINBCL:	CLR   C
        MOV   A,R1
		RLC   A
		MOV   R1,A
		MOV   A,R0
		RLC   A
		MOV   R0,A     ;R0R1左移
		MOV   A,R4
		ADDC  A,R4
		DA    A
		MOV   R4,A
		MOV   A,R3
		ADDC  A,R3
		DA    A
		MOV   R3,A
		DJNZ  LEN,BINBCL

		;40h41h42h43h存储转速
		MOV   A,R3
		SWAP  A
		ANL   A,#0FH
		MOV   40H,A
		MOV   A,R3
		ANL   A,#0FH
		MOV   41H,A
		MOV   A,R4
		SWAP  A
		ANL   A,#0FH
		MOV   42H,A
		MOV   A,R4
		ANL   A,#0FH
		MOV   43H,A
		
						;液晶显示
		
		MOV   R0,#40H
		MOV   LEN,#4
SHOW:	MOV   A,@R0
		JNZ   N1
		MOV   DPTR,#NUM0
		JMP   YESHEZHI
N1:		DEC   A
		JNZ   N2
		MOV   DPTR,#NUM1
		JMP   YESHEZHI
N2:		DEC   A
		JNZ   N3
		MOV   DPTR,#NUM2
		JMP   YESHEZHI
N3:	    DEC   A
		JNZ   N4
		MOV   DPTR,#NUM3
		JMP   YESHEZHI
N4:		DEC   A
		JNZ   N5
		MOV   DPTR,#NUM4
		JMP   YESHEZHI
N5:		DEC   A
		JNZ   N6
		MOV   DPTR,#NUM5
		JMP   YESHEZHI
N6:		DEC   A
		JNZ   N7
		MOV   DPTR,#NUM6
		JMP   YESHEZHI
N7:		DEC   A
		JNZ   N8
		MOV   DPTR,#NUM7
		JMP   YESHEZHI
N8:		DEC   A
		JNZ   N9
		MOV   DPTR,#NUM8
		JMP   YESHEZHI
N9:	    MOV   DPTR,#NUM9
		JMP   YESHEZHI
TIAO:	JMP   SHOW
YESHEZHI:	MOV   R1,#2
		MOV   DATA3,#0BBH	  ;第四页开始显示
M1:     MOV   DATA1,DATA3
		LCALL WRITE_COMMAND_L	;左第DATA3页
		MOV   A,LEN
		DEC   A
		JNZ	  LEN1
		MOV   DATA1,#78H
		JMP   DIZHI
LEN1:	DEC   A
		JNZ	  LEN2
		MOV   DATA1,#70H
		JMP   DIZHI
LEN2:	DEC   A
		JNZ	  LEN3
		MOV   DATA1,#68H
		JMP   DIZHI
LEN3:	MOV   DATA1,#60H
DIZHI:	LCALL WRITE_COMMAND_L	;Y开始地址
		MOV   R2,#8
L1:     CLR   A
        MOVC  A,@A+DPTR
		MOV   DATA2,A
		LCALL WRITE_DATA_L
		INC   DPTR
		DJNZ  R2,L1
		INC   DATA3
		DJNZ  R1,M1
		INC   R0
		DJNZ  LEN,TIAO

    	LCALL DELAY


		LJMP  MAIN1

NUM0:
DB  00H,0FCH,04H,04H,04H,04H,0FCH,00H,	 00H,1FH,10H,10H,10H,10H,1FH,00H
NUM1:
DB  00H,00H,00H,00H,0FCH,00H,00H,00H,   00H,00H,00H,00H,1FH,00H,00H,00H
NUM2:
DB  00H,84H,84H,84H,84H,84H,0FCH,00H,   00H,1FH,10H,10H,10H,10H,10H,00H
NUM3:
DB  00H,84H,84H,84H,84H,84H,0FCH,00H,   00H,10H,10H,10H,10H,10H,1FH,00H
NUM4:
DB  00H,0FCH,80H,80H,80H,80H,0FCH,00H,   00H,00H,00H,00H,00H,00H,1FH,00H
NUM5:
DB  00H,0FCH,84H,84H,84H,84H,84H,00H,   00H,10H,10H,10H,10H,10H,1FH,00H
NUM6:
DB  00H,0FCH,84H,84H,84H,84H,84H,00H,   00H,1FH,10H,10H,10H,10H,1FH,00H
NUM7:
DB  00H,04H,04H,04H,04H,04H,0FCH,00H,   00H,00H,00H,00H,00H,00H,1FH,00H
NUM8:
DB  00H,0FCH,84H,84H,84H,84H,0FCH,00H,   00H,1FH,10H,10H,10H,10H,1FH,00H
NUM9:
DB  00H,0FCH,84H,84H,84H,84H,0FCH,00H,   00H,10H,10H,10H,10H,10H,1FH,00H
WORD:
DB  0C8H,0A8H,9CH,0EBH,88H,88H,88H,40H,  48H,0F8H,4FH,48H,48H,48H,40H,00H
DB  40H,42H,0CCH,00H,04H,0E4H,24H,24H,  0FFH,24H,24H,24H,0E4H,04H,00H,00H
DB  08H,08H,04H,0FFH,04H,04H,00H,02H,    0BH,12H,22H,0D2H,0EH,02H,00H,00H
DB  40H,20H,1FH,20H,48H,49H,45H,43H,   7FH,41H,43H,45H,4DH,40H,40H,00H

UNIT1:
DB  0C8H,0A8H,9CH,0EBH,88H,88H,88H,40H,  48H,0F8H,4FH,48H,48H,48H,40H,00H,0FCH,00H  		
DB  80H,40H,20H,98H,87H,82H,80H,80H,83H,84H,98H,30H,60H,0C0H,40H,00H
DB  08H,08H,04H,0FFH,04H,04H,00H,02H,    0BH,12H,22H,0D2H,0EH,02H,00H,00H,5FH,00H
DB  00H,80H,40H,20H,10H,0FH,00H,00H,20H,40H,3FH,00H,00H,00H,00H,00H		 
END




⌨️ 快捷键说明

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