для TDA6508 кусок...
- Код: Выделить всё • Развернуть
/////////////////////////
// for KS-H-146, KS-H-148
#define CONST__GAINoff 0B10001000
#define CONST__GAINon 0B10001001 // Weak Signal Booster ON
#define CONST__LoBAND 0B00000001
#define CONST__MiBAND 0B00000010
#define CONST__HiBAND 0B00001100
////////////////////
void KSH14xPLL(void)
{
uint32_t fPCH1;
uint8_t Band;
Band = CONST__LoBAND;
if(FrcvWork > 155000L) Band = CONST__MiBAND;
if(FrcvWork > 440000L) Band = CONST__HiBAND;
fPCH1 = (uint16_t)((FrcvWork + RCVPCH1)/50);
I2CStart();
I2COutByte(0b11000000); // Tuner Address
I2COutByte(HiBYTE(fPCH1));
I2COutByte(LoBYTE(fPCH1));
I2COutByte((TunerGain)? CONST__GAINon:CONST__GAINoff);
I2COutByte(Band);
I2CStop();
return;
и для Lm7001 кусочек...
- Код: Выделить всё • Развернуть
////////////////////
void Lm7001Set(void)
{
static uint8_t Mod4Lm7001[3] = {0xE6,0xE4,0xE2};
uint16_t fPCH2;
FrcvPCH2 = (RCVPCH1-RCVPCH2)-(FrcvWork-((FrcvWork/50)*50));
fPCH2 = FrcvPCH2/5;
cli ();
SetBit(LM7001_PortEN,LM7001_BitCEN);
Lm7001Out(LoBYTE(fPCH2));
Lm7001Out(HiBYTE(fPCH2));
flagBo = Mod4Lm7001[Modulation];
///////////////////////////////////////
//
// S R2 R1 R0 TB Bo3 Bo2 Bo1
//
// R0=0, R1=1, R2=1 --> 5kHz
// S=1 --> FMIN
//
// flagBo = 0xE0; // 5kHz, FMIN
//
// Bo1 --> 1 - Mute ON 0 - Mute OFF
// Bo2 --> 1 - WFM 0 - NFM
// Bo3 --> 1 - FM 0 - AM
if(FlagMute) { flagBo |= 0x01; }
Lm7001Out(flagBo);
ClrBit(LM7001_PortEN,LM7001_BitCEN);
ClrBit(LM7001_Port, LM7001_BitDat);
sei ();
return;
}
Можете помочь перевести куски кода в Bascom, и дать советы и сылочки по составлению запросов и принятия данных по I2C протоколу в Bascom, чтоб расжовано было а не просто пару кусков кода, и на нашенском Русском.
Заранее благодарен за любую помошь.
Добавлено спустя 1 час 11 минут 41 секунду:
Да кроме