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

📄 200-250hz变化频率输出.asm

📁 AT89S52单片机程序50例(00-50)
💻 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 + -