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

📄 serial.lst

📁 UCOS在C51上实现的两个例子
💻 LST
字号:
C51 COMPILER V7.50   SERIAL                                                                04/11/2006 17:04:55 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE SERIAL
OBJECT MODULE PLACED IN serial.OBJ
COMPILER INVOKED BY: D:\Keil C\C51\BIN\C51.EXE serial.c LARGE BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*
   2          *********************************************************************************************************
   3          *                                               uC/OS-II
   4          *                                               实时内核
   5          *
   6          *                        (c) Copyright 1992-1998, Jean J. Labrosse, Plantation, FL
   7          *                                               版权所有
   8          *
   9          *                                            8051处理器代码
  10          *                                           KEIL C51大模式编译
  11          *
  12          * 文件名 : SERIAL.C
  13          * 功能:基于中断的串口驱动及显示程序
  14          *********************************************************************************************************
  15          */
  16          
  17          //**********************************************************************************
  18          //波特率计算公式:
  19          //        TH1=256-(2^SMOD/32*Fosc/12*1/Baud)
  20          //    其中:SMOD=0,1;Fosc=晶体或晶振频率;Bound=波特率
  21          //    本例中,SMOD=0;Fosc=22.1184*10E6;Bound=19200bps,所以TH1=0xFD
  22          //Baud rate(@22.1184Mhz)
  23          //300(52);1200(D5);2400(EA);4800(F5);9600(FB);19200(FD);38400(FF);
  24          //**********************************************************************************
  25          
  26          #ifndef  OS_MASTER_FILE
  27          #include "includes.h"
  28          #endif
  29          
  30          #include <serial.h>
  31          
  32          unsigned char TxBuf[LenTxBuf],RxBuf[LenRxBuf];  //收发缓冲区
  33          unsigned int inTxBuf,outTxBuf,inRxBuf,outRxBuf; //收发缓冲区读写指针
  34          bit TIflag=1;
  35          
  36          void InitSerial() reentrant     //串口初始化
  37          {
  38   1              TMOD=TMOD&0x0F;
  39   1              TMOD=TMOD|0x20;
  40   1              TH1=0xFD;       //19200bps@22.1184MHz
  41   1              SCON=0x50;PCON=0x00;
  42   1              TR1=1;
  43   1      }
  44          
  45          void InitSerialBuffer(void) reentrant//串口缓冲区初始化
  46          {
  47   1              inTxBuf=outTxBuf=0;
  48   1              inRxBuf=outRxBuf=0;
  49   1              ES=1;
  50   1      }
  51          
  52          void serial(void) reentrant
  53          {    //注:中断服务程序在汇编中实现
  54   1              if(TI){
  55   2                      TI=0;
C51 COMPILER V7.50   SERIAL                                                                04/11/2006 17:04:55 PAGE 2   

  56   2                      if(inTxBuf==outTxBuf){
  57   3                              TIflag=1;
  58   3                              return;
  59   3                      }       //TxBuf已空
  60   2                      SBUF=TxBuf[outTxBuf]; outTxBuf=(outTxBuf+1)%LenTxBuf;
  61   2              }
  62   1              if(RI){
  63   2                      RI=0;
  64   2                      inRxBuf=(inRxBuf+1)%LenTxBuf;
  65   2                      if(inRxBuf==outRxBuf)
  66   2                              return; //RxBuf已满
  67   2                      RxBuf[inRxBuf]=SBUF;
  68   2              }
  69   1      }
  70          
  71          void PrintChar(unsigned char ch) reentrant//显示字符
  72          {
  73   1              if(TIflag){             
  74   2                      TIflag=0;
  75   2                      TI=1;
  76   2              }
  77   1              inTxBuf=(inTxBuf+1)%LenTxBuf;
  78   1              if(inTxBuf==outTxBuf)
  79   1                      return; //TxBuf已满
  80   1              TxBuf[inTxBuf]=ch;
  81   1      }
  82          
  83          void PrintStr(unsigned char *str) reentrant//显示字符串
  84          {
  85   1              int i;
  86   1              unsigned char ch;
  87   1              
  88   1              OS_ENTER_CRITICAL();
  89   1              for(i=0;i<MaxLenStr;i++){
  90   2                      ch=*(str+i);
  91   2                      if(ch=='\0')
  92   2                              break;
  93   2                      else if(ch=='\n'){
  94   3                              PrintChar('\n');
  95   3                              PrintChar('\r');
  96   3                      } 
  97   2                      else
  98   2                              PrintChar(ch);
  99   2              }
 100   1              OS_EXIT_CRITICAL();
 101   1      }
 102          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    402    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   2058    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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