博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PIC16F877A的50HZ正弦波
阅读量:6160 次
发布时间:2019-06-21

本文共 1334 字,大约阅读时间需要 4 分钟。

View Code
1 #include 
//包含单片机内部资源预定义 2 #include
3 4 unsigned char const sin_32[]={
104,109,114,119,124,128,133,137,142,146,150,154,157,161,164,//15 5 167,169,172,174,176,177,178,179,180,180,180,180,179,178,176,175,173,171,168,165,//20 6 162,159,156,152,148,144,140,135,131,126,121,116,111,106,101,96,91,86,81,76,72,67,63,//23 7 58,54,50,46,43,39,36,33,31,28,26,24,23,22,21,20,20,20,20,21,22,24,25,27,29,32,35,38,//42 8 41,44,48,52,56,60,65,69,74,79,84,89,94,99 9 };//浮点型精度高,换其他会出现尖角10 11 void work0();12 unsigned char set_pwm;13 void main(void)14 { 15 work0();16 while(1)17 {18 }19 }20 21 void work0()//m=0.8;T=(PR2+1)*4*f*TIMR2分频22 {23 //CCPR1L=0X00;//设置CCP1,0%的脉宽输出24 TRISC=0X00;//PORTC are outputs25 CCP1CON=0x0C;//0000 1100,设置CCP1为PWM工作方式,且工作循环位的低两位为0026 PR2=199;//设置PWM周期:(PR2+1)*4*Tosc*(TMR2预分频数1)=200u(5k)27 T2CON=0x04;//Tc赋值=T*D=(PR2+1)*D=200*D28 CCP1IE=1;29 INTCON=0xC0;//GIE=1,开总中断,开启第一外设中断外围功能模块中断30 TMR2IE=1;TMR2IF=0;31 }32 33 //interrupt//34 void interrupt pic(void)35 {36 if(TMR2IF&TMR2IE)37 { 38 set_pwm++;39 TMR2IF=0;CCP1IF=0;40 CCPR1L=sin_32[set_pwm];41 if(set_pwm==99) set_pwm=0;42 }43 }

 

转载于:https://www.cnblogs.com/wangh0802PositiveANDupward/archive/2012/08/11/2633416.html

你可能感兴趣的文章
Android开发之自定义对话框
查看>>
微信Access Token 缓存方法
查看>>
Eclipsed的SVN插件不能识别之前工作空间的项目
查看>>
Linux 查看iptables状态-重启
查看>>
amazeui学习笔记一(开始使用2)--布局示例layouts
查看>>
c#中lock的使用(用于预约超出限额的流程)
查看>>
ODI基于源表时间戳字段获取增量数据
查看>>
并发容器之CopyOnWriteArrayList(转载)
查看>>
什么是AAC音频格式 AAC-LC 和 AAC-HE的区别是什么
查看>>
原创:goldengate从11.2升级到12.1.2
查看>>
Quartz
查看>>
正则表达式的语法规则
查看>>
C#一个关于委托和事件通俗易懂的例子
查看>>
类似于SVN的文档内容差异对比工具winmerge
查看>>
Cause: java.sql.SQLException: The user specified as a definer ('root'@'%') does not exist
查看>>
quratz线程
查看>>
execnet: rapid multi-Python deployment
查看>>
windows修改3389端口
查看>>
关于JavaScript词法
查看>>
FreeSwitch中的会议功能(4)
查看>>