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

📄 demo_8_6.c~

📁 AVR单片机嵌入式系统原理与应用实践例码
💻 C~
字号:
/*********************************************
File name			: demo_8_6.c
Chip type           : ATmega16
Program type        : Application
Clock frequency     : 4.000000 MHz
Memory model        : Small
External SRAM size  : 0
Data Stack size     : 256
*********************************************/

#include <mega16.h>

flash char 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点正弦波样本值

char x_SW = 8,X_LUT = 0;

// T/C0 溢出中断服务
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
    X_LUT += x_SW;  				// 新样点指针
	if (X_LUT > 127) X_LUT -= 128;	// 样点指针调整
	OCR0 = auc_SinParam[X_LUT];		// 取样点指针到比较匹配寄存器
	//OCR0+=1;
}

void main(void)
{
	DDRB=0x08;					// PB3输出方式,作为OC0输出PWM波
	// Timer/Counter 0 initialization
	// Clock source: System Clock
	// Clock value: 4000.000 kHz
	// Mode: Fast PWM top=FFh
	// OC0 output: Non-Inverted PWM
	TCCR0=0x69;
	OCR0=128;

	TIMSK=0x01;					// 允许T/C0溢出中断
	#asm("sei")					// 开放全局中断

	while (1)
    {};
}

⌨️ 快捷键说明

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