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

📄 afsk.c

📁 一个通过串口与51通信的AVR的程序,还有一些其实功能
💻 C
字号:
#include <header.h>
#include <afsk.h>
#include <max038.h>

volatile unsigned short int ask_dat;
volatile unsigned short int fsk_dat;
volatile unsigned short int ask_mask;
volatile unsigned short int fsk_mask;
volatile unsigned char ask_sending=0;
volatile unsigned char fsk_sending=0;

void afsk_ctrl(unsigned char ctrl)
{
TCCR1A=0x00;
TCCR1B=(1<<WGM12);
if(ctrl)
	{
	TIMSK=1<<OCIE1A;
	MAX038_com(MAX038_SIN);
	}
else
	TIMSK=0;
}

void ask_com(unsigned short int speed,unsigned short int dat,unsigned short int in)
{
unsigned long int fre_clk=11059200;
unsigned short int div[5]={1,8,64,256,1024};
unsigned char i;
ask_dat=dat;
ask_mask=in;
for(i=0;i<5;i++)
	{
	if(fre_clk/div[i]>0xFFFF)continue;
	OCR1A=fre_clk/div[i];
	TCCR1B=(TCCR1B&0xf8)|((i+1)&0x07);
	ask_sending=1;
	}
}

void fsk_com(unsigned short int speed,unsigned short int dat,unsigned short int in)
{
unsigned long int fre_clk=11059200;
unsigned short int div[5]={1,8,64,256,1024};
unsigned char i;
fsk_dat=dat;
fsk_mask=in;
for(i=0;i<5;i++)
	{
	if(fre_clk/div[i]>0xFFFF)continue;
	OCR1A=fre_clk/div[i];
	TCCR1B=(TCCR1B&0xf8)|((i+1)&0x07);
	fsk_sending=1;
	PORTD=PORTD|0x20;
	}

}

SIGNAL(SIG_OUTPUT_COMPARE1A)
{
if(ask_sending)
	{
	if(ask_mask)
		PORTD=((PORTD&0xef)|((ask_dat&0x01)<<4));
	else
		{
		ask_sending=0;
		if(!fsk_sending)
			TCCR1B=(TCCR1B&0xf8);
		}
	ask_dat>>=1;
	ask_mask>>=1;
	}
else if(fsk_sending)
	{
	if(fsk_mask)
		{
		if(fsk_dat&0x01)
			MAX038_com(MAX038_1000);
		else
			MAX038_com(MAX038_100);
		}
	else
		{
		fsk_sending=1;
		if(!ask_sending)
			TCCR1B=(TCCR1B&0xf8);
		}
	fsk_dat>>=1;
	fsk_mask>>=1;
	}
}

⌨️ 快捷键说明

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