在好例子网,分享、交流、成长!
您当前所在位置:首页C/C++ 开发实例嵌入式开发 → 单片机pwm输出传统防盗器声音

单片机pwm输出传统防盗器声音

嵌入式开发

下载此实例
  • 开发语言:C/C++
  • 实例大小:0.16M
  • 下载次数:14
  • 浏览次数:475
  • 发布时间:2019-12-30
  • 实例类别:嵌入式开发
  • 发 布 人:1134332542
  • 文件格式:.rar
  • 所需积分:10
 相关标签: PW 输出 声音

实例介绍

【实例简介】

【实例截图】

from clipboard


【核心代码】

//Project: laba.prj
// Device: MS83Fxx02
// Memory: Flash 2KX14b, EEPROM 256X8b, SRAM 128X8b
// Author: 
//Company: 
//Version:
//   Date: 
//===========================================================
#INCLUDE  <MS81Fxx02.INC>;
#INCLUDE  "SYSlib.INC"
;===========================================================
;RAM DEFINE
	W_TMP		EQU		0x70
	S_TMP		EQU		0x71
;===========================================================
	ORG			0x000			; 单片机复位向量入口
	LJUMP		MAIN			; 跳转到主程序入口
	ORG			0x004			; 中断复位向量入口
	STR			W_TMP			; 保存W寄存器
	SWAPR		STATUS,W		; 保存STATUS寄存器
	STR			S_TMP
	LJUMP		INT_PROGRAM
;-----------------------------------------------------------
MAIN:
	;主程序
    Lcall   Initialize
	BCR 	INTCON,T0IE
MainLoop: 
    lcall Start_pwm1
    LJUMP MainLoop
	
;-----------------------------------------------------------
Start_pwm1:
    ldwi    489/0x100%0x100 1
    str     PWM_loop_count_H
    ldwi    489%0x100
    str     PWM_loop_count_L
    BSR     PORTA,PA7
    BCR     PORTA,PA2
    ldwi    520/0x100%0x100
    str     us_LH_32bit
    ldwi    520%0x100
    str     us_LL_32bit
    lcall   Delay_us ;延时520us
    BcR     PORTA,PA7
    BsR     PORTA,PA2
    ldwi    297/0x100%0x100
    str     us_LH_32bit
    ldwi    297%0x100
    str     us_LL_32bit
    lcall   Delay_us ;延时520us
    
    decrsz  PWM_loop_count_L,R 
    ljump   Start_pwm1 4
    decrsz  PWM_loop_count_H,R
    ljump   Start_pwm1 4
    
    BCR     PORTA,PA7
    BCR     PORTA,PA2
    
    ldwi    386000/0x10000%0x100
    str     us_HL_32bit
    ldwi    386000/0x100%0x100
    str     us_LH_32bit
    ldwi    386000%0x100
    str     us_LL_32bit
    lcall   Delay_us ;延时520us

	ret
;-----------------------------------------------------------

Initialize:
    
    LDWI 	OSCCON_16MHz 
    BSR 	STATUS,PAGE	
    STR     OSCCON//因为配置位选为2T的指令周期,所以一条指令运行时间=(1/16MHz)*2=0.125us
    
	CLRR 	INTCON //INTCON = 0b00000000;//中断初始化
    
    LDWI 	b'00000001' 	//PSA=0;PS0=1;		
	STR 	OPTION 	//PSA=0预分频给定时器0,预分频1:4
    	
    CLRR 	TMR0 //TMR0 = 0;	
    
	BCR     TRISA,PA7 //PA0为输出模式
	BCR     TRISA,PA2 //PA1为输出模式

    BCR 	STATUS,PAGE
    ldwi    20H ;清20H-6FH缓存
    str     BUF7EH
    ldwi    70H
    str     BUF7FH
    lcall   clearbuf  
    ;BSR 	INTCON,T0IE //T0IE = 1;//开启定时器0中断
    BSR 	INTCON,GIE // GIE = 1;//开启总中断 
    ldwi    b'00000111'
    str     CMCON0
	BCR     PORTA,PA7
    BCR     PORTA,PA2

    RET 
;-----------------------------------------------------------
clearbuf://清缓存
	LDR     BUF7EH,W    
    STR     FSR//BUF7EH内容->FSR,也就是要清除的首地址
    CLRR 	INDF//清FSR地址的内容
    INCR	FSR,R//FSR 1->FSR
    LDR     BUF7FH,W//从BUF7EH内容到BUF7FH内容
    XORWR   FSR,W//FSR是否等于7FH
    BTSS    STATUS,Z//if(FSR! =BUF7FH内容)
    LJUMP   clearbuf 2
    RET
;-----------------------------------------------------------             
Delay_us:
	;延时函数  每次循环执行8个机器周期=8*0.125us=1us
    incr   us_HH_32bit,R
    incr   us_HL_32bit,R
    incr   us_LH_32bit,R
    nop
    nop
    nop
    nop
    nop
    decrsz  us_LL_32bit,R ;1个周期 先减1,再判断是否大于0
    LJUMP   $-6 ;2个周期 if(DelayusL>0)
    decrsz  us_LH_32bit,R
    LJUMP   $-8
    decrsz  us_HL_32bit,R
    LJUMP   $-10
	decrsz  us_HH_32bit,R
    LJUMP   $-12
	ret
;-----------------------------------------------------------
INT_PROGRAM:
	;中断处理程序
;----------------------中断复位-----------------------------
  interrupt_end:  
	SWAPR		S_TMP,0
	STR			STATUS			; 恢复STATUS寄存器
	SWAPR		W_TMP,1
	SWAPR		W_TMP,0			; 恢复W寄存器
	RETI						; 中断返回
;-----------------------------------------------------------
	END							; 汇编程序结束

标签: PW 输出 声音

实例下载地址

单片机pwm输出传统防盗器声音

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警