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

📄 rs232_def.lst

📁 主要是can工业总线方面的应用程序
💻 LST
字号:
C51 COMPILER V7.06   RS232_DEF                                                             11/17/2007 20:50:58 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE RS232_DEF
OBJECT MODULE PLACED IN C:\VW\MY_PRO~1\CAN_PR~1\LAB2\RS232_DEF.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE C:\VW\MY_PRO~1\CAN_PR~1\LAB2\RS232_DEF.C DB SB OE

stmt level    source

   1          /*
   2          *本程序主要功能:数码管上显示计数,485总线实时连接这两个模块使显示同步
   3          *485总线是半双工的
   4          *本程序采用硬件波特率19200(Baud2:Baud0)= 001
   5          *INT0按键为计数复位按键*
   6          *T1按键为计数按键*
   7          */
   8          
   9          //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
  10          //描述:                                                                       
  11          //      该程序INT0按键程序+显示程序+RS232通讯                                  &
  12          //      通讯波特率:19200                                                       &
  13          //      每次收发一个字节                                                       &
  14          
  15          //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
  16          //【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息!                   &
  17          //【声明】 作者: PIAE小组                                                      &
  18          
  19          #include <reg52.h>
  20          #include <intrins.h>
  21          #include <RS232_def.h>
*** WARNING C318 IN LINE 21 OF C:\VW\MY_PRO~1\CAN_PR~1\LAB2\RS232_DEF.C: can't open file 'RS232_def.h'
  22          
  23          
  24          void INT0_Counter( void ) interrupt 0 using 1
  25          {//INT0按键为计数按键
  26   1          EA = 0;
  27   1          Show_Data++; //计数单元加1
*** ERROR C202 IN LINE 27 OF C:\VW\MY_PRO~1\CAN_PR~1\LAB2\RS232_DEF.C: 'Show_Data': undefined identifier
  28   1          TXD_flag = 1;//置要发送标志位
*** ERROR C202 IN LINE 28 OF C:\VW\MY_PRO~1\CAN_PR~1\LAB2\RS232_DEF.C: 'TXD_flag': undefined identifier
  29   1          EA = 1;
  30   1      }
  31          
  32          
  33          void RS232_RXD( void ) interrupt 4   using 1
  34          {//接收数据函数,在中断服务程序中调用
  35   1          EA = 0;//关闭所有中断
  36   1          ES = 0;//关闭串口
  37   1          if(RI==1)
  38   1          {
  39   2              RI = 0;
  40   2              RX_data = SBUF;
*** ERROR C202 IN LINE 40 OF C:\VW\MY_PRO~1\CAN_PR~1\LAB2\RS232_DEF.C: 'RX_data': undefined identifier
  41   2              RXD_flag = 1;//置接收到数据标志
*** ERROR C202 IN LINE 41 OF C:\VW\MY_PRO~1\CAN_PR~1\LAB2\RS232_DEF.C: 'RXD_flag': undefined identifier
  42   2          }
  43   1          _nop_();
  44   1          ES = 1;//打开串口
  45   1          EA = 1;//打开中断
  46   1      }
  47          //*******************************************************
  48          
  49          void main(void)
  50          {
C51 COMPILER V7.06   RS232_DEF                                                             11/17/2007 20:50:58 PAGE 2   

  51   1          CPU_init();
  52   1          _nop_();
  53   1          while(1)
  54   1          {
  55   2              NOPS;
  56   2      //////////////////////// 接收处理程序/////////////////////////////////
  57   2              if( RXD_flag )
  58   2              {
  59   3                  EA = 0;//关闭CPU中断
  60   3                  LED_RED = !LED_RED;//指示灯状态变化
  61   3                  RXD_flag = 0;//清除标志
  62   3                  Show_Data = RX_data;//接收对方发送的数据
  63   3                  EA = 1;
  64   3              }
  65   2      ///////////////////////发送处理程序/////////////////////////////////
  66   2              if( TXD_flag )
  67   2              {
  68   3                  EA = 0;
  69   3                  LED_GRE = !LED_GRE;//指示灯状态变化
  70   3                  TXD_flag = 0;
  71   3                  TX_data  = Show_Data;//给发送的数据赋值
  72   3                  RS232_TXD();
  73   3                  _nop_();
  74   3                  EA = 1;
  75   3              }
  76   2      ///////////////////////数码管显示程序/////////////////////////////////
  77   2              led_seg7(1,Show_Data);
  78   2      ///////////////////////数码管显示程序/////////////////////////////////
  79   2          }//while 结束
  80   1      }//main结束
  81          
  82          
  83          void Delay(uchar delay_time)
  84          {//延时程序
  85   1          while(delay_time--)
  86   1          {}
  87   1      }
  88          
  89          
  90          void CPU_init(void)
  91          {//初始化CPU
  92   1          SCON = 0x50; //串口方式1
  93   1          PCON = 0x80; //串口波特率加速
  94   1          TMOD = 0x21;
  95   1          TH1=0xFD; //19200bps
  96   1          TL1=0xFD;
  97   1          TR1 = 1;
  98   1          TI = 0;
  99   1          RI = 0;
 100   1          PS = 1;      //串口中断的优先级设为最高
 101   1      
 102   1          IT0 = 1;//外部中断0负边沿触发
 103   1          EX0 = 1;//打开外部中断0
 104   1      
 105   1          ES  = 1;//打开串口中断
 106   1          EA = 1; //打开总中断
 107   1          SJA1000_CS = 1;//片选无效
 108   1      }
 109          
 110          void RS232_TXD( void )
 111          {
 112   1          EA = 0;//关闭所有中断
C51 COMPILER V7.06   RS232_DEF                                                             11/17/2007 20:50:58 PAGE 3   

 113   1          ES = 0;//关闭串口中断,采用查询发送方式
 114   1          TI = 1;
 115   1          while(TI)
 116   1          {
 117   2              TI = 0;//一字节发送完后清除标志位
 118   2              SBUF = TX_data;
 119   2              while(!TI)
 120   2              {}//等待发送
 121   2              TI = 0;
 122   2          }
 123   1          _nop_();
 124   1          ES = 1;//打开串口中断
 125   1          EA = 1;//打开中断
 126   1      }
 127          
 128          void led_seg7(uchar from,uchar number)  
 129          {//from(1_4):数码管显示起始位置(从右到左),number:显示的数
 130   1          uchar digit,temp_l;
 131   1          uchar temp_h=0x7f;
 132   1          temp_h = _cror_(temp_h,from-1);   //确定从哪一位开始显示,即确定高四位
 133   1          temp_h = temp_h & 0xf0;           //取高四位
 134   1          temp_l = P2 & 0x0f;               //取P2的低四位
 135   1          P2 = temp_h | temp_l;             //设定P2口
 136   1      
 137   1          if(number==0)
 138   1              P0 = led[0];
 139   1          else
 140   1          {
 141   2              while(number)
 142   2              {
 143   3                  digit = number%10 ;
 144   3                  number /= 10;
 145   3                  P0 = led[digit] ;
 146   3                  Delay(10);
 147   3                  temp_h = P2 & 0xf0;               //取P2的高四位
 148   3                  temp_h = temp_h | 0x0f;           //拼装 temp_h,进行位选
 149   3                  temp_h = _cror_(temp_h,1);
 150   3                  temp_h = temp_h & 0xf0;           //取高四位
 151   3                  temp_l = P2 & 0x0f;               //取P2的低四位
 152   3                  P0 = 0xff;
 153   3                  P2 = temp_h | temp_l;             //设定P2口
 154   3              }//while结束
 155   2          }//else结束
 156   1      }

C51 COMPILATION COMPLETE.  1 WARNING(S),  4 ERROR(S)

⌨️ 快捷键说明

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