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

📄 main.lst

📁 基于C8051F310的485集线器
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.16   MAIN                                                                  12/27/2008 15:34:42 PAGE 1   


C51 COMPILER V8.16, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: e:\Keil\C51\BIN\C51.EXE main.c LARGE BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /***************************************************************************
   2          ** 文 件 名:MAIN.C
   3          ** 编 写 者:
   4          ** 编写日期:2008年9月16日
   5          ** 简要描述:
   6          ** 修改记录:
   7          ** 版    本:
   8          ***************************************************************************/
   9          
  10          #include "C8051F310.h"
  11          #include <rtx51tny.h>  
  12          
  13          
  14          /***************************************************************************
  15          函数名称:PCA_Init()
  16          简要描述:初始化PCA模块,PCA0-5均配置为边缘捕捉(上升沿和下降沿)
  17                            Called from the Init_Device() function
  18          输入:    无        // 输入参数说明,包括每个参数的作用、取值说明及参数间关系
  19          输出:    无        // 输出参数的说明, 返回值的说明
  20          修改日志:
  21          ***************************************************************************/
  22          void PCA_Init()
  23          {
  24   1          PCA0CN    = 0x40;
  25   1          PCA0MD    &= ~0x40;
  26   1          PCA0MD    = 0x00;
  27   1          PCA0CPM0  = 0x30;
  28   1          PCA0CPM1  = 0x30;
  29   1          PCA0CPM2  = 0x30;
  30   1          PCA0CPM3  = 0x30;
  31   1          PCA0CPM4  = 0x30;
  32   1      
  33   1      }
  34          
  35          //void Timer_Init()
  36          //{
  37          //    TMR3CN    = 0x04; // time3
  38          //}
  39          
  40          /***************************************************************************
  41          函数名称:Port_IO_Init()
  42          简要描述:初始化端口// 函数目的、功能等的描述
  43          输入:    无        // 输入参数说明,包括每个参数的作用、取值说明及参数间关系
  44          输出:    无        // 输出参数的说明, 返回值的说明
  45          修改日志:
  46          ***************************************************************************/
  47          void Port_IO_Init()
  48          {
  49   1          // P0.0  -  CEX0 (PCA),  Open-Drain, Digital
  50   1          // P0.1  -  CEX1 (PCA),  Open-Drain, Digital
  51   1          // P0.2  -  Skipped,     Open-Drain, Analog
  52   1          // P0.3  -  Skipped,     Open-Drain, Analog
  53   1          // P0.4  -  CEX2 (PCA),  Open-Drain, Digital
  54   1          // P0.5  -  CEX3 (PCA),  Open-Drain, Digital
  55   1          // P0.6  -  CEX4 (PCA),  Open-Drain, Digital
C51 COMPILER V8.16   MAIN                                                                  12/27/2008 15:34:42 PAGE 2   

  56   1          // P0.7  -  Unassigned,  Open-Drain, Digital
  57   1      
  58   1          // P1.0  -  Unassigned,  Open-Drain, Digital
  59   1          // P1.1  -  Unassigned,  Open-Drain, Digital
  60   1          // P1.2  -  Unassigned,  Open-Drain, Digital
  61   1          // P1.3  -  Unassigned,  Open-Drain, Digital
  62   1          // P1.4  -  Unassigned,  Open-Drain, Digital
  63   1          // P1.5  -  Unassigned,  Open-Drain, Digital
  64   1          // P1.6  -  Unassigned,  Open-Drain, Digital
  65   1          // P1.7  -  Unassigned,  Open-Drain, Digital
  66   1          // P2.0  -  Unassigned,  Open-Drain, Digital
  67   1          // P2.1  -  Unassigned,  Open-Drain, Digital
  68   1          // P2.2  -  Unassigned,  Open-Drain, Digital
  69   1          // P2.3  -  Unassigned,  Open-Drain, Digital
  70   1      
  71   1          P0SKIP    = 0x0C;
  72   1          XBR1      = 0x45;
  73   1      }
  74          
  75          /***************************************************************************
  76          函数名称:Oscillator_Init()
  77          简要描述:初始化振荡器,使用外部晶振22.118432MHz,晶振频率作为系统时钟
  78          输入:    无        // 输入参数说明,包括每个参数的作用、取值说明及参数间关系
  79          输出:    无        // 输出参数的说明, 返回值的说明
  80          修改日志:
  81          ***************************************************************************/
  82          void Oscillator_Init()
  83          {
  84   1          int i = 0;
  85   1          OSCXCN    = 0x67;
  86   1       /*  for (i = 0; i < 3000; i++);  // Wait 1ms for initialization
  87   1          while ((OSCXCN & 0x80) == 0);  */
  88   1          OSCICN    = 0x83;
  89   1      }
  90          
  91          /***************************************************************************
  92          函数名称:Interrupts_Init()
  93          简要描述:初始化中断
  94          输入:    无
  95          输出:    无
  96          修改日志:
  97          ***************************************************************************/
  98          void Interrupts_Init()
  99          {
 100   1          EIE1      = 0x90;
 101   1          EIP1      = 0x10;
 102   1      }
 103          
 104          // Initialization function for device,
 105          // Call Init_Device() from your main program
 106          /***************************************************************************
 107          函数名称:Init_Device(void)
 108          简要描述:执行总初始化
 109          输入:    无
 110          输出:    无
 111          修改日志:
 112          ***************************************************************************/
 113          void Init_Device(void)
 114          {       
 115   1              P1=0x00;
 116   1          PCA_Init();    
 117   1              Port_IO_Init();
C51 COMPILER V8.16   MAIN                                                                  12/27/2008 15:34:42 PAGE 3   

 118   1          Oscillator_Init();
 119   1          Interrupts_Init();
 120   1      }
 121          
 122          /***************************************************************************
 123          函数名称:PCA_ISR (void) interrupt 11
 124          简要描述:PCA中断服务程序
 125          输入:    无
 126          输出:    无
 127          修改日志:
 128          ***************************************************************************/
 129          void PCA_ISR (void) interrupt 11 
 130          {
 131   1              EA=0;
 132   1              if (CCF0)
 133   1              {               
 134   2                      if (CEX0 == 0) // 下降沿跳变
 135   2                      {
 136   3                              P2 = 0x01; // 除第一通道RTS1外RTS2~RTS5置低电平
 137   3                              P2 = 0x01; // 除第一通道RTS1外RTS2~RTS5置低电平
 138   3                              P2 = 0x01; // 除第一通道RTS1外RTS2~RTS5置低电平
 139   3                              TXD_BUS = 0;      // 发送总线跟随跳变
 140   3                      }
 141   2                      else               // 上升沿跳变
 142   2                      {
 143   3                              TXD_BUS = 1; // 发送总线跟随跳变
 144   3                              TXD_BUS = 1; // 发送总线跟随跳变
 145   3                              TXD_BUS = 1; // 发送总线跟随跳变
 146   3                              P2 = 0xff; // 所有通道恢复为高电平
 147   3                      }
 148   2                      CCF0 = 0;
 149   2                      CCF4 = 0;
 150   2                                                                              
 151   2              }
 152   1      
 153   1              if (CCF1)
 154   1              {       
 155   2                      if (CEX1 == 0) // 下降沿跳变
 156   2                      {
 157   3                              P2 = 0x02; // 除第二通道RTS2外RTS1~RTS5置低电平
 158   3                              P2 = 0x02; // 除第二通道RTS2外RTS1~RTS5置低电平
 159   3                              P2 = 0x02; // 除第二通道RTS2外RTS1~RTS5置低电平
 160   3                              TXD_BUS = 0;
 161   3                      }
 162   2                      else               // 上升沿跳变
 163   2                      {
 164   3                              TXD_BUS = 1;
 165   3                              TXD_BUS = 1;
 166   3                              TXD_BUS = 1;
 167   3                              P2 = 0xff; // 所有通道恢复为高电平
 168   3                      }               
 169   2                      CCF1 = 0;
 170   2                      CCF4 = 0;
 171   2              } 
 172   1      
 173   1              if (CCF2)
 174   1              {               
 175   2                      if (CEX2 == 0) // 下降沿跳变
 176   2                      {
 177   3                              P2 = 0x04; // 除第一通道RTS1外RTS2~RTS5置低电平
 178   3                              P2 = 0x04; // 除第一通道RTS1外RTS2~RTS5置低电平
 179   3                              P2 = 0x04; // 除第一通道RTS1外RTS2~RTS5置低电平
C51 COMPILER V8.16   MAIN                                                                  12/27/2008 15:34:42 PAGE 4   

 180   3                              TXD_BUS = 0;      // 发送总线跟随跳变
 181   3                      }
 182   2                      else               // 上升沿跳变
 183   2                      {
 184   3                              TXD_BUS = 1; // 发送总线跟随跳变
 185   3                              TXD_BUS = 1; // 发送总线跟随跳变
 186   3                              TXD_BUS = 1; // 发送总线跟随跳变
 187   3                              P2 = 0xff; // 所有通道恢复为高电平
 188   3                      }
 189   2                      CCF2 = 0;                                                       
 190   2                      CCF4 = 0;
 191   2              }
 192   1      
 193   1              if (CCF3)
 194   1              {
 195   2                      if (CEX3 == 0) // 下降沿跳变
 196   2                      {
 197   3                              P2 = 0x08; // 除第四通道RTS4外RTS1~RTS5置低电平
 198   3                              P2 = 0x08; // 除第四通道RTS4外RTS1~RTS5置低电平
 199   3                              P2 = 0x08; // 除第四通道RTS4外RTS1~RTS5置低电平
 200   3                              TXD_BUS = 0;
 201   3                      }
 202   2                      else               // 上升沿跳变
 203   2                      {
 204   3                              TXD_BUS = 1;
 205   3                              TXD_BUS = 1;
 206   3                              TXD_BUS = 1;
 207   3                              P2 = 0xff; // 所有通道恢复为高电平
 208   3                      }               
 209   2                      CCF3 = 0;
 210   2                      CCF4 = 0;
 211   2              }
 212   1      
 213   1              if (CCF4)
 214   1              {
 215   2                      if (CEX4 == 0) // 下降沿跳变
 216   2                      {
 217   3                              P2 = 0x10; // 除第五通道RTS5外RTS1~RTS5置低电平
 218   3                              P2 = 0x10; // 除第五通道RTS5外RTS1~RTS5置低电平
 219   3                              P2 = 0x10; // 除第五通道RTS5外RTS1~RTS5置低电平
 220   3                              TXD_BUS = 0;
 221   3                      }
 222   2                      else               // 上升沿跳变
 223   2                      {
 224   3                              TXD_BUS = 1;
 225   3                              TXD_BUS = 1;
 226   3                              TXD_BUS = 1;
 227   3                              P2 = 0xff; // 所有通道恢复为高电平
 228   3                      }               
 229   2                      CCF4 = 0;
 230   2              }
 231   1              EA = 1;
 232   1      }
 233          /***************************************************************************
 234          函数名称:ComDisplay()
 235          简要描述:RXD通道运行状态显示,COMn_OK = 0正常,1不正常
 236          输入:    无
 237          输出:    无
 238          修改日志:
 239          ***************************************************************************/
 240          void Com1Display()

⌨️ 快捷键说明

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