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

📄 protocol.lst

📁 16C554VX1128MAX4359-MAX4456P89LPC952 驱动开发
💻 LST
字号:
C51 COMPILER V8.02   PROTOCOL                                                              04/30/2008 14:08:56 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE PROTOCOL
OBJECT MODULE PLACED IN protocol.OBJ
COMPILER INVOKED BY: D:\软件安装路径\C51\BIN\C51.EXE protocol.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <REG952.H>
   2          #include <intrins.H>
   3          #include "16C554.h"
   4          #include "video_matrix.h"
   5          #include "com_proto.h"
   6          #include "uart.h"
   7          #include "wdt.h"
   8          
   9          extern cmdflag,cmdpos;
  10          //*************************************************************************
  11          //函数名: protocol
  12          //功 能: 串口协议,实现串口扩展和视频矩阵切换
  13          //入参数: cmd 为从串口得到的一个字符
  14          //出参数: 无
  15          //*************************************************************************
  16          void protocol(unsigned char cmd)
  17          {
  18   1              uchar cmdlen,i,a,check_sum=0,command[SIZE];
  19   1              uint *temp;
  20   1              if(cmdflag == 0)
  21   1              {
  22   2                      cmdpos = 0;
  23   2                      if(cmd == COM_START_CODE)
  24   2                      cmdflag = 1;    
  25   2              } 
  26   1              else 
  27   1              {
  28   2                      command[cmdpos++] = cmd;
  29   2                      if(cmdpos < SIZE)               //表明数组没有溢出
  30   2                      {
  31   3                              if(cmdpos == command[0])  //即一串数据传送完毕
  32   3                              {       
  33   4                                      cmdlen = command[0];
  34   4                                      for(i=4;i<cmdlen;i++)
  35   4                                      {
  36   5                                              check_sum += command[i-1];      
  37   5                                      }
  38   4                                      temp = (unsigned int*)&command[1];
  39   4                                      if(command[i-1] == check_sum)
  40   4                                      {
  41   5                                              switch(*temp)           //为0003则为CMD_SwitchVideo     为0005则为CMD_UartData
  42   5                                              {
  43   6                                                      case CMD_SwitchVideo:
  44   6                                                      {
  45   7                                                      matrix_write(command[3],command[4]);      //对matrix进行输入输出配置或
  46   7                                                              matrix_write(command[5],command[4]);      //命令配置
  47   7                                                              cmdflag = 0;
  48   7                                                      }                                               
  49   6                                                      break;
  50   6                      
  51   6                                                      case CMD_UartData:
  52   6                                                      {
  53   7                                                              uint j;
  54   7                                                              SC16C554_Write(command[3]|LCR,0x80);  //设置UART1 波特率
  55   7                                                              SC16C554_Write(command[3]|DLL,DLL_DATA); //设置DLL 低位
C51 COMPILER V8.02   PROTOCOL                                                              04/30/2008 14:08:56 PAGE 2   

  56   7                                                      SC16C554_Write(command[3]|DLM,DLM_DATA); //设置DLL 高位
  57   7                                                      SC16C554_Write(command[3]|LCR,0x03);  //8位数据,1 位停止位,无奇偶校验位
  58   7                                                      SC16C554_Write(command[3]|FCR,0x07);  //允许并复位FIFO
  59   7                                                               
  60   7                                                              SC16C554_Write(command[3]|IER,0x00);  //设置16C554禁止所有中断
  61   7      //                                                      SC16C554_Write(command[3]|IER,0x02);    //允许554发送终止中断Enable the transmitter empty interrupt
  62   7                                                              SC16C554_Write(command[3]|MCR,0x08);    //打开554串口总开关     
  63   7                                                              for(j=4;j<=cmdlen-2;j++)        //从要选择的串口发送内容:从
  64   7                                                              {
  65   8                                                                      a=SC16C554_Read(command[3]|LSR);
  66   8                                                                      while(!a&(0x1<<5));   //等待THR空
  67   8                                                                      SC16C554_Write(command[3]|THR, command[j]);  //发送数据                 
  68   8                                                      }                                               
  69   7                                                              cmdflag = 0;
  70   7                                                      }
  71   6                                                      break;
  72   6                                                      default:
  73   6                                                      {
  74   7                                                              cmdflag = 0;    
  75   7                                                      } 
  76   6                                              }
  77   5                                      }
  78   4                                      else    //若输入数据有错误
  79   4                                      {
  80   5                                              cmdflag = 0;
  81   5                                      }       
  82   4                              }
  83   3                      }
  84   2                      else    //数组溢出
  85   2                      {
  86   3                              cmdflag = 0;
  87   3                      }               
  88   2              }       
  89   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    295    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      48
   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 + -