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

📄 serial.lst

📁 一个分选系统的软件:用SmallRtos操作系统
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   SERIAL                                                                06/20/2005 15:36:06 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE SERIAL
OBJECT MODULE PLACED IN .\out\serial.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE serial.c OPTIMIZE(6,SIZE) DEBUG OBJECTEXTEND PRINT(.\out\serial.lst) OBJECT
                    -(.\out\serial.obj)

stmt level    source

   1          /*********************************************************************************************************
   2          **                                                             Small RTOS(51)
   3          **                                   The Real-Time Kernel(For Keil c51)
   4          **
   5          **                                  (c) Copyright 2002-2002, chenmingji
   6          **                                           All Rights Reserved
   7          **
   8          **                                                  V1.20.0
   9          **
  10          **
  11          **--------------文件信息--------------------------------------------------------------------------------
  12          **文   件   名: serial.c
  13          **创   建   人: 陈明计
  14          **最后修改日期: 2003年8月31日
  15          **描        述: 在DP-51上实现闹钟的例子的串行口驱动程序
  16          **
  17          **--------------历史版本信息----------------------------------------------------------------------------
  18          ** 创建人: 陈明计
  19          ** 版  本: V1.00
  20          ** 日 期: 2003年3月25日
  21          ** 描 述: 原始版本
  22          **
  23          **------------------------------------------------------------------------------------------------------
  24          ** 修改人: 陈明计
  25          ** 版  本: V1.20.0
  26          ** 日 期: 2003年8月31日
  27          ** 描 述: 根据新版本要求修改
  28          **
  29          **--------------当前版本修订------------------------------------------------------------------------------
  30          ** 修改人: 
  31          ** 日 期:
  32          ** 描 述:
  33          **
  34          **------------------------------------------------------------------------------------------------------
  35          ********************************************************************************************************/
  36          #define IN_SERIAL
  37          
  38          #include "config.h"
  39                                                      /* 声明使用的外部变量           */
  40          extern uint8 OS_Q_MEM_SEL NotUse _at_ 0x0100;
  41          extern uint8 OS_Q_MEM_SEL SerialInData[20]; /*给读串囗消息队列分配的队列空间*/
  42          extern uint8 OS_Q_MEM_SEL SerialOutData[20];/*给写串囗消息队列分配的队列空间*/
  43          //extern uint8 OS_Q_MEM_SEL Alarm[];
  44          
  45          void PutChar(uint8 Data);
  46          
  47          bit SerialCanSend = 1;                      /* 正在发送标志,0:正在发送    */
  48          
  49          /*********************************************************************************************************
  50          ** 函数名称: SerialInit
  51          ** 功能描述: 初始化串行口
  52          ** 输 入: 无
  53          ** 输 出: 无
  54          ** 全局变量: 无
C51 COMPILER V7.06   SERIAL                                                                06/20/2005 15:36:06 PAGE 2   

  55          ** 调用模块: 无
  56          **
  57          ** 作 者: 曾银玲
  58          ** 日 期: 2004年11月25日
  59          **-------------------------------------------------------------------------------------------------------
  60          ** 修改人:
  61          ** 日 期:
  62          **------------------------------------------------------------------------------------------------------
  63          ********************************************************************************************************/
  64                  void SerialInit(void)
  65          {
  66   1              TMOD=0x21;// 16 bit timer and bound = mode 2 
  67   1              PCON=0x00;//0x80 bound double
  68   1              SCON=0xd0;//50 8,n,1 parity:odd or even
  69   1              TH1=0xfd;//tab[0];
  70   1              TL1=0xfd;//tab[0];
  71   1              TR1 = 1;
  72   1              ES = 1;
  73   1      }
  74          
  75          /*********************************************************************************************************
  76          ** 函数名称: Send
  77          ** 功能描述: 发送一个数据包
  78          ** 输 入: Data:指向要发送的数据指针
  79          ** 输 出: 无
  80          ** 全局变量: 无
  81          ** 调用模块: 无
  82          **
  83          ** 作 者: 陈明计
  84          ** 日 期: 2003年3月25日
  85          **-------------------------------------------------------------------------------------------------------
  86          ** 修改人:
  87          ** 日 期:
  88          **------------------------------------------------------------------------------------------------------
  89          ********************************************************************************************************/
  90          /*        void Send(uint8 OS_Q_MEM_SEL *Data)
  91          {
  92              uint8 Sem;
  93              
  94              PutChar(STARTBYTE1);
  95              PutChar(STARTBYTE2);
  96              Sem = STARTBYTE1 + STARTBYTE2;
  97              
  98              PutChar(*Data);
  99              Sem += *Data++;
 100              PutChar(*Data);
 101              Sem += *Data++;
 102              PutChar(*Data);
 103              Sem += *Data++;
 104              PutChar(*Data);
 105              Sem += *Data++;
 106              PutChar(*Data);
 107              Sem += *Data++;
 108              
 109              PutChar(-Sem);
 110          }
 111          */
 112          /*********************************************************************************************************
 113          ** 函数名称: PutChar
 114          ** 功能描述: 发送一个字节
 115          ** 输 入: Data:发送的数据
 116          ** 输 出: 无
C51 COMPILER V7.06   SERIAL                                                                06/20/2005 15:36:06 PAGE 3   

 117          ** 全局变量: 无
 118          ** 调用模块: 无
 119          **
 120          ** 作 者: 陈明计
 121          ** 日 期: 2003年3月25日
 122          **-------------------------------------------------------------------------------------------------------
 123          ** 修改人:
 124          ** 日 期:
 125          **------------------------------------------------------------------------------------------------------
 126          ********************************************************************************************************/
 127              void PutChar(uint8 Data)
 128          {
 129   1          OS_ENTER_CRITICAL();
 130   1          if (SerialCanSend == 1)                         
 131   1          {
 132   2              SerialCanSend = 0;
 133   2              SBUF = Data;                                /* 串口空闲,直接发送   */
 134   2          }
 135   1          else
 136   1          {
 137   2              OSQIntPost(SerialOutData,Data);             /* 数据入队             */
 138   2          }
 139   1          OS_EXIT_CRITICAL();
 140   1      }  
 141          
 142          /*********************************************************************************************************
 143          ** 函数名称: TaskReceive
 144          ** 功能描述: 串口接收处理任务
 145          ** 输 入: 无
 146          ** 输 出: 无
 147          ** 全局变量: 无
 148          ** 调用模块: 无
 149          **
 150          ** 作 者: 曾银玲
 151          ** 日 期: 2004年11月25日
 152          **-------------------------------------------------------------------------------------------------------
 153          ** 修改人:
 154          ** 日 期:
 155          **------------------------------------------------------------------------------------------------------
 156          ********************************************************************************************************/
 157              void TaskReceive(void)
 158          {
 159   1          //uint8  temp,temp1;
 160   1          uint8 k;
 161   1                                                      /* 建立所需要的消息队列 */
 162   1         // OSQCreate(CommandData, 16);
 163   1          OSQCreate(SerialInData, 16);
 164   1          OSQCreate(SerialOutData, 16);
 165   1          SerialInit();                               /* 初始化串行口         */
 166   1          
 167   1          while (1)
 168   1          {
 169   2                       if(rcv_inf01==0x07){rcv_inf01=0;rcv_flag=1;
 170   3                       out_6k();}
 171   2      
 172   2                      if((rcv_inf11==1)||(rcv_inf01==1)){//修改时间
 173   3                              write_12887();rcv_inf11=0;rcv_inf01=0;}
 174   2                      if((rcv_inf10==0x02)||(rcv_inf00==0x02)){//发送时间
 175   3                              send_y_h();re_start=1;}//rcv_inf10=0;
 176   2                      if((rcv_inf11==0x02)||(rcv_inf01==0x02)){//发送信息
 177   3                              send_inf();}//rcv_inf11=0;
 178   2                              if(rcv_inf01==0x03){        //修改页码
C51 COMPILER V7.06   SERIAL                                                                06/20/2005 15:36:06 PAGE 4   

 179   3                                      rcv_inf01=0;
 180   3                                      mon=date[0];
 181   3                                  pa=mon;
 182   3                          *(&pa+1)=mon>>8;
 183   3                              sp=&pa; 
 184   3                              buffer1write(2,260);
 185   3                              delay(400);       
 186   3                          buffer1topageprogerase(0);  //pageaddr
 187   3                          delay(400);
 188   3                         }
 189   2                       if(rcv_inf00==0x05){      //发送页码
 190   3                           while(!trans_over){}
 191   3                           SBUF=0xfc;trans_over=0;
 192   3                           while(!trans_over){}
 193   3                           SBUF=0x05;trans_over=0;
 194   3                           while(!trans_over){}
 195   3                           SBUF=mon;trans_over=0;
 196   3                              // while((UARTLSR&0x60)==0){}
 197   3                               //UARTTHR=0xfc;

⌨️ 快捷键说明

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