?? demo_8_6.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 unsigned 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點正弦波樣本值
unsigned 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 + -