

Я тогда вообще ничего не понимаю...
Код: Выделить всё
uchar usbFunctionWrite(uchar *data, uchar len)
{
uchar number_;
uchar on_off;
number_ = data[0];
on_off = data[1];
if (number_ == 1) {
if (on_off==1) PORTB = 0x80;
else PORTB = 0x00;
}
return 1; /* return 1 if this was the last chunk */
}

Ну ладно число какое то (типа 0хff), а это что такое (1<<BIT)|(1<<BIT) ? Сдвиг какой то...выполнить "поразрядное (побитное) логическое "ИЛИ" между прочитанным значением PORTx и числом

124 это 12 и четыре нуля. В пикофарадах всё. 120нФ.mr_smit писал(а):Конденсатор керамический. На нем написано 124. Я так и не понял как это расшифровать.
Нет, это 27 и ноль нулей после, т.е. 27пФ.mr_smit писал(а):На конденсаторе на 27 пФ написано 270. Тогда получается что этот на 12,4 пФ что ли?
Это я понял. Но что всё таки произойдет (теоретически) если перезаписать регистр PORTB = 0x80? Мне так проще понять. Этот СИшный синтаксис после Delphi просто жуть.Это сделано ... для того что бы записывать значения в регистр не целиком весь его перезаписывая а лишь побитно менять его значения.
Код: Выделить всё
uchar usbFunctionWrite(uchar *data, uchar len)
{
uchar on_off;
on_off = data[0];
if (on_off==1) {
PORTB |= (1<<PB0);
}
else if (on_off==0) {
PORTB &=~ (1<<PB0);
}
return 1; /* return 1 if this was the last chunk */
}
Код: Выделить всё
...
var
Form1: TForm1;
FeatureReportLen: integer = 0;
MyReport: array[0..8] of byte;
on_off:integer=0;
implementation
{$R *.dfm}
function TForm1.JvHidDeviceController1Enumerate(HidDev: TJvHidDevice;
const Idx: Integer): Boolean;
begin
Result := true;
FeatureReportLen := HidDev.Caps.FeatureReportByteLength;
fillchar(MyReport, 8, 0);
if on_off=0 then
begin
MyReport[1] := 1;
on_off:=1;
end
else begin
MyReport[1] := 0;
on_off:=0;
end;
Result := HidDev.SetFeature(MyReport, FeatureReportLen);
Result := false;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
JvHidDeviceController1.Enumerate;
end;
...

Код: Выделить всё
if (on_off==1) {
PORTB |= (1<<PB0);
}
else if (on_off==0) {
PORTB &=~ (1<<PB0);
} Код: Выделить всё
if (on_off==1) {
PORTB |= (1<<0);
}
else if (on_off==0) {
PORTB &=~ (1<<0);
} 
Код: Выделить всё
PORTB |= (1<<0)
а где же идентификация девайса???!function TForm1.JvHidDeviceController1Enumerate(HidDev: TJvHidDevice;
const Idx: Integer): Boolean;
begin
Result := true;
FeatureReportLen := HidDev.Caps.FeatureReportByteLength;
fillchar(MyReport, 8, 0);
if on_off=0 then
begin
MyReport[1] := 1;
on_off:=1;
end
else begin
MyReport[1] := 0;
on_off:=0;
end;
Result := HidDev.SetFeature(MyReport, FeatureReportLen);
Result := false;
end;