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

📄 main.lst

📁 适合初学者学习的UPSD的点阵LCD汉字显示
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.10   MAIN                                                                  11/09/2006 11:10:16 PAGE 1   


C51 COMPILER V7.10, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE main.c OPTIMIZE(0,SPEED) BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*
   2          名称:main.c
   3          日期:2005.01.12
   4          作者:廖志凯
   5          功能:解析由上位机(音频控制器)的命令(通过RS232),
   6                          控制下位机(子控制板)动作。
   7                          接收下位机的信息并发送给上位机
   8          说明:程序使用RTX51实时多任务系统,
   9          */
  10          #pragma large
  11          #include        "main.h"
  12          /*------------------------------------------------------------------------------*/
  13          //定义变量
  14          uchar xdata cAddress;                                           //自身地址
  15          uchar xdata cDiplayId[2];
  16          #define MAX_NAME_ID     48
  17          uchar code cNameId[MAX_NAME_ID][17]=
  18                  {
  19                          "主:  分局903   ",
  20                          "主:  分局904   ",
  21                          "主:  分局939   ",
  22                          "主:  分局940   ",
  23                          "主:  市局应急  ",
  24                          "主: 分局常规01 ",
  25                          "主: 分局常规02 ",
  26                          "主: 分局常规04 ",
  27                          "主:交警总队350M",
  28                          "主:   市局01   ",
  29                          "主:   市局04   ",
  30                          "主:   黄浦01   ",
  31                          "主:   黄浦02   ",
  32                          "主:   特警01   ",
  33                          "主:  黄浦指挥  ",
  34                          "主:交警总队800M",
  35                          "主:   空闲组   ",
  36                          "主:   空闲组   ",
  37                          "主:   空闲组   ",
  38                          "主:   空闲组   ",
  39                          "主:   空闲组   ",
  40                          "主:   空闲组   ",
  41                          "主:   空闲组   ",
  42                          "主:   空闲组   ",
  43                          "备:  分局903   ",
  44                          "备:  分局904   ",
  45                          "备:  分局905   ",
  46                          "备:  分局939   ",
  47                          "备:  分局940   ",
  48                          "备: 分局常规01 ",
  49                          "备: 分局常规02 ",
  50                          "备: 分局常规04 ",
  51                          "备: 市局应急01 ",
  52                          "备:交警总队350M",
  53                          "备:   市局01   ",
  54                          "备:   市局02   ",
  55                          "备:   市局03   ",
C51 COMPILER V7.10   MAIN                                                                  11/09/2006 11:10:16 PAGE 2   

  56                          "备:   市局04   ",
  57                          "备:   市局05   ",
  58                          "备:   黄浦01   ",
  59                          "备:   黄浦02   ",
  60                          "备:   特警01   ",
  61                          "备:  黄浦指挥  ",
  62                          "备: 黄浦应急组 ",
  63                          "备:交警总队800M",
  64                  };
  65          /*===============================================================
  66          功能:初始化
  67          参数:
  68          返回:
  69          说明:获取电台号
  70          ===============================================================*/
  71          void Init_System()
  72          {
  73   1              uchar _buff[20];
  74   1              WDKEY = 0xAE;                           //开看门狗
  75   1              IP = 0x00;
  76   1              XBYTE[CTA] = 0x00;                                      //把PA设置成IO模式
  77   1              XBYTE[DCA] = 0x00;                                      //把PA设置成输入模式
  78   1              cAddress = XBYTE[DIA];                          //读入PA值
  79   1              
  80   1              os_set_slice(ST10MS);
  81   1              Init_Serial();
  82   1              EN_RS485_RECV();
  83   1              //熄灭所以的灯
  84   1              LED_RUN = 1;                                    
  85   1              CALL_IN1_LED = 1;
  86   1              CALL_IN2_LED = 1;
  87   1              cDiplayId[0] = 0;
  88   1              cDiplayId[1] = 0;
  89   1              //AUDIO_C1 = TURN_ON;
  90   1              //AUDIO_C2 = TURN_ON;
  91   1              AUDIO_C1 = TURN_OFF;
  92   1              AUDIO_C2 = TURN_OFF;
  93   1      
  94   1              memset(_buff, 0x00, 20);
  95   1              memcpy(_buff, "监听设备", 8);
  96   1              Write_Debug_Info(_buff, strlen(_buff));
  97   1              memset(_buff, 0x00, 20);
  98   1              sprintf(_buff,"%s%bd-%bd","地址:",cAddress,cAddress+1);
  99   1              Write_Debug_Info(_buff, strlen(_buff));
 100   1              memset(_buff, 0x00, 20);
 101   1              sprintf(_buff,"%s;%s",__DATE__,__TIME__);
 102   1              Write_Debug_Info(_buff, strlen(_buff));
 103   1      
 104   1              os_wait2(K_TMO, T500MS);
 105   1              Init_Vfd_Display();
 106   1              Clear_Vfd_Display();
 107   1      
 108   1              Define_Vfd_Userwindow(1, 1, 4, 0, 140, 2);
 109   1              Select_Vfd_Window(1);
 110   1              Position_Vfd_Home();
 111   1              memset(_buff, 0x00, 20);
 112   1              sprintf(_buff,"%s%bd", "地址:", cAddress);
 113   1              Display_Vfd_Blending(_buff);
 114   1              os_wait2(K_TMO, T50MS);
 115   1              Define_Vfd_Userwindow(2, 1, 144, 0, 140, 2);
 116   1              Select_Vfd_Window(2);
 117   1              Position_Vfd_Home();
C51 COMPILER V7.10   MAIN                                                                  11/09/2006 11:10:16 PAGE 3   

 118   1              memset(_buff, 0x00, 20);
 119   1              sprintf(_buff,"%s%bd", "地址:", cAddress+1);
 120   1              Display_Vfd_Blending(_buff);
 121   1      
 122   1      
 123   1       }
 124          
 125          /*===============================================================
 126          功能:判断上位机的命令是否正确,正确转发
 127          参数:
 128          返回:
 129          说明:邮件的参数是接收数据长度
 130                  只有一条协议
 131                  FF 04 ID1 02 01 ID2 00
 132                  ID1-指监听设备自身地址
 133                  ID2-指要监听的电台号
 134          ===============================================================*/
 135          void Command_Task(void) _task_ CMMD_TASK_ID
 136          {
 137   1              uchar xdata _tmp, _ui;
 138   1      
 139   1              os_wait(K_TMO, T1S, 0x00);
 140   1              Set_Vfd_Brightless(1);
 141   1              
 142   1              while(1)
 143   1              {
 144   2                      if( (cRecvBuffCnt != 0x00)  && (cRecvBuffPtr < RECV_GRUOP)  )
 145   2                      {//缓冲区内有数据
 146   3                              if( (cRecvBuff[cRecvBuffPtr][2] == cAddress) || (cRecvBuff[cRecvBuffPtr][2] == (cAddress+1)) )
 147   3                              {//坐席设备号正确
 148   4                                      if(cRecvBuff[cRecvBuffPtr][3] == 2)
 149   4                                      {//命令类型正确
 150   5                                              if(cRecvBuff[cRecvBuffPtr][4] == 1)
 151   5                                              {//操作类型正确
 152   6                                                      if( (cRecvBuff[cRecvBuffPtr][5] >= 1) &&(cRecvBuff[cRecvBuffPtr][5] <= MAX_NAME_ID) )
 153   6                                                      {//电台号正确
 154   7                                                              //计算和校      
 155   7                                                              _tmp = cRecvBuff[cRecvBuffPtr][2];
 156   7                                                              for(_ui=3;  _ui< cRecvBuff[cRecvBuffPtr][1]+2; _ui++)
 157   7                                                              {
 158   8                                                                      _tmp += cRecvBuff[cRecvBuffPtr][_ui];
 159   8                                                              }
 160   7                                                              
 161   7                                                              //if(_tmp == cRecvBuff[cRecvBuffPtr][_ui])
 162   7                                                              {//和校正确
 163   8                                                                      if(cRecvBuff[cRecvBuffPtr][2] == cAddress)
 164   8                                                                      {
 165   9                                                                              Select_Vfd_Window(1);
 166   9                                                                              Position_Vfd_Home();
 167   9                                                                              cDiplayId[0] = cRecvBuff[cRecvBuffPtr][5]-1;
 168   9                                                                              Display_Vfd_Blending(cNameId[cDiplayId[0]]);
 169   9                                                                      }
 170   8                                                                      else if(cRecvBuff[cRecvBuffPtr][2] == (cAddress+1)) 
 171   8                                                                      {
 172   9                                                                              Select_Vfd_Window(2);
 173   9                                                                              Position_Vfd_Home();
 174   9                                                                              cDiplayId[1] = cRecvBuff[cRecvBuffPtr][5]-1;
 175   9                                                                              Display_Vfd_Blending(cNameId[cDiplayId[1]]);
 176   9                                                                      }
 177   8                                                              }
 178   7                                                      }
 179   6                                              }
C51 COMPILER V7.10   MAIN                                                                  11/09/2006 11:10:16 PAGE 4   

 180   5                                      }
 181   4                              }
 182   3                              //清除已处理的数据

⌨️ 快捷键说明

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