📄 t9.asm
字号:
ORG 0000H
LJMP START
ORG 000BH
LJMP INTA
ORG 0013H
LJMP INTB
START: MOV SP,#5FH
MOV TMOD,#01H ;方式一
MOV TH0,#0EAH ;1/100秒
MOV TL0,#00H
MOV IE,#86H ;TO,INT1开中断
SETB TR0
SETB IT1 ;INT1边沿触发
CLR P1.0 ;电机停转
MOV R0,#0 ;转速
MOV R1,#0 ;间隔
MOV R2,#0 ;位选
MOV R3,#0 ;运算中介
MOV R4,#0 ;延时用
MOV R5,#0 ;0-1跳变时用
MOV R6,#20 ;可修改的M
MOV R7,#100 ;延时用
LOOP: MOV A,R0
MOV R3,A
MOV R2,#01H
ACALL DISPLAY
MOV A,R0
SWAP A
MOV R3,A
MOV R2,#02H
ACALL DISPLAY
SJMP LOOP
DISPLAY: MOV A,R3
ANL A,#0FH
MOV R3,A
MOV DPTR,#0FF22H ;熄灭LED
MOV A,#0FFH
MOVX @DPTR,A
MOV A,R2 ;位选
MOV DPTR,#0FF21H
MOVX @DPTR,A
MOV A,R3 ;段选
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV DPTR,#0FF22H
MOVX @DPTR,A
MOV R4,#0FFH ;延时
DJNZ R4,$
RET
INTA: PUSH PSW
PUSH ACC
CLR CY ;设置0-1跳变
INC R5
MOV A,R6
SUBB A,R5
JC OUT1
CLR P1.0
SJMP OUT2
OUT1: SETB P1.0
CLR CY
MOV R5,#0
OUT2: DJNZ R7,OUT4 ;判断是否到一秒
MOV A,R1 ;存转速
MOV R0,A
CLR CY ;修正转速
SUBB A,#15H
JZ OUT3
JC UP
INC R6
SJMP OUT3
UP: DEC R6
OUT3: MOV R1,#0
MOV R7,#100
OUT4: POP ACC
POP PSW
MOV TH0,#0EAH ;1/100秒
MOV TL0,#00H
RETI
INTB: INC R1
RETI
TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,98H,88H,83H,0C6H,0A1H,86H,8EH
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -