标题: ch370 ch372调试例程 [打印本页]

作者: cvhnh    时间: 2016-11-20 18:50
标题: ch370 ch372调试例程
CH370调试例程下载:
CH372调试例程.zip (23.1 KB, 下载次数: 26)


  1. #ifndef __CH372_H_
  2. #define __CH372_H_
  3. #ifndef uchar
  4. #define uchar unsigned char
  5. #endif

  6. #ifndef uint
  7. #define uint unsigned int
  8. #endif

  9. #define CMD_GET_STATUS         0x22
  10. #define CMD_RD_USB_DATA         0x28
  11. #define CMD_WR_USB_DATA         0x2B
  12. #define USB_INT_EP2_IN         0x0A
  13. #define CMD_UNLOCK_USB         0x23
  14. #define CMD_SET_USB_MODE 0x02
  15. #define USB_INT_EP2_OUT  0x02

  16. sbit CH372_INT=P3^2;
  17. sbit CH372_CS=P3^3;
  18. sbit CH372_RD=P3^4;
  19. sbit CH372_WR=P3^5;
  20. sbit CH372_A0=P3^6;

  21. void delay2us()
  22. {
  23. uchar i;
  24. for(i=0;i<2;i++)
  25. ;
  26. }
  27.         void delay50ms()
  28.                 {
  29.                 uchar  i,j;
  30.                 for(i=0;i<200;i++)
  31.                    for(j=0;j<250;j++)
  32.                    ;
  33.                 }
  34.                 void CH372_WRCMD(uchar cmd)
  35.                 {
  36.                 delay2us();
  37.                 P0=cmd;
  38.                 CH372_A0=1;
  39.                 CH372_RD=1;
  40.                 CH372_CS=0;
  41.                 CH372_WR=0;
  42.                 CH372_WR=1;
  43.                 CH372_CS=1;
  44.                 CH372_A0=0;
  45.                 P0=0XFF;
  46.                 delay2us();

  47.                 }
  48.                 void CH372_WRDAT(uchar dat)
  49.                 {
  50.                 P0=dat;
  51.                 CH372_A0=0;
  52.                 CH372_CS=0;
  53.                 CH372_WR=0;
  54.                 CH372_CS=0;
  55.                 CH372_WR=1;
  56.                 CH372_CS=1;
  57.                 P0=0XFF;
  58.                 }
  59.                 uchar CH372_REDAT()
  60.                 {
  61.                 uchar temp;
  62.                 P0=0XFF;
  63.                 CH372_A0=0;
  64.                 CH372_CS=0;
  65.                 CH372_RD=0;
  66.                 temp=P0;
  67.                 CH372_RD=1;
  68.                 CH372_CS=1;
  69.                 P0=0XFF;
  70.                 return temp;
  71.                 }

  72.                 void int0(void)interrupt 0 using 0
  73.                 {
  74.                 uchar i,temp,length;
  75.                 uchar data buf[64];
  76.                 CH372_WRCMD(CMD_GET_STATUS);        // CMD_GET_STATUS 发获取372的中断类型(状态)命令,并取消中断信号
  77.                 temp=CH372_REDAT();
  78.                 switch(temp)
  79.                 {
  80.                 case USB_INT_EP2_OUT:                          //如果是0x02,则是端点2的OUT事务
  81.                 CH372_WRCMD(CMD_RD_USB_DATA);         //CMD_RD_USB_DATA 发读取USB缓冲去数据命令,并释放缓冲区
  82.                 length=CH372_REDAT();
  83.                 for(i=0;i<length;i++)
  84.                 {
  85.                 buf[i]=CH372_REDAT();
  86.                 }
  87.                 CH372_WRCMD(CMD_WR_USB_DATA);                // CMD_WR_USB_DATA 发向端点2的发送缓冲区写数据命令  发发送取USB缓冲去数据命令,并释放缓冲区
  88.                 CH372_WRDAT(length);
  89.                 for(i=0;i<length;i++)
  90.                 CH372_WRDAT(~buf[i]);
  91.                 break;
  92.                 case USB_INT_EP2_IN:                                         //        USB_INT_EP2_IN         如果是0x0A,则是端点2的IN事务
  93.                 CH372_WRCMD(CMD_UNLOCK_USB);                          //CMD_UNLOCK_USB           发送释放缓冲区命令
  94.                 break;
  95.                 default:
  96.                 CH372_WRCMD(CMD_UNLOCK_USB);                 //CMD_UNLOCK_USB
  97.                 break;
  98.                     }
  99.                 }
  100. #endif
复制代码



作者: chjx0131    时间: 2017-7-27 15:21
有没有上位机呀




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1