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

📄 main.lst

📁 2010年新增TX-1C程序
💻 LST
字号:
C51 COMPILER V8.02   MAIN                                                                  06/17/2010 09:52:09 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN Main.OBJ
COMPILER INVOKED BY: D:\处理软件\keil\C51\BIN\C51.EXE Main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /******************************************************************
   2             本程序只供学习使用,未经作者许可,不得用于其它任何用途
   3                                           
   4                                           欢迎光临天祥电子  www.txmcu.cn
   5                    
   6          *******************************************************************/
   7          
   8          #include <AT89X52.H>  //头文件
   9          #include "Key.h"
  10          #include "Led.h"
  11          #include "UART.h"
  12          #include "pdiusbd12.h"
  13          #include "UsbCore.h"
  14          #include "config.h"
  15          unsigned char s6,s7,s10,s11,s14,s15,s,again1,again2,pp,qq;
  16          
  17          code uint8 HeadTable[][74]={
  18          "********************************************************************\r\n",
  19          "******                  “天祥电子”之 USB鼠标                  ******\r\n",
  20          "******                       www.txmcu.cn                       ******\r\n",
  21          "******                       www.txmcu.com                      ******\r\n",
  22          "******                       AT89S52 CPU                        ******\r\n",
  23          "******                   建立日期:",__DATE__,"                 ******\r\n",
  24          "******                   建立时间:",__TIME__,"                 ******\r\n",
  25          "******                  请按下列按键分别进行测试                ******\r\n",
  26          "******    S6:光标左移  S7:光标右移  S10:光标上移 S11:光标下移   ******\r\n",
  27          "******                 S14:鼠标左键 S15:鼠标右键                ******\r\n",
  28          "********************************************************************\r\n",
  29          };
  30          
  31          
  32          /********************************************************************
  33          函数功能:根据按键情况返回报告的函数。
  34          入口参数:无。
  35          返    回:无。
  36          备    注:无。
  37          ********************************************************************/
  38          void SendReport(void)
  39          {
  40   1       //需要返回的4字节报告的缓冲
  41   1       //Buf[0]的D0就是左键,D1就是右键,D2就是中键(这里没有)
  42   1       //Buf[1]为X轴,Buf[2]为Y轴,Buf[3]为滚轮
  43   1       uint8 Buf[4]={0,0,0,0};
  44   1       
  45   1       //我们不需要KEY1~KEY6按键改变的信息,所以先将它们清0
  46   1      // KeyUp &=~(KEY1|KEY2|KEY3|KEY4|KEY5|KEY6);
  47   1      // KeyDown &=~(KEY1|KEY2|KEY3|KEY4|KEY5|KEY6);
  48   1       
  49   1       //如果有按键按住,并且不是KEY7、KEY8(左、右键)
  50   1       //或者KEY7、KEY8任何一个键有变动的话,则需要返回报告
  51   1       if(s)
  52   1       {
  53   2              s=0;
  54   2              if(s6)  
  55   2              {
C51 COMPILER V8.02   MAIN                                                                  06/17/2010 09:52:09 PAGE 2   

  56   3                      s6=0;
  57   3                      Buf[1]=-1;  //这里一次往左移动一个单位。
  58   3              }
  59   2              if(s7)
  60   2              {
  61   3                      s7=0;
  62   3                      Buf[1]=1;   //这里一次往右移动一个单位。
  63   3              }
  64   2              if(s10)
  65   2              {
  66   3                      s10=0;
  67   3                      Buf[2]=-1;   //这里一次往上移动一个单位。
  68   3              }
  69   2              if(s11)
  70   2              {
  71   3                      s11=0;
  72   3                      Buf[2]=1;  //这里一次往下移动一个单位。
  73   3              }
  74   2              if(s14)
  75   2              {
  76   3                      s14=0;
  77   3                      Buf[0]|=0x01;  //D0为鼠标左键
  78   3              }
  79   2              if(s15)
  80   2              {
  81   3                      s15=0;
  82   3                      Buf[0]|=0x02;  //D1为鼠标右键
  83   3                       //     Buf[0]|=0x01;  //D0为鼠标左键
  84   3              }
  85   2      //报告准备好了,通过端点1返回,长度为4字节。
  86   2        D12WriteEndpointBuffer(3,4,Buf);
  87   2        if(pp|qq)
  88   2        {
  89   3              pp=0;
  90   3              qq=0;
  91   3              D12WriteEndpointBuffer(3,4,Buf);
  92   3      
  93   3        }
  94   2        Ep1InIsBusy=1;  //设置端点忙标志。    
  95   2      }
  96   1      }
  97          ////////////////////////End of function//////////////////////////////
  98          
  99          /********************************************************************
 100          函数功能:主函数。
 101          入口参数:无。
 102          返    回:无。
 103          备    注:无。
 104          ********************************************************************/
 105          void main(void)  //主函数
 106          {
 107   1       uint8 i;
 108   1       uint16 id;
 109   1       uint8 InterruptSource;
 110   1      
 111   1       EA=1; //打开中断
 112   1       InitKeyboard(); //初始化按键
 113   1       InitUART();  //初始化串口
 114   1       
 115   1       for(i=0;i<18;i++)        //显示信息
 116   1       {
 117   2        Prints(HeadTable[i]);
C51 COMPILER V8.02   MAIN                                                                  06/17/2010 09:52:09 PAGE 3   

 118   2       }
 119   1       
 120   1       id=D12ReadID();
 121   1      
 122   1       Prints("Your D12 chip\'s ID is: ");
 123   1       PrintShortIntHex(id);
 124   1      
 125   1       if(id==0x1012)
 126   1       {
 127   2        Prints(". ID is correct! Congratulations!\r\n\r\n");
 128   2       }
 129   1       else
 130   1       {
 131   2        Prints(". ID is incorrect! What a pity!\r\n\r\n");
 132   2       }
 133   1       
 134   1       UsbDisconnect();  //先断开USB连接
 135   1       UsbConnect();  //将USB连接上
 136   1       ConfigValue=0; //配置值初始化为0
 137   1       
 138   1       while(1)  //死循环
 139   1       {
 140   2        if(D12GetIntPin()==0) //如果有中断发生
 141   2        {
 142   3         outportb(D12COMMAND,0xF4);// READ_INTERRUPT_REGISTER);
 143   3         //D12WriteCommand(READ_INTERRUPT_REGISTER);  //写读中断寄存器的命令
 144   3         InterruptSource=inportb(D12DATA);//D12ReadByte(); //读回第一字节的中断寄存器
 145   3         if(InterruptSource&0x80)UsbBusSuspend(); //总线挂起中断处理
 146   3         if(InterruptSource&0x40)UsbBusReset();   //总线复位中断处理
 147   3         if(InterruptSource&0x01)UsbEp0Out();     //端点0输出中断处理
 148   3         if(InterruptSource&0x02)UsbEp0In();      //端点0输入中断处理
 149   3         if(InterruptSource&0x04)UsbEp1Out();     //端点1输出中断处理
 150   3         if(InterruptSource&0x08)UsbEp1In();      //端点1输入中断处理
 151   3         if(InterruptSource&0x10)UsbEp2Out();     //端点2输出中断处理
 152   3         if(InterruptSource&0x20)UsbEp2In();      //端点2输入中断处理
 153   3        }
 154   2        if(ConfigValue!=0) //如果已经设置为非0的配置,则可以返回报告数据
 155   2        {
 156   3         LEDs=~KeyPress;  //利用板上8个LED显示按键状态,按下时亮
 157   3         if(!Ep1InIsBusy)  //如果端点1输入没有处于忙状态,则可以发送数据
 158   3         {
 159   4          KeyCanChange=0;  //禁止按键扫描
 160   4          if(s) //如果有按键事件发生
 161   4          {
 162   5           SendReport();  //则返回报告
 163   5          }
 164   4          KeyCanChange=1;  //允许按键扫描
 165   4         }
 166   3        }
 167   2       }
 168   1      }
 169          ////////////////////////End of function//////////////////////////////
 170           


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    337    ----
   CONSTANT SIZE    =   1212    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     11       8
   IDATA SIZE       =   ----    ----
C51 COMPILER V8.02   MAIN                                                                  06/17/2010 09:52:09 PAGE 4   

   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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