nr.bozorgi
تازه وارد
ارسالها: 7
موضوعها: 1
تاریخ عضویت: مرداد ۱۳۹۲
تشکرها : 0
( 3 تشکر در 2 ارسال )
|
RE: مدولاتور
دوستان کدهای فرستنده و گیرنده رو اینجا میذارم:
کد: فرستنده:
#include <mega32.h>
#include <stdio.h>
#include <stdlib.h>
#include <delay.h>
#asm
.equ __lcd_port=0x15;
#endasm
#include <lcd.h>
#define RD PORTA.0
#define WR PORTA.1
#define INT PINA.2
flash char sine[256]={
0x80,0x83,0x86,0x89,0x8c,0x8f,0x92,0x95,0x98,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,
0xb0,0xb3,0xb6,0xb9,0xbc,0xbf,0xc1,0xc4,0xc7,0xc9,0xcc,0xce,0xd1,0xd3,0xd5,0xd8,
0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,0xea,0xec,0xed,0xef,0xf0,0xf2,0xf3,0xf5,
0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfc,0xfd,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfd,0xfc,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,
0xf6,0xf5,0xf3,0xf2,0xf0,0xef,0xed,0xec,0xea,0xe8,0xe6,0xe4,0xe2,0xe0,0xde,0xdc,
0xda,0xd8,0xd5,0xd3,0xd1,0xce,0xcc,0xc9,0xc7,0xc4,0xc1,0xbf,0xbc,0xb9,0xb6,0xb3,
0xb0,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x98,0x95,0x92,0x8f,0x8c,0x89,0x86,0x83,
0x80,0x7c,0x79,0x76,0x73,0x70,0x6d,0x6a,0x67,0x63,0x60,0x5d,0x5a,0x57,0x54,0x51,
0x4f,0x4c,0x49,0x46,0x43,0x40,0x3e,0x3b,0x38,0x36,0x33,0x31,0x2e,0x2c,0x2a,0x27,
0x25,0x23,0x21,0x1f,0x1d,0x1b,0x19,0x17,0x15,0x13,0x12,0x10,0x0f,0x0d,0x0c,0x0a,
0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x03,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x05,0x06,0x07,0x08,
0x09,0x0a,0x0c,0x0d,0x0f,0x10,0x12,0x13,0x15,0x17,0x19,0x1b,0x1d,0x1f,0x21,0x23,
0x25,0x27,0x2a,0x2c,0x2e,0x31,0x33,0x36,0x38,0x3b,0x3e,0x40,0x43,0x46,0x49,0x4c,
0x4f,0x51,0x54,0x57,0x5a,0x5d,0x60,0x63,0x67,0x6a,0x6d,0x70,0x73,0x76,0x79,0x7c
};
char s1[8];
unsigned char f=1;
char i=0;
float a;
int f1=1;
int f2=5;
int d= 100;
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
OCR1A=sine[i];
i=i+f;
if(i==255)
i=0;
}
void main(void)
{
DDRA=0x07;
DDRB=0x00;
DDRD=0xFF;
TCCR1A=0x81;
TCCR1B=0x09;
TIMSK=0x10;
WR=1;
lcd_init(16);
while (1)
{
WR=0;
delay_us(2);
WR=1;
RD=0;
delay_ms(20);
a=PINB;
PINA.2=0;
if (PINA.2==1)
{
#asm("sei");
if(PINB.0==1) //0
{
f=f1;
}
else if(PINB.0==0)
{
f=f2;
}
delay_ms(d);
if(PINB.1==1) //1
{
f=f1;
}
else if(PINB.1==0)
{
f=f2;
}
delay_ms(d);
if(PINB.2==1) //2
{
f=f1;
}
else if(PINB.2==0)
{
f=f2;
}
delay_ms(d);
if(PINB.3==1) //3
{
f=f1;
}
else if(PINB.3==0)
{
f=f2;
}
delay_ms(d);
if(PINB.4==1) //4
{
f=f1;
}
else if(PINB.4==0)
{
f=f2;
}
delay_ms(d);
if(PINB.5==1) //5
{
f=f1;
}
else if(PINB.5==0)
{
f=f2;
}
delay_ms(d);
if(PINB.6==1) //6
{
f=f1;
}
else if(PINB.6==0)
{
f=f2;
}
delay_ms(d);
if(PINB.7==1) //7
{
f=f1;
}
else if(PINB.7==0)
{
f=f2;
}
delay_ms(d);
#asm("cli");
};
a=(a*0.0200784);
RD=1;
lcd_clear();
ftoa(a,2,s1);
lcd_puts(s1);
}
}
کد: گیرنده:
#include <mega32.h>
#include <delay.h>
#include <stdio.h>
#include <stdlib.h>
#include <lcd.h>
#asm
.equ __lcd_port=0x15;
#endasm
unsigned long int timer0_ov;
unsigned long int in_freq;
unsigned char lcd_buff[20];
int a=77;
int d1=50;
int d2=116;
char s1[8];
float b;
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
timer0_ov ++;
}
void main(void)
{
DDRA=0x00;
DDRD=0xFF;
TCNT0=0x00;
OCR0=0x00;
TCCR0=0x00;
TIMSK=0x01;
lcd_init(16);
while (1)
{
if (PINA.3==1)
{
PORTD=0;
lcd_clear();
{
TCCR0=0x06; // Start Timer T0 pin Falling Edge //0
#asm("sei") // Global enable interrupts
delay_ms(d2+4);
#asm("cli"); // Global disable interrupts
in_freq = timer0_ov * 256 + TCNT0;
sprintf(lcd_buff,"%d",in_freq);
lcd_puts(lcd_buff);
if (in_freq>a)
{
PORTD.0=1;
}
else if (in_freq<a)
{
PORTD.0=0;
}
TCCR0=0x00; //Stopt Timer0
timer0_ov=0; //Prepare for next count
TCNT0=0; //Clear Timer0
};
{
TCCR0=0x06; // Start Timer T0 pin Falling Edge //1
#asm("sei") // Global enable interrupts
delay_ms(d2);
#asm("cli"); // Global disable interrupts
in_freq = timer0_ov * 256 + TCNT0;
sprintf(lcd_buff," %d",in_freq);
lcd_puts(lcd_buff);
if (in_freq>a)
{
PORTD.1=1;
}
else if (in_freq<a)
{
PORTD.1=0;
}
TCCR0=0x00; //Stopt Timer0
timer0_ov=0; //Prepare for next count
TCNT0=0; //Clear Timer0
};
{
TCCR0=0x06; // Start Timer T0 pin Falling Edge //2
#asm("sei") // Global enable interrupts
delay_ms(d2);
#asm("cli"); // Global disable interrupts
in_freq = timer0_ov * 256 + TCNT0;
sprintf(lcd_buff," %d",in_freq);
lcd_puts(lcd_buff);
if (in_freq>a)
{
PORTD.2=1;
}
else if (in_freq<a)
{
PORTD.2=0;
}
TCCR0=0x00; //Stopt Timer0
timer0_ov=0; //Prepare for next count
TCNT0=0; //Clear Timer0
};
{
TCCR0=0x06; // Start Timer T0 pin Falling Edge //3
#asm("sei") // Global enable interrupts
delay_ms(d2);
#asm("cli"); // Global disable interrupts
in_freq = timer0_ov * 256 + TCNT0;
sprintf(lcd_buff," %d",in_freq);
lcd_puts(lcd_buff);
if (in_freq>a)
{
PORTD.3=1;
}
else if (in_freq<a)
{
PORTD.3=0;
}
TCCR0=0x00; //Stopt Timer0
timer0_ov=0; //Prepare for next count
TCNT0=0; //Clear Timer0
};
{
TCCR0=0x06; // Start Timer T0 pin Falling Edge //4
#asm("sei") // Global enable interrupts
delay_ms(d2);
#asm("cli"); // Global disable interrupts
in_freq = timer0_ov * 256 + TCNT0;
sprintf(lcd_buff," %d",in_freq);
lcd_puts(lcd_buff);
if (in_freq>a)
{
PORTD.4=1;
}
else if (in_freq<a)
{
PORTD.4=0;
}
TCCR0=0x00; //Stopt Timer0
timer0_ov=0; //Prepare for next count
TCNT0=0; //Clear Timer0
};
{
TCCR0=0x06; // Start Timer T0 pin Falling Edge //5
#asm("sei") // Global enable interrupts
delay_ms(d2);
#asm("cli"); // Global disable interrupts
in_freq = timer0_ov * 256 + TCNT0;
sprintf(lcd_buff," %d",in_freq);
lcd_puts(lcd_buff);
if (in_freq>a)
{
PORTD.5=1;
}
else if (in_freq<a)
{
PORTD.5=0;
}
TCCR0=0x00; //Stopt Timer0
timer0_ov=0; //Prepare for next count
TCNT0=0; //Clear Timer0
};
{
TCCR0=0x06; // Start Timer T0 pin Falling Edge //6
#asm("sei") // Global enable interrupts
delay_ms(d2);
#asm("cli"); // Global disable interrupts
in_freq = timer0_ov * 256 + TCNT0;
sprintf(lcd_buff," %d",in_freq);
lcd_puts(lcd_buff);
if (in_freq>a)
{
PORTD.6=1;
}
else if (in_freq<a)
{
PORTD.6=0;
}
TCCR0=0x00; //Stopt Timer0
timer0_ov=0; //Prepare for next count
TCNT0=0; //Clear Timer0
};
{
TCCR0=0x06; // Start Timer T0 pin Falling Edge //7
#asm("sei") // Global enable interrupts
delay_ms(d2);
#asm("cli"); // Global disable interrupts
in_freq = timer0_ov * 256 + TCNT0;
sprintf(lcd_buff," %d",in_freq);
lcd_puts(lcd_buff);
if (in_freq>a)
{
PORTD.7=1;
}
else if (in_freq<a)
{
PORTD.7=0;
}
TCCR0=0x00; //Stopt Timer0
timer0_ov=0; //Prepare for next count
TCNT0=0; //Clear Timer0
};
delay_ms(d1);
lcd_clear();
delay_ms(d1);
lcd_putsf("==========");
delay_ms(d1);
lcd_clear();
delay_ms(d1);
lcd_putsf("==========");
delay_ms(d1);
lcd_clear();
delay_ms(d1);
lcd_putsf("==========");
delay_ms(d1*2);
b=PIND;
b=(b*0.0200784);
lcd_clear();
ftoa(b,2,s1);
lcd_puts(s1);
}
}
}
|
|