Помогите мне пожалуйста либо переделать код в CVAVR либо помочь с разьяснением...
Половины не пойму.. Я только начинающий программист и работаю пока только в одном компиляторе.
Код: Выделить всё
#include <iotiny2313.h>
#include <inavr.h>
#define bit(n) (1<<n)
#define Set(m,n) (m|=bit(n))
#define Clr(m,n) (m&=~bit(n))
#define b_CDATA 4 // PB4
#define b_CCLK 7 // PB7
#define b_LATCH 5 // PB5
#define SetCDATA Set(PORTB,b_CDATA)
#define ClrCDATA Clr(PORTB,b_CDATA)
#define SetLATCH Set(PORTB,b_LATCH)
#define ClrLATCH Clr(PORTB,b_LATCH)
#define SetCCLK Set(PORTB,b_CCLK)
#define ClrCCLK Clr(PORTB,b_CCLK)
#define CCLK {SetCCLK;ClrCCLK;}
#define b_Mute 0 // PA0
#define b_Reset 1 // PA1
#define SetMute Set(PORTA,b_Mute)
#define ClrMute Clr(PORTA,b_Mute)
#define SetReset Clr(PORTA,b_Reset)
#define ClrReset Set(PORTA,b_Reset)
#define Mask1 0x7f
#define Mask2 0x0f
unsigned int Old=0;
void SPI(unsigned int Data)
{ unsigned int mask=0x8000;
char i;
for (i=0;i<16;i++)
{
if (Data & mask) SetCDATA;
else ClrCDATA;
CCLK;
mask>>=1;
}
ClrCDATA;
}
void out(unsigned int Data)
{unsigned int t=0;
if (Data & bit(8)) Set(t,12); // Data Format PCM / External DF
if (Data & bit(9)) Set(t,10); // Output Format 0
if (Data & bit(10)) Set(t,11); // Output Format 1
if (Data & bit(11)) Set(t,8); // PCM Sample Rate 0
if (Data & bit(12)) Set(t,9); // PCM Sample Rate 1
if (Data & bit(13)) Set(t,4); // PCM/EF Serial Data Format 0
if (Data & bit(14)) Set(t,5); // PCM/EF Serial Data Format 1
if (Data & bit(2)) Set(t,2); // PCM/EF Serial Data Width 0
if (Data & bit(3)) Set(t,3); // PCM/EF Serial Data Width 1
ClrLATCH;
SPI(t);
SetLATCH;
t=1;
if (Data & bit(0)) Set(t,9); // MCLK Mode 0
if (Data & bit(1)) Set(t,10); // MCLK Mode 1
ClrLATCH;
SPI(t);
SetLATCH;
}
void main( void )
{ unsigned int t;
unsigned char x,y;
PORTD=0xff;
PORTB=0x7c;
PORTA=3;
DDRB=0xb0;
DDRD=0;
DDRA=3;
SetReset;
for(t=0;t<10000;t++);
ClrReset;
for(t=0;t<10000;t++);
// for(;;)
// {
SetMute;
x=PIND;
y=PINB;
t=((Mask1 & x)<<8) + (Mask2 & y);
out(t);
ClrMute;
// for(x=0;x<20;x++);
// }
MCUCR|=bit(SM0);
__sleep();
}