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

📄 频率计.asm

📁 本频率计的设计以AT89C51单片机为核心
💻 ASM
字号:
ORG 0000H
AJMP START
ORG 000BH       ;T0中断入口
AJMP T0INT
ORG 001BH       ;T1中断入口
AJMP T1INT
ORG 0030H

START:
MOV SP,#70H
MOV IE,#8AH     ;开放T0、T1中断
MOV TMOD,#51H  ;T0定时,T1计数
MOV TH0,#0DCH
MOV TL0,#00H    ;定时10ms
MOV 20H,#100    ;100*10ms=1s
MOV TH1,#00H
MOV TL1,#00H
MOV 21H,#0
MOV 22H,#0
MOV 23H,#0;存放采集到的频率
SETB TR1
SETB TR0
WAIT:AJMP WAIT ;等待中断

T1INT:
INC 23H;计数器溢出则23H单元自增1
RETI

T0INT:  ;定时10ms产生中断
DJNZ 20H,NEXT1
CLR TR1
CLR TR0
MOV 22H,TH1 ;1s时间到则采集数据
MOV 21H,TL1
ACALL DISPLAY
AJMP EXIT
NEXT1:MOV TH0,#0DCH  ;继续定时
MOV TL0,#00H
EXIT:RETI

DISPLAY:
MOV R0,#50H
MOV R1,#06H  ;对50H-55H单元清零
NEXT2:MOV @R0,#0
INC R0
DJNZ R1,NEXT2

ZHUANHUAN:    ;进制转换
MOV A,23H
MOV B,#0AH
DIV AB
MOV 24H,A      ;存储第一位商
;---------------
MOV A,B
MOV 30H,22H
ANL 30H,#0F0H
ADD A,30H
SWAP A
MOV B,#0AH
DIV AB
MOV 25H,A       ;存储第二位商
;---------------
MOV A,B
SWAP A
ANL 22H,#0FH
ADD A,22H
MOV B,#0AH
DIV AB
MOV 26H,A       ;存储第三位商
;---------------
MOV A,B
MOV 30H,21H
ANL 30H,#0F0H
ADD A,30H
SWAP A
MOV B,#0AH
DIV AB
MOV 27H,A       ;存储第四位商
;---------------
MOV A,B
SWAP A
ANL 21H,#0FH
ADD A,21H
MOV B,#0AH
DIV AB
MOV 28H,A       ;存储第五位商
MOV 50H,B      ;存储十进制数个位
;;;;;;;;;;;;;;;;;
MOV A,24H
SWAP A
ADD A,25H
MOV B,#0AH
DIV AB
MOV 24H,A       ;存储第一位商
;---------------
MOV A,B
SWAP A
ADD A,26H
MOV B,#0AH
DIV AB
MOV 25H,A       ;存储第二位商
;---------------
MOV A,B
SWAP A
ADD A,27H
MOV B,#0AH
DIV AB
MOV 26H,A       ;存储第三位商
;---------------
MOV A,B
SWAP A
ADD A,28H
MOV B,#0AH
DIV AB
MOV 27H,A       ;存储第四位商
MOV 51H,B      ;存储十进制数十位
;;;;;;;;;;;;;;;;;
MOV A,24H
SWAP A
ADD A,25H
MOV B,#0AH
DIV AB
MOV 24H,A       ;存储第一位商
;---------------
MOV A,B
SWAP A
ADD A,26H
MOV B,#0AH
DIV AB
MOV 25H,A       ;存储第二位商
;---------------
MOV A,B
SWAP A
ADD A,27H
MOV B,#0AH
DIV AB
MOV 26H,A       ;存储第三位商
MOV 52H,B      ;存储十进制数百位
;;;;;;;;;;;;;;;;;
MOV A,24H
SWAP A
ADD A,25H
MOV B,#0AH
DIV AB
MOV 24H,A       ;存储第一位商
;---------------
MOV A,B
SWAP A
ADD A,26H
MOV B,#0AH
DIV AB
MOV 25H,A       ;存储第二位商
MOV 53H,B     ;存储十进制数千位
;;;;;;;;;;;;;;;;;
MOV A,24H
SWAP A
ADD A,25H
MOV B,#0AH
DIV AB
MOV 54H,B     ;存储十进制数万位
MOV 55H,A    ;存储十进制数十万位

PINBI:      ;将高位的0屏蔽不显示
MOV R3,#0
MOV R0,#55H
ST2:MOV A,@R0
JZ ST1
AJMP SHUMA
ST1:INC R3
DEC R0
AJMP ST2

SHUMA:
MOV A,#6
CLR C
SUBB A,R3
MOV R2,A ;将需要显示的位数存入R2
CLR C
CJNE R2,#4,LOOP1
LOOP1:JNC LOOP2
SETB P1.2
LOOP2:CLR P1.2
MOV R0,#50H
MOV R7,#11111110B
MOV DPTR,#TAB
NEXT3:MOV A,@R0
MOVC A,@A+DPTR
MOV P0,A
MOV A,R7
MOV P2,A
LCALL DEL
INC R0
RL A
MOV R7,A
DJNZ R2,NEXT3
RET
DEL:MOV R6,#250
 DJNZ R6,$
 RET
TAB:DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6H
END

⌨️ 快捷键说明

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