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

📄 d12impl.lst

📁 C8051F120与串口、并口、D12、USB、LCD应用
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.01  D12IMPL                                                                06/30/2007 11:42:51 PAGE 1   


C51 COMPILER V7.01, COMPILATION OF MODULE D12IMPL
OBJECT MODULE PLACED IN D12Impl.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE D12Impl.C LARGE BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*-----------------------------------------------------------------------
   2          
   3            Copyright (C) 2006 Beijing Jiaotong University, Computer Science
   4            
   5            Creator: xiaoqiang
   6                  
   7            File: D12Impl.C
   8                    
   9            Description:
  10                  send & receive PDIUSBD12 chip data & command
  11                          
  12            History:
  13              2006-7-24 xiaoqiang created
  14                            
  15          ------------------------------------------------------------------------*/
  16          #include <typedef.h>
  17          #include <c8051f120.h>
  18          #include <usb.h>
  19          #include <d12interface.h>
  20          
  21          u8      Ep1Buf[EP1_PACKET_SIZE];        //ep1 buff
  22          u8  xdata Ep2Buf[EP2_PACKET_SIZE*2];
  23          //u8  xdata Ep2Buf2[EP2_PACKET_SIZE];
  24          extern bool Ep2SendBufferFul;   //ep2 send buffer has data to send
  25          
  26          
  27          //send command & data 
  28          #define D12_COMMAND             1       //write command to d12
  29          #define D12_DATA                0       //write data to d12
  30          
  31          //command & data port
  32          #define D12_COMMAND_PORT        P6      //d12 command port link to p6
  33          #define D12_DATA_PORT           P6      //d12 data port link to p6
  34          
  35          
  36          
  37          /*      write cmd or data to d12 */
  38          void D12_WritePort(u8 bMode, u8 bCmd)
  39          {
  40   1      //      u8      delay= 0;
  41   1              u8 page = SFRPAGE;
  42   1              SFRPAGE = 0XF;
  43   1      
  44   1              D12_CS = D12_CS_ENABLE;
  45   1      
  46   1              //WRITE command mode
  47   1              D12_A0 = bMode;         
  48   1      
  49   1              //SET D12 TO WRITE MODE
  50   1              D12_WR = D12_WR_ENABLE;
  51   1              
  52   1              //PORT SET TO WRITE MODE, AND WRITE CMD
  53   1              P6MDOUT = 0xff;
  54   1              D12_COMMAND_PORT = bCmd;
  55   1      
C51 COMPILER V7.01  D12IMPL                                                                06/30/2007 11:42:51 PAGE 2   

  56   1              D12_WR = D12_WR_DISABLE;
  57   1              D12_CS = D12_CS_DISABLE;
  58   1      
  59   1              SFRPAGE = page;
  60   1      }
  61          
  62          /* get data from d12 */
  63          u8 D12_ReadPort()
  64          {
  65   1              u8 ret;
  66   1              u8 page = SFRPAGE;
  67   1              SFRPAGE = 0XF;
  68   1      
  69   1              D12_CS = D12_CS_ENABLE;
  70   1      
  71   1      
  72   1              //SET D12 TO WRITE MODE
  73   1              D12_RD = D12_RD_ENABLE;
  74   1      
  75   1              D12_A0 = D12_DATA;
  76   1      
  77   1              //PORT SET TO READ MODE, AND READ DATA
  78   1              P6MDOUT = 0x0;
  79   1              D12_DATA_PORT = 0xff;
  80   1              ret = D12_DATA_PORT;
  81   1      
  82   1      
  83   1              D12_RD = D12_RD_DISABLE;
  84   1              D12_CS = D12_CS_DISABLE;
  85   1      
  86   1              SFRPAGE = page;
  87   1              return ret;
  88   1      }
  89          
  90          /* init d12 work mode */
  91          void Init_D12()
  92          {
  93   1              u8 page = SFRPAGE;
  94   1              SFRPAGE = 0XF;
  95   1      
  96   1              //set d12_a0(p5.4), d12_wr(p5.5), d12_rd(p5.6), d12_cs(p5.7)
  97   1              //to out mode
  98   1              P5MDOUT |= 0xf0;        
  99   1      
 100   1              //ENABLE cs signal
 101   1              D12_CS = D12_CS_ENABLE;
 102   1              D12_WR = D12_WR_DISABLE;
 103   1              D12_RD = D12_RD_DISABLE;
 104   1      
 105   1              //DISABLE WR & RD SIGNAL
 106   1              //SET D12_SUSP(P3.3) TO OUT MODE
 107   1              P3MDOUT |= 0X08;
 108   1              //WAKEUP D12
 109   1              D12_SUSP = D12_SUSP_WAKEUP;
 110   1      
 111   1              D12_CS = D12_CS_DISABLE;
 112   1      
 113   1              SFRPAGE = page;
 114   1      }
 115          
 116          /*
 117          void D12_SoftConnect(u8 bConfigure)
C51 COMPILER V7.01  D12IMPL                                                                06/30/2007 11:42:51 PAGE 3   

 118          {
 119              if(bEppflags.flags.in_isr == 0)
 120                          DISABLE_INTERRUPT;
 121          
 122                  D12_WritePort(D12_COMMAND, 0xF3);
 123              D12_WritePort(D12_DATA, bConfigure);   //配置字节信息
 124                  if(bEppflags.flags.in_isr == 0)
 125                          ENABLE_INTERRUPT;
 126          }
 127          
 128          void USBCHIP_SetDMA(u8 bMode)  //设置DMA
 129          {
 130                  if(bEppflags.flags.in_isr == 0)
 131                          DISABLE_INTERRUPT;
 132          
 133                  D12_WritePort(D12_COMMAND, 0xFB);
 134                  D12_WritePort(D12_DATA, bMode);
 135          
 136                  if(bEppflags.flags.in_isr == 0)
 137                          ENABLE_INTERRUPT;
 138          }
 139          */
 140          
 141          void D12_Disconnect(void)
 142          {
 143   1              D12_SetMode(D12_NOLAZYCLOCK | D12_CLOCKRUNNING,
 144   1              D12_SETTOONE | D12_CLOCK_24M);
 145   1      }
 146          
 147          void D12_Connect(void)
 148          {
 149   1          if(bEppflags.flags.in_isr == 0)
 150   1                      DISABLE_INTERRUPT;
 151   1      
 152   1              D12_SetMode(D12_NOLAZYCLOCK | D12_CLOCKRUNNING|D12_SOFTCONNECT,
 153   1              D12_SETTOONE | D12_CLOCK_24M);
 154   1      
 155   1              if(bEppflags.flags.in_isr == 0)
 156   1                      ENABLE_INTERRUPT;
 157   1      
 158   1      }
 159          
 160          
 161          /*
 162          void D12_Reconnect(void)
 163          {
 164                  u8 clk_cnt;
 165                  D12_SUSP = 0;    //唤醒D12
 166                  bEppflags.flags.in_isr = 1;
 167          
 168          //      USB_ClearAllInts();
 169                  D12_Disconnect();
 170          
 171                  for(clk_cnt=0;clk_cnt<2000;clk_cnt++);
 172                  
 173                  D12_Connect();
 174                  bEppflags.flags.in_isr = 0;
 175          
 176          }
 177          */
 178          
 179          void D12_SetAddressEnable(u8 bAddress, bool bEnable)
C51 COMPILER V7.01  D12IMPL                                                                06/30/2007 11:42:51 PAGE 4   

 180          {
 181   1              if(bEppflags.flags.in_isr == 0)
 182   1                      DISABLE_INTERRUPT;
 183   1              D12_WritePort(D12_COMMAND, D12CMD_EN_ADDRESS);
 184   1              if(bEnable)
 185   1                      bAddress |= 0x80;
 186   1              D12_WritePort(D12_DATA, bAddress);
 187   1              if(bEppflags.flags.in_isr == 0)
 188   1                      ENABLE_INTERRUPT;
 189   1      }
 190          
 191          void D12_SetEndpointEnable(bool bEnable)
 192          {
 193   1              if(bEppflags.flags.in_isr == 0)
 194   1                      DISABLE_INTERRUPT;
 195   1              D12_WritePort(D12_COMMAND, D12CMD_EN_EP);
 196   1              if(bEnable)
 197   1                      D12_WritePort(D12_DATA, 1);
 198   1              else
 199   1                      D12_WritePort(D12_DATA, 0);
 200   1              if(bEppflags.flags.in_isr == 0)
 201   1                      ENABLE_INTERRUPT;
 202   1      }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -