📄 usb_hid_ad.c
字号:
#include <interrupt.h>#include "usb_hid_ad.h"
void main()
{
PRIE = 0;
INTF = 0;
INTE = 0;
byTemp =0; byAdData = 0; IOCA=0x00; AdInitial(); UsbInitial();
M_ENI; do { M_NOP; M_NOP; } while(M_ISBC(UsbState,ConfigOk)); AddUsbEp1Sub(); AdStart(); }
void DelayMs(unsigned char nMs){ while(nMs) { DelayNs(250); DelayNs(250); DelayNs(250); DelayNs(250); nMs--; }}void DelayNs(unsigned char nMs){ while(nMs) { NOP1; nMs--; }}
/****************************************************//Adinitial:// Initial the AD setting.*****************************************************/void AdInitial(){ IOCA =0; IOCB =0; IOCC =0; PORTB =0; PORTC =0; IOCD =0xFF; IOCE =0xFF; PORTD=0xFF; PORTE=0xFF; ADDATAH = 0; ADDATAL = 0; nPrd1=0; nDt1 =0; PWMCR =0; M_BC(PwmState,SETOK); M_BC(PwmState,StopPwm); return; }void AdStart(){ ADCCR = 0x4F; ADCAIS = 0x3B; M_BS4(PRIE); M_BS7(ADCCR); while(1) { PWMCR =0; if(M_ISBS(AdState,SETOK)) { M_BC(AdState,SETOK); M_BS(EP1CSR,RXTXEN); GetPwmData(); } else { M_BS4(PRIE); M_BS7(ADCCR); M_NOP; } DelayMs(5); }}void GetPwmData() using 1{ M_BS(EP2CSR,RXTXEN); M_NOP; if(M_ISBS(PwmState,SETOK)) { byPwmData &= 0x1f; M_BC(PwmState,SETOK); switch (byPwmData) { case 0: PRD1H = 0x2c; PRD1L = 0xc2; DT1H = 0x16; DT1L = 0x61; break; case 1: PRD1H = 0x27; PRD1L = 0xf4; DT1H = 0x14; DT1L = 0x61; break; case 2: PRD1H = 0x23; PRD1L = 0x09; DT1H = 0x11; DT1L = 0xcf; break; case 3: PRD1H = 0x21; PRD1L = 0xa0; DT1H = 0x10; DT1L = 0xdf; break; case 4: PRD1H = 0x1d; PRD1L = 0xe0; DT1H = 0x0e; DT1L = 0xff; break; case 5: PRD1H = 0x1a; PRD1L = 0x98; DT1H = 0x0d; DT1L = 0x5b; break; case 6: PRD1H = 0x17; PRD1L = 0x6e; DT1H = 0x0b; DT1L = 0xb7; break; case 7: PRD1H = 0x16; PRD1L = 0x60; DT1H = 0x0b; DT1L = 0x3f; break; case 8: PRD1H = 0x13; PRD1L = 0x90; DT1H = 0x09; DT1L = 0xf5; break; case 9: PRD1H = 0x11; PRD1L = 0xce; DT1H = 0x08; DT1L = 0xe7; break; case 10: PRD1H = 0x10; PRD1L = 0xc0; DT1H = 0x08; DT1L = 0x60; break; case 11: PRD1H = 0x0e; PRD1L = 0xe0; DT1H = 0x07; DT1L = 0x70; break; case 12: PRD1H = 0x0d; PRD1L = 0x3c; DT1H = 0x06; DT1L = 0x9e; break; case 13: PRD1H = 0x0b; PRD1L = 0xd4; DT1H = 0x05; DT1L = 0xea; break; case 14: PRD1H = 0x0b; PRD1L = 0x32; DT1H = 0x05; DT1L = 0x99; break; case 15: PRD1H = 0x09; PRD1L = 0xfa; DT1H = 0x04; DT1L = 0xfd; break; case 16: DT1H = 0; DT1L = 0; PRD1H = 0; PRD1L = 0; } PWMCR = 0x08; M_BS3(PRIE); } /* if(M_ISBS(PwmState,SETOK)) { M_BC(PwmState,SETOK); byPwmData &=15; switch (byPwmData) { case 0: PRD1H = 0x2c; PRD1L = 0xc2; DT1H = 0x16; DT1L = 0x61; break; case 1: PRD1H = 0x27; PRD1L = 0xf4; DT1H = 0x14; DT1L = 0x61; break; case 2: PRD1H = 0x23; PRD1L = 0x09; DT1H = 0x11; DT1L = 0xcf; break; case 3: PRD1H = 0x21; PRD1L = 0xa0; DT1H = 0x10; DT1L = 0xdf; break; case 4: PRD1H = 0x1d; PRD1L = 0xe0; DT1H = 0x0e; DT1L = 0xff; break; case 5: PRD1H = 0x1a; PRD1L = 0x98; DT1H = 0x0d; DT1L = 0x5b; break; case 6: PRD1H = 0x17; PRD1L = 0x6e; DT1H = 0x0b; DT1L = 0xb7; break; case 7: PRD1H = 0x16; PRD1L = 0x60; DT1H = 0x0b; DT1L = 0x3f; break; case 8: PRD1H = 0x13; PRD1L = 0x90; DT1H = 0x09; DT1L = 0xf5; break; case 9: PRD1H = 0x11; PRD1L = 0xce; DT1H = 0x08; DT1L = 0xe7; break; case 10: PRD1H = 0x10; PRD1L = 0xc0; DT1H = 0x08; DT1L = 0x60; break; case 11: PRD1H = 0x0e; PRD1L = 0xe0; DT1H = 0x07; DT1L = 0x70; break; case 12: PRD1H = 0x0d; PRD1L = 0x3c; DT1H = 0x06; DT1L = 0x9e; break; case 13: PRD1H = 0x0b; PRD1L = 0xd4; DT1H = 0x05; DT1L = 0xea; break; case 14: PRD1H = 0x0b; PRD1L = 0x32; DT1H = 0x05; DT1L = 0x99; break; case 15: PRD1H = 0x09; PRD1L = 0xfa; DT1H = 0x04; DT1L = 0xfd; break; } PWMCR = 0x08; M_BS3(PRIE); for(szCount =0;szCount<byDelayData;szCount++) { DelayMs(30) ; } M_BC3(PRIE); PWMCR =0; } */}void Int_Adcie() interrupt INT_ADCIE using 1{ M_BC7(INTF); byAdDataH = ADDATAH; byAdDataL = ADDATAL; //nAddata++; M_BS(AdState,SETOK); NOP1; NOP1;}void Int_Pwm1ie() interrupt INT_PWM1IE using 1{ M_BC5(INTF); NOP1; NOP1;}// replace macro _ADD_USB_SET_REPORT_SUB
void AddUsbSetReportSub() using USBBANK
{
}
void AddUsbInitialWorkSub() using USBBANK
{
}
void AddUsbRt0x01Request() using USBBANK
{
}
void AddUsbRt0x02Request() using USBBANK
{
}
//. call macro _ADD_USB_RT0X00_Request
void AddUsbRt0x00Request() using USBBANK
{
}
// macro _ADD_USB_RT0X80_Request
void AddUsbRt0x80Request() using USBBANK
{
}
// macro _ADD_USB_RT0X82_Request
void AddUsbRt0x82Request() using USBBANK
{
}
// macro _ADD_USB_RT0X20_Request
void AddUsbRt0x20Request() using USBBANK
{
}
// macro _ADD_USB_RT0X21_Request
void AddUsbRt0x21Request() using USBBANK
{
}
// macro _ADD_USB_RT0X23_Request
void AddUsbRt0x23Request() using USBBANK
{
}
// macro _ADD_USB_RT0XA0_Request
void AddUsbRt0xA0Request() using USBBANK
{
}
// macro _ADD_USB_RT0XA1_Request
void AddUsbRt0xA1Request() using USBBANK
{
}
// macro _ADD_USB_RT0XA3_Request
void AddUsbRt0xA3Request() using USBBANK
{
}
// macro _ADD_USB_GET_REPORT_SUB
void AddUsbGetReportSub() using USBBANK
{
}
// macro _ADD_USB_bmRequestType
void AddUsbBmRequestType() using USBBANK
{
}
//. macro _ADD_USB_GET_REPORT_EXP_SUB
void AddUsbGetReportExpSub() using USBBANK
{
}
//. macro _ADD_USB_EP1_SUB
void AddUsbEp1Sub() using USBBANK
{
// 1 bytes sent// byte1: Ad data hi byte EP1CTR=1; EP1DAR = byAdDataH;// EP1DAR = byAdDataL; // byAdData++; M_BC(EP1CSR,SESTALL); M_NOP; M_BS(EP1CSR,RXTXEN); M_NOP;}
//. macro _ADD_USB_EP2_SUB
void AddUsbEp2Sub() using USBBANK
{// 1 bytes recive
// byte1: pwm data byte
byCount = EP2CTR; byPwmData = EP2DAR; byCount--;// byDelayData = EP2DAR;// byCount--; M_BS(PwmState,SETOK); M_BC(EP2CSR,SESTALL); M_NOP; M_BS(EP2CSR,RXTXEN); M_NOP;
}
//. macro _ADD_USB_EP3_SUB
void AddUsbEp3Sub() using USBBANK
{
}
//. macro _ADD_USB_BUS_RESET_SUB
void AddUsbBusResetSub() using USBBANK
{
}
//. macro _ADD_USB_IDLE_INT_SUB
void AddUsbIdleIntSub() using USBBANK
{
}
//. macro _ADD_USB_WAKEUP_INT_SUB
void AddUsbWakeup() using USBBANK
{
}
//. macro _ADD_USB_SOF_INT_SUB
void AddUsbSof() using USBBANK
{
}
//. macro _ADD_USB_DEVICE_CONFIG_OK
void AddUsbDeviceConfigOk() using USBBANK
{
M_BS(UsbState,ConfigOk);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -