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

📄 p.c

📁 在atmega128中实现中断
💻 C
字号:
#include <io8515v.h>
#include <macros.h>
#define Xtal 8000000
#define prescaler 1
#define N_samples 128
#define Fck Xtal/prescaler
#define delaycyc 10
#pragma data:code
const unsigned char auc_SinParam[128]={
64,67,70,73,76,79,82,85,88,91,94,96,99,102,104,106,109,111,113,115,117,118,
120,121,123,124,125,126,126,127,127,127,127,127,127,127,126,126,125,124,
123,121,120,118,117,115,113,111,109,106,104,102,99,96,94,91,88,85,82,79,
76,73,70,67,64,60,57,54,51,48,45,42,39,36,33,31,28,25,23,21,18,16,14,12,10,9,
7,6,4,3,2,1,0,0,0,0,0,0,0,1,1,2,3,4,6,7,9,10,12,14,16,18,21,23,25,28,31,33,36,
39,42,45,48,51,54,57,60};
const unsigned char auc_frequencyH[4]={107,96,87,79};
const unsigned char auc_frequencyL[4]={61,56,50,46};
#pragma data:data
unsigned char x_SWa=0x00;
unsigned char x_SWb=0x00;
unsigned int X_LUTaExt=0;
unsigned int X_LUTbExt=0;
unsigned int X_LUTa;
unsigned int X_LUTb;
#pragma interrupt_handler ISR_T1_Overflow:7
void ISR_T1_Overflow (void)
{
 X_LUTaExt+=x_SWa;
 X_LUTbExt+=x_SWb;
 X_LUTa=(char)(((X_LUTaExt+4)>>3)&(0x007F));
 X_LUTb=(char)(((X_LUTbExt+4)>>3)&(0x007F));
 OCR1A=(auc_SinParam[X_LUTa]+(auc_SinParam[X_LUTb]-(auc_SinParam[X_LUTb]>>2)));
}
void init (void)
{
 MCUCR=0x00;
 TIMSK=0x80;
 TCCR1A=(1<<COM1A1)+(1<<PWM10);
 TCCR1B=(1<<CS10);
 DDRD=(1<<PD5);
 SEI();
}
void Delay (void)
{
 int i;
 for(i=0;i<delaycyc;i++)
 NOP();
}
void main (void)
{
 unsigned char uc_Input;
 unsigned char uc_Counter=0;
 init();
 for(;;)
 {
  DDRC=0x0F;
  PORTC=0xF0;
  uc_Counter=0;
  Delay();
  uc_Input=PINC;
  do
  {
   if(!(uc_Input&0x80))
   {
    x_SWb=auc_frequencyL[uc_Counter];
	uc_Counter=4;
   }
   else
   x_SWb=0;
   uc_Counter++;
   uc_Input=uc_Input<<1;
  }
  while (uc_Counter<4);
  DDRC=0xF0;
  PORTC=0x0F;
  uc_Counter=0;
  Delay();
  uc_Input=PINC;
  uc_Input=uc_Input<<4;
  do
  {
   if (!(uc_Input&0x80))
   {
    x_SWa=auc_frequencyH[uc_Counter];
	uc_Counter=4;
   }
   else
   x_SWa=0;
   uc_Counter++;
   uc_Input=uc_Input<<1;
  }
  while (uc_Counter<4);
 }
}
  
 

⌨️ 快捷键说明

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