📄 200-250hz变化频率输出.asm
字号:
;程序名称 200-250Hz变化频率输出
;程序功能 利用定时/计数器T1设定时间的变化,由P1.0口产生200-250Hz变化的频; 率。实际应用例如:传感器、前级推动、频率发生器。
F2H EQU 30H ;200Hz输出频率的计数初值的存放地址
F2L EQU 31H
F3H EQU 32H ;250Hz输出频率的计数初值的存放地址
F3L EQU 33H
ORG 0000H ;程序起始地址
AJMP MAIN ;跳转至MAIN
ORG 001BH ;定时/计数器T1中断服务子程序入口地址
AJMP TIMER1 ;跳转至TIMER1
MAIN:MOV R1,#50 ;R1=50
MOV R2,#2 ;R2=2
MOV F2H,#0F6H ;F2H=0F6H,F2L=46H,即200Hz的计数初值
MOV F2L,#46H
MOV F3H,#0F8H ;F3H=0F8H,F3L=3BH,即250Hz的计数初值
MOV F3L,#3BH
CLR P1.0 ;P1.0复位
MOV TMOD,#00010000B ;定时/计数器T1工作在方式1,16位计数器
MOV TH1,F2H
MOV TL1,F2L ;200Hz输出频率
SETB EA ;CPU开总中断
SETB TR1 ;启动定时/计数器T1
SETB ET1 ;开定时/计数器T1溢出中断
LOOP:AJMP LOOP ;无限循环
;定时/计数器T1中断服务子程序
TIMER1:CPL P1.0 ;P1.0取反
DJNZ R1,RE ;R1不为0时,跳转至RE
MOV R1,#50 ;R1=0时,初始化R1
DJNZ R2,RE ;R2不为0时,跳转至RE
MOV R2,#2 ;R2=0时,初始化R2
MOV A,F2H ;F2H的值送A
CJNE A,F3H,XIA ;A的值不等于F3H的值,跳转至XIA
AJMP JIA ;A=F3H时,跳转至JIA
XIA:INC F2L ;F2L加1
MOV A,F2L ;F2L的值送A
CJNE A,#00H,RE ;A的值不为0时,跳转至RE
INC F2H ;A=0时,F2H加1
MOV A,F2H ;F2H的值送A
CJNE A,F3H,RE ;A的值不等于F3H的值时,跳转至RE
JIA:INC F2L ;到了将200Hz频率的低位加1
MOV A,F2L
CJNE A,F3L,RE
MOV F2H,#0F6H;关闭定时/计数器T1
MOV F2L,#46H
RE:MOV TH1,F2H ;初始化计数器
MOV TL1,F2L
RETI
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -