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

📄 main.lst

📁 采用PDIUSBD12开发的USB总线与429总线数据转换的单片机固件程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V6.12  MAIN                                                                   12/17/2004 12:03:21 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN E:\MCU\USB_FIRM\MAIN.OBJ
COMPILER INVOKED BY: C:\COMP51\C51.EXE E:\MCU\USB_FIRM\MAIN.C DB SB OE

stmt level    source

   1          /**********************************************
   2                  USB固件编程
   3          
   4          File  Name:	main.c
   5          Final Date:	2004-07-10
   6          Author:		LHP
   7          Note:		问题已经基本解决
   8          ***********************************************/
   9          
  10          #include <reg51.h>
  11          #include "D12ci.h"
  12          #include "chap_9.h"
  13          #include <intrins.h>
  14          
  15          
  16          sbit D12CS=P3^1;
  17          sbit TXR=P3^3;
  18          sbit DR1=P3^4;
  19          sbit DR2=P3^5;
  20          /*第一板
  21          sbit OE1=P1^7;
  22          sbit OE2=P1^6;
  23          sbit SEL=P1^5;
  24          sbit MR=P1^4;
  25          sbit LDCW=P1^3;
  26          sbit ENTX=P1^2;
  27          sbit LD1=P1^1;
  28          sbit LD2=P1^0;
  29          */
  30          //第二板
  31          sbit OE2=P1^7;
  32          sbit OE1=P1^6;
  33          sbit SEL=P1^5;
  34          sbit LD1=P1^4;
  35          sbit LD2=P1^3;
  36          sbit ENTX=P1^2;
  37          sbit LDCW=P1^1;
  38          sbit MR=P1^0;
  39          
  40          
  41          extern unsigned char idata OutBuf[EP1_PACKET_SIZE];//用于PC机向3282传输要发送的数据
  42          extern unsigned char idata ControlWord[2]; //用于PC机向3282发送控制字
  43          unsigned char idata InBuf1[EP1_PACKET_SIZE]; //用于3282通道1向pc机发送数据
  44          unsigned char idata InBuf2[EP2_PACKET_SIZE]; //用于3282通道2向PC机发送数据
  45          
  46          extern EPPFLAGS bEPPflags;
  47          extern CONTROL_XFER ControlData;
  48          void reconnect_usb(void);
  49          void disconnect_usb(void);
  50          void connect_usb(void);
  51          void setup_handler(void);
  52          //void mytxr(void);
  53          extern void myisr(void);
  54          
  55          //重新连接到USB总线
C51 COMPILER V6.12  MAIN                                                                   12/17/2004 12:03:21 PAGE 2   

  56          void reconnect_usb(void)
  57          {
  58   1          unsigned long clk_cnt;
  59   1          disconnect_usb();//断开usb连接
  60   1          for(clk_cnt=0;clk_cnt<50000;clk_cnt++);//延时
  61   1          connect_usb();//连接到USB
  62   1      }
  63          
  64          //断开USB总线
  65          void disconnect_usb(void)
  66          {
  67   1          //初始化D12工作状态,断开soft connect连接
  68   1          D12_SetMode(D12_NOLAZYCLOCK,D12_SETTOONE|D12_CLOCK_6M);
  69   1      }
  70          
  71          //连接USB总线
  72          void connect_usb(void)
  73          {
  74   1          DISABLE;
  75   1          bEPPflags.value=0;//清标志
  76   1          ENABLE;
  77   1          //初始化D12工作状态,接通soft connect
  78   1          D12_SetMode(D12_NOLAZYCLOCK|D12_SOFTCONNECT,D12_SETTOONE|D12_CLOCK_6M);
  79   1      }
  80          
  81          void usb_isr(void) interrupt 0
  82          {
  83   1          DISABLE;
  84   1          myisr();
  85   1          ENABLE;
  86   1      }
  87          
  88          
  89          
  90          void main(void)
  91          {
  92   1              unsigned char idata i;
  93   1              SP=0x50;
  94   1      	P0=0xff;
  95   1      	P1=0xdb;
  96   1      	P2=0xff;
  97   1      	P3=0xff;
  98   1      
  99   1      	D12CS=0x0;
 100   1      	IT0=0;//设置INT0为低电平中断触发
 101   1      	EX0=1;//允许外部中断0
 102   1      	PX0=1;//设为高优先级
 103   1              EA=1;//开总中断
 104   1      
 105   1              D12CS=0x1;
 106   1              MR=0;
 107   1              _nop_();
 108   1              _nop_();
 109   1              MR=1;
 110   1      
 111   1              LDCW=1;
 112   1              P2=0x00;
 113   1              P0=0x20;
 114   1              LDCW=0;
 115   1              _nop_();
 116   1              _nop_();
 117   1              LDCW=1;
C51 COMPILER V6.12  MAIN                                                                   12/17/2004 12:03:21 PAGE 3   

 118   1      
 119   1      	D12CS=0x0;
 120   1      	bEPPflags.value=0;
 121   1      	reconnect_usb();
 122   1      
 123   1      	while(1)
 124   1      	{
 125   2      	    if(bEPPflags.bits.setup_packet)
 126   2      	    {
 127   3      		DISABLE;
 128   3      		bEPPflags.bits.setup_packet=0;
 129   3      		ENABLE;
 130   3      		setup_handler();
 131   3      	    }
 132   2      
 133   2      	    if(bEPPflags.bits.ep1_rxdone)//?????????????????此处是否应该加入清除标志的语句
 134   2      	    {
 135   3                      DISABLE;
 136   3                      bEPPflags.bits.ep1_rxdone=0;
 137   3                      ENABLE;
 138   3                 /*
 139   3                  D12CS=0x1;
 140   3      
 141   3                  LDCW=1;
 142   3                  P0=ControlWord[0];
 143   3                 P2=ControlWord[1];
 144   3                  P0=0x20;
 145   3                  P2=0x00;
 146   3                LDCW=0;     */
 147   3              //   _nop_();
 148   3             //     _nop_();
 149   3              //   LDCW=1;
 150   3      
 151   3      	//    D12CS=0x0;
 152   3      
 153   3                   /*
 154   3                    while(TXR!=1);
 155   3                      D12CS=1;
 156   3                      P0=0xff;
 157   3                      P2=0xff;
 158   3                      ENTX=0;
 159   3      
 160   3                      P0=OutBuf[0];
 161   3                      P2=OutBuf[1];
 162   3                      LD1=0;
 163   3                      LD1=1;
 164   3      
 165   3                      P0=OutBuf[2];
 166   3                      P2=OutBuf[3];
 167   3                      LD2=0;
 168   3                      LD2=1;
 169   3      
 170   3                      _nop_();
 171   3                      _nop_();
 172   3                      ENTX=1;
 173   3             //         _nop_();
 174   3             //         _nop_();
 175   3                    while(TXR!=1);
 176   3      
 177   3                      ENTX=0;  */
 178   3                  }
 179   2              //发送控制字
C51 COMPILER V6.12  MAIN                                                                   12/17/2004 12:03:21 PAGE 4   

 180   2              //if(TXR && bEPPflags.bits.ep2_rxdone)
 181   2              //{
 182   2                  if(bEPPflags.bits.ep2_rxdone)
 183   2      	    {
 184   3                  DISABLE;
 185   3                  bEPPflags.bits.ep2_rxdone=0;
 186   3                  ENABLE;
 187   3      
 188   3                  while(!TXR);
 189   3                      D12CS=1;
 190   3                      //P0=0xff;
 191   3                      //P2=0xff;
 192   3                      ENTX=0;
 193   3      
 194   3                      P0=OutBuf[0];
 195   3                      P2=OutBuf[1];
 196   3                      LD1=0;
 197   3                      LD1=1;
 198   3      
 199   3                      P0=OutBuf[2];
 200   3                      P2=OutBuf[3];
 201   3                      LD2=0;
 202   3                      LD2=1;
 203   3      
 204   3                      //_nop_();
 205   3                     // _nop_();
 206   3                      ENTX=1;
 207   3                      
 208   3                      for(i=250;i>0;i--);
 209   3                      //_nop_():
 210   3                      //_nop_();
 211   3                      //_nop_();
 212   3                    //while(TXR!=1);
 213   3      
 214   3                      //ENTX=0;
 215   3                      D12CS=0x0;
 216   3        //        P1=0xdb;
 217   3      
 218   3      //	    D12CS=0x1;
 219   3         //       _nop_();
 220   3         //       MR=0;
 221   3         //       _nop_();
 222   3         //       _nop_();
 223   3         //       MR=1;
 224   3      
 225   3        //          LDCW=1;
 226   3        //          P0=ControlWord[0];
 227   3        //          P2=ControlWord[1];
 228   3                  //P0=0x00;
 229   3                  //P2=0x20;
 230   3         //         LDCW=0;
 231   3        //          _nop_();
 232   3         //         _nop_();
 233   3        //          LDCW=1;
 234   3      
 235   3      //	    D12CS=0x0;
 236   3      
 237   3      	  }
 238   2      //}
 239   2                //接收通道1
 240   2      	  if(DR1==0)
 241   2      	  {
C51 COMPILER V6.12  MAIN                                                                   12/17/2004 12:03:21 PAGE 5   

 242   3      	    D12CS=1;
 243   3      
 244   3                  OE1=1;
 245   3                  SEL=0;
 246   3                  P0=0xff;
 247   3                  P2=0xff;
 248   3                  OE1=0;
 249   3                  _nop_();
 250   3                  InBuf1[0]=P0;
 251   3      	    InBuf1[1]=P2;
 252   3      
 253   3                  OE1=1;
 254   3                  SEL=1;
 255   3                  P0=0xff;
 256   3                  P2=0xff;
 257   3      	    OE1=0;
 258   3                  _nop_();
 259   3      	    InBuf1[2]=P0;
 260   3      	    InBuf1[3]=P2;
 261   3                  OE1=1;
 262   3      
 263   3      	    D12CS=0;
 264   3      	    D12_WriteEndpoint(3,4,InBuf1);
 265   3              }
 266   2              //接收通道2
 267   2      	if(DR2==0)
 268   2      	{
 269   3      	D12CS=1;
 270   3      

⌨️ 快捷键说明

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