您的位置 首页 数字

avr定时器做的正弦波

实物照片如下RC电路的电阻为1K与10K时的波形分别如下仿真图片如下:程序如下:#includeiom16v.h>#includemacros.h>#defineucharu…

什物相片如下


RC电路的电阻为1K与10K时的波形别离如下

仿真图片如下:

程序如下:

#include
#include
#define uchar unsigned char
uchar auc_SinParam[128] = {
128,134,140,147,153,159,165,171,177,182,188,193,198,204,208,213,
218,222,226,230,233,237,240,242,245,247,249,251,252,253,254,254,
254,254,253,252,251,250,248,246,244,241,238,235,232,228,224,220,
215,211,206,201,196,191,185,179,174,168,162,156,150,144,137,131,
125,119,112,106,100,94,88,82,77,71,65,60,55,50,45,41,
36,32,28,24,21,18,15,12,10,8,6,5,4,3,2,2,
2,2,3,4,5,7,9,11,14,16,19,23,26,30,34,38,
43,48,52,57,63,68,74,79,85,91,97,103,109,116,122,128}; // 128点正弦波样本值

uchar x_SW = 8,X_LUT = 0;

#pragma interrupt_handler timer0_ovf_isr:iv_TIM0_OVF
void timer0_ovf_isr(void)
{
X_LUT += x_SW; // 新样点指针
if (X_LUT > 127) X_LUT -= 128;// 样点指针调整
OCR0 = auc_SinParam[X_LUT];// 取样点指针到比较匹配寄存器
}

void main(void)
{
CLI(); //封闭一切中止
DDRB=0x08;// PB3输出方法,作为OC0输出PWM波
TCCR0=0x69;
OCR0=128;
TIMSK=0x01;// 答应T/C0溢出中止
SEI();// 敞开大局中止
while(1)
{};
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/shuzi/274882.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部