⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usb_hid_ad.c

📁 基于义统et44的AD与PWM控制程序,简单的输出输入动作控制程序,可用于自行设定任何控制.
💻 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 + -