完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
下面是C代码,但是始终调试不出,请高手帮忙检查问题,万分感谢.MCU是PIC16LF934
#include unsigned int music_data[][2]= { {587,800},{698,800},{466,1600},{523,800},{587,800},{349,1600}, {466,800},{523,800},{587,800},{698,800},{523,3200},{587,800}, {698,800},{466,1600},{523,800},{587,800},{392,1600},{523,800}, {349,800},{523,800},{587,800},{466,1600},{784,1600},{698,1600}, {784,1600},{466,1600},{587,800},{392,800},{587,1200},{698,400}, {523,3200},{587,800},{698,800},{466,1600},{523,800},{587,800}, {392,1600},{523,800},{349,800},{523,800},{587,800},{466,3200}, { 0, 0} }; /*CCP5的PWM初始化*/ void CCP5INIT() { OSCCON = 0x72; //内部4M晶震 CCPR5L=0x7F; CCP5CON=0X3C; INTCON=0X00; PR2=0x9F; TRISE=0X00; PORTE = 0x00; } /**************************************** * 1MS延时函数 ****************************************/ void delay_ms(unsigned int Xms) { unsigned int i; unsigned int j; for(i=0;i { ; } } void sound(unsigned int i) { unsigned int x; x=i; if(x!=0) { x=500000/x; PR2=x; } else { PR2 = 0x00; } } main() { unsigned char i; CCP5INIT(); T2CON=0X05; //启动TMR24分频 //启动PWM while(1) { while(music_data[i][1]) { sound(music_data[i][0]); delay_ms(music_data[i][1]); i++; delay_ms(5); } delay_ms(4000); i=0; } } |
|
相关推荐
4个回答
|
|
要输出PWM信号,需注意PWM信号的周期和工作循环周期Duty Cycle。有两个寄存器分别存储PWM的周期值Period和工作循环周期值,PR2和CCPRxL.
测量一下蜂鸣器的管脚是否有电平变化 |
|
|
|
看pic的手册PR2是一个8位的寄存器变量,是不是赋值过大导致不正常呢?
|
|
|
|
看pic的手册PR2是一个8位的寄存器变量,是不是赋值过大导致不正常呢?
|
|
|
|
不错的文件,值得收藏
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
811 浏览 0 评论
525 浏览 0 评论
嵌入式学习-搭建自己的ubuntu系统之ubuntu网络设置
646 浏览 0 评论
龙芯中科胡伟武:3B6600 八核桌面 CPU 性能将达到英特尔中高端酷睿 12~13 代水平
710 浏览 0 评论
树莓派Pico 2发布,搭载RP2350双核RISC-V和Arm Cortex-M33微控制器!
670 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
10719 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-17 19:47 , Processed in 0.485335 second(s), Total 47, Slave 41 queries .
Powered by 电子发烧友网
© 2015 www.ws-dc.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号