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

📄 main.lst

📁 2010年新增TX-1C程序
💻 LST
字号:
C51 COMPILER V8.02   MAIN                                                                  06/17/2010 09:51:38 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          
  16          unsigned char s6,s7,s10,s11,s14,s15,s,again1,again2,again3,again4,again5,again6,pp,qq,rr,ss,tt,uu;
  17          
  18             /*
  19          code uint8 HeadTable[][74]={
  20          "********************************************************************\r\n",
  21          "******             《圈圈教你玩USB》之 USB键盘                ******\r\n",
  22          "******                      AT89S52 CPU                       ******\r\n",
  23          "******                  建立日期:",__DATE__,"                 ******\r\n",
  24          "******                   建立时间:",__TIME__,"                   ******\r\n",
  25          "******                    作者:电脑圈圈                      ******\r\n",
  26          "******                    欢迎访问作者的                      ******\r\n",
  27          "******           USB专区:http://group.ednchina.com/93/       ******\r\n",
  28          "******      BLOG1:http://www.ednchina.com/blog/computer00    ******\r\n",
  29          "******                BLOG2:http://computer00.21ic.org       ******\r\n",
  30          "******                  请按K1-K8分别进行测试                 ******\r\n",
  31          "******       K1:左Ctrl键  K2:左Shift键  K3:左Alt键  K4:1键    ******\r\n",
  32          "******       K5:2键  K6:3键  K7:Caps Lock键 K8:Num Lock键     ******\r\n",
  33          "******  注意:数字键是数字小键盘,必须打开Num Lock才是数字键  ******\r\n",
  34          "********************************************************************\r\n",
  35          };              */
  36          code uint8 HeadTable[][74]={
  37          "********************************************************************\r\n",
  38          "******                  “天祥电子”之 USB鼠标                  ******\r\n",
  39          "******                       www.txmcu.cn                       ******\r\n",
  40          "******                       www.txmcu.com                      ******\r\n",
  41          "******                       AT89S52 CPU                        ******\r\n",
  42          "******                   建立日期:",__DATE__,"                 ******\r\n",
  43          "******                   建立时间:",__TIME__,"                 ******\r\n",
  44          "******                  请按下列按键分别进行测试                ******\r\n",
  45          "******         S10:左Shift键  S11:左Alt键  S14:1键                      ******\r\n",
  46          "******       S15:2键   S6:Caps Lock键 S7:Num Lock键                    ******\r\n",
  47          "******  注意:数字键是数字小键盘,必须打开Num Lock才是数字键  ******\r\n",
  48          "********************************************************************\r\n",
  49          };      
  50          
  51          /********************************************************************
  52          函数功能:根据按键情况返回报告的函数。
  53          入口参数:无。
  54          返    回:无。
  55          备    注:无。
C51 COMPILER V8.02   MAIN                                                                  06/17/2010 09:51:38 PAGE 2   

  56          ********************************************************************/
  57          void SendReport(void)
  58          {
  59   1       //需要返回的8字节报告的缓冲
  60   1       //通过报告描述符的定义及HID用途表文档,可知Buf[0]的D0是左Ctrl键,
  61   1       //D1是左Shift键,D2是左Alt键,D3是左GUI(即Window键),
  62   1       //D4是右Ctrl,D5是右Shift,D6是右Alt,D7是右GUI键。
  63   1       //Buf[1]保留,值为0。Buf[2]~Buf[7]为键值,最多可以有6个。
  64   1       //由于我们这里普通键最多只有5个,因此不会超过6个。
  65   1       //对于实际的键盘,如果按键数太多时,后面的6个字节都为0xFF,
  66   1       //表示按下的键太多,无法正确返回。
  67   1       
  68   1       uint8 Buf[8]={0,0,0,0,0,0,0,0};
  69   1       //由于需要返回多个按键,所以需要增加一个变量来保存当前的位置。
  70   1       uint8 i=2;
  71   1       //if(s)
  72   1       //{
  73   1              s=0;
  74   1                              pp=0;
  75   1                      qq=0;
  76   1              if(s14)
  77   1              {
  78   2                      s14=0;
  79   2                      Buf[i]=0x59;  //S14为数字小键盘1键。
  80   2                      i++;  //切换到下个位置。
  81   2              }
  82   1              if(s15)
  83   1              {
  84   2                      s15=0;
  85   2                      Buf[i]=0x5A;  //S15数字小键盘2键。
  86   2                      i++;  //切换到下个位置。
  87   2              }
  88   1      
  89   1      //报告准备好了,通过端点1返回,长度为4字节。
  90   1        D12WriteEndpointBuffer(3,8,Buf);
  91   1        Ep1InIsBusy=1;  //设置端点忙标志。    
  92   1      //}
  93   1      }
  94          ////////////////////////End of function//////////////////////////////
  95          
  96          /********************************************************************
  97          函数功能:主函数。
  98          入口参数:无。
  99          返    回:无。
 100          备    注:无。
 101          ********************************************************************/
 102          void main(void)  //主函数
 103          {
 104   1       uint8 i;
 105   1       uint16 id;
 106   1       uint8 InterruptSource;
 107   1       
 108   1       EA=1; //打开中断
 109   1       InitKeyboard(); //初始化按键
 110   1       InitUART();  //初始化串口
 111   1       
 112   1       for(i=0;i<19;i++)        //显示信息
 113   1       {
 114   2        Prints(HeadTable[i]);
 115   2       }
 116   1       
 117   1       id=D12ReadID();
C51 COMPILER V8.02   MAIN                                                                  06/17/2010 09:51:38 PAGE 3   

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


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    278    ----
   CONSTANT SIZE    =   1290    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     19      12
   IDATA SIZE       =   ----    ----
   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 + -