📄 pid1.asm
字号:
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP JSH
ORG 000BH
LJMP RSH
ORG 001BH
LJMP PWM
MAIN: MOV A,#0H ;初始化转速值
MOV R0,A
MOV TCON,#01H ;设置外部中断0为边沿触发,
MOV TMOD,#11H ;T0,T1工作方式1,定时器
MOV TL0,#0B0H ;T0低8位初值
MOV TH0,#3CH ;T0高8位初值
MOV IE,#83H ;ET0,EX0开中断,并开总中断
SETB TR0 ;启动T0,开始计数!!
MOV R5,#20 ;软件计数器初值,作用即50ms*20
HALT: SJMP $
JSH: MOV A,R0
ADD A,#01H
MOV R0,A
RETI
RSH: SETB P1.0
MOV TL1,#0B0H
MOV TH1,#6CH
SETB ET1
SETB TR1
DJNZ R5,NEXT
CLR EA ;关中断
BCD: MOV A,R0 ;r3,r2,r1依次为高位到低位
MOV B,#100
DIV AB
MOV R3,A
MOV A,#10
XCH A,B
DIV AB
ORL A,#10H
MOV R2,A
MOV A,B
ORL A,#20H
MOV R1,A
MOV A,#00H
MOV R0,A
MOV R5,#20
ACALL NEXT
SETB EA
L: MOV P2,R1
MOV P2,R2
MOV P2,R3
SJMP L
NEXT: MOV TL0,#0B0H ;重新装初值
MOV TH0,#3CH
RETI
PWM: CLR EA
CLR P1.0
SETB EA
RETI
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -