📄 pic18f2550usb.c.txt
字号:
out_data[0] = usbConfirmAction;
out_data[1] = usbReadADC;
out_data[2] = tempADC;
out_data[3] = in_data[1];
}
break;
case usbReadADCnTimes: {
if (make16(in_data[1],in_data[2]) <= theSampleSize) {
if (in_data[3] != 255 & in_data[3] != currentADCpin) {
currentADCpin = in_data[3];
set_adc_channel(currentADCpin);
delay_ms(1);
}
set_timer3(0);
for (n=0;n<make16(in_data[1],in_data[2]);n++)
{
adcData[n] = READ_ADC();
}
period = get_timer3(); // 1000/((clock/4)/8) for ms
out_data[0] = usbConfirmAction;
out_data[1] = usbReadADCnTimes;
out_data[2] = in_data[1];
out_data[3] = in_data[2];
out_data[4] = in_data[3];
}
else {
out_data[0] = usbError;
out_data[1] = usbReadADCnTimes;
out_data[2] = in_data[1];
out_data[3] = in_data[2];
out_data[4] = in_data[3];
}
}
break;
case usbReadADCPeriod: {
out_data[0] = usbConfirmAction;
out_data[1] = usbReadADCPeriod;
out_data[2] = make8(period,1);
out_data[3] = make8(period,0);
}
break;
case usbReadADCnTimesUS: {
if (make16(in_data[1],in_data[2]) <= theSampleSize) {
if (in_data[5] != 255 & in_data[5] != currentADCpin) {
currentADCpin = in_data[5];
set_adc_channel(currentADCpin);
delay_ms(1);
}
approxUS = make16(in_data[3],in_data[4]);
for (n=0;n<make16(in_data[1],in_data[2]);n++)
{
set_timer3(0);
adcData[n] = READ_ADC();
while (get_timer3() * 2/3 < approxUS); // 1000000/((clock/4)/8)
}
out_data[0] = usbConfirmAction;
out_data[1] = usbReadADCnTimesUS;
out_data[2] = in_data[1];
out_data[3] = in_data[2];
out_data[4] = in_data[3];
out_data[5] = in_data[4];
out_data[6] = in_data[5];
}
else {
out_data[0] = usbError;
out_data[1] = usbReadADCnTimesUS;
out_data[2] = in_data[1];
out_data[3] = in_data[2];
out_data[4] = in_data[3];
out_data[5] = in_data[4];
out_data[6] = in_data[5];
}
}
break;
case usbReadADCnTimesMS: {
if (make16(in_data[1],in_data[2]) <= theSampleSize) {
if (in_data[5] != 255 & in_data[5] != currentADCpin) {
currentADCpin = in_data[5];
set_adc_channel(currentADCpin);
delay_ms(1);
}
approxMS = make16(in_data[3],in_data[4]);
for (n=0;n<make16(in_data[1],in_data[2]);n++)
{
set_timer3(0);
adcData[n] = READ_ADC();
while (get_timer3() * 1/1500 < approxMS); // 1000/((clock/4)/8)
}
out_data[0] = usbConfirmAction;
out_data[1] = usbReadADCnTimesMS;
out_data[2] = in_data[1];
out_data[3] = in_data[2];
out_data[4] = in_data[3];
out_data[5] = in_data[4];
out_data[6] = in_data[5];
}
else {
out_data[0] = usbError;
out_data[1] = usbReadADCnTimesMS;
out_data[2] = in_data[1];
out_data[3] = in_data[2];
out_data[4] = in_data[3];
out_data[5] = in_data[4];
out_data[6] = in_data[5];
}
}
break;
case usbClearRam: {
for (n=0;n<512;n++)
{
adcData[n] = 0;
}
out_data[0] = usbConfirmAction;
out_data[1] = usbClearRam;
}
break;
case usbSetRamByte: {
for (n=0;n<512;n++)
{
adcData[n] = in_data[1];
}
out_data[0] = usbConfirmAction;
out_data[1] = usbSetRamByte;
out_data[2] = in_data[1];
}
break;
case usbSetUseCRC: {
useCRC = true;
out_data[0] = usbConfirmAction;
out_data[1] = usbSetUseCRC;
}
break;
case usbClearUseCRC: {
useCRC = false;
out_data[0] = usbConfirmAction;
out_data[1] = usbClearUseCRC;
}
break;
case usbReadPort: {
out_data[0] = usbConfirmAction;
out_data[1] = usbReadPort;
out_data[2] = input_b();
}
break;
case usbWritePort: {
output_b(in_data[1]);
out_data[0] = usbConfirmAction;
out_data[1] = usbWritePort;
out_data[2] = in_data[1];
}
break;
case usbReadPin: {
out_data[0] = usbConfirmAction;
out_data[1] = usbReadPin;
out_data[2] = in_data[1];
switch (in_data[1]) {
case 0: out_data[3] = input(PIN_B0); break;
case 1: out_data[3] = input(PIN_B1); break;
case 2: out_data[3] = input(PIN_B2); break;
case 3: out_data[3] = input(PIN_B3); break;
case 4: out_data[3] = input(PIN_B4); break;
case 5: out_data[3] = input(PIN_B5); break;
case 6: out_data[3] = input(PIN_B6); break;
case 7: out_data[3] = input(PIN_B7); break;
}
}
break;
case usbWritePin: {
switch (in_data[1]) {
case 0: output_bit(PIN_B0, in_data[2] & 1); break;
case 1: output_bit(PIN_B1, in_data[2] & 1); break;
case 2: output_bit(PIN_B2, in_data[2] & 1); break;
case 3: output_bit(PIN_B3, in_data[2] & 1); break;
case 4: output_bit(PIN_B4, in_data[2] & 1); break;
case 5: output_bit(PIN_B5, in_data[2] & 1); break;
case 6: output_bit(PIN_B6, in_data[2] & 1); break;
case 7: output_bit(PIN_B7, in_data[2] & 1); break;
}
out_data[0] = usbConfirmAction;
out_data[1] = usbWritePin;
out_data[2] = in_data[1];
out_data[3] = in_data[2];
}
break;
}
if (useCRC) {
theCRC = 0;
theCRC = calc_crc(theCRC,out_data[0]);
theCRC = calc_crc(theCRC,out_data[1]);
theCRC = calc_crc(theCRC,out_data[2]);
theCRC = calc_crc(theCRC,out_data[3]);
theCRC = calc_crc(theCRC,out_data[4]);
theCRC = calc_crc(theCRC,out_data[5]);
theCRC = calc_crc(theCRC,out_data[6]);
out_data[7] = theCRC;
}
usb_put_packet(1, out_data, 8, USB_DTS_TOGGLE);
}
delay_ms(1);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -