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

📄 蜂鸣器之报警声.asm

📁 AT89S52单片机程序50例(00-50)
💻 ASM
字号:
;蜂鸣器之报警声
;P1.0接蜂鸣器,变频输出报警

      CODE_SEG SEGMENT CODE 
      DATA_SEG SEGMENT DATA
      STACK_SEG SEGMENT IDATA

      SPK BIT P1.0  ;定义P1.0为蜂鸣器

      RSEG DATA_SEG
  FRQ:DS 1  ;定义1个程序存储器空间为FRQ
  TMP:DS 1  ;定义1个程序存储器空间为TMP
      RSEG STACK_SEG

STACK:DS 20  ;定义20个程序存储器空间,起始地址为STACK

      CSEG AT 00000H  ;程序起始地址
      LJMP MAIN  ;跳转至MAIN
      CSEG AT 0000BH  ;定时/计数器T0中断服务子程序入口地址
      LJMP TIMER0  ;跳转至定时/计数器T0中断服务子程序
      RSEG CODE_SEG

 MAIN:MOV SP,#(STACK-1)  ;堆栈栈顶地址
      MOV TMOD,#01H  ;定时/计数器T0采用定时器方式1,16位计数器
      CLR A  ;A清零
      MOV FRQ,A  ;FRQ清零
      MOV TH0,A  ;计数初值为0FFH,即65.281ms
      MOV TL0,#0FFH
      SETB TR0  ;启动T0
      MOV IE,#082H  ;CPU开总中断,T0开溢出中断
	
MAIN_LP:INC FRQ  ;FRQ加1
	MOV R7,#04  ;R7=4
	LCALL DELAYMS  ;调用延时子程序
	SJMP MAIN_LP

TIMER0:MOV TH0,#0FEH  ;重新初始化T0
       MOV TL0,FRQ
       CPL SPK
 RETI 	

;延时子程序
  DELAYMS:MOV A,R7
          JZ END_DLYMS	
  DLY_LP1:MOV R6,#185
  DLY_LP2:NOP
	  NOP
	  NOP
	  DJNZ R6,DLY_LP2
	  DJNZ R7,DLY_LP1
END_DLYMS:RET 

END

⌨️ 快捷键说明

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