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

📄 txd8951.lst

📁 两个单片机之间的通信
💻 LST
字号:
C51 COMPILER V8.15   TXD8951                                                               10/20/2008 22:31:59 PAGE 1   


C51 COMPILER V8.15, COMPILATION OF MODULE TXD8951
OBJECT MODULE PLACED IN txd8951.OBJ
COMPILER INVOKED BY: D:\4-Keil C51 v8.15\C51\BIN\C51.EXE txd8951.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*******************************************************************************
   2           *
   3            * 文件名称:txd8951.c
   4           *
   5            * 功能描述:串口发送数据。
   6           *                        发起通信请求(发送呼叫号),等待应答
   7                                    接收到应答号,通信建立,开始数据传输         
   8           *
   9            * 开发环境:IDE为Keil uVision3 v8.09a。MCU为AT89S52,晶振频率12M。
  10           *
  11            * 文件版本 v1.0
  12           *
  13            * 创建时间:2008/10/20
  14           *
  15            * 修改记录:无
  16           *
  17           ******************************************************************************/
  18          #include <reg51.h>
  19          //#define uchar unsigned char
  20          //#define uint unsigned int
  21          /*******************************************************************************
  22           *
  23           * 描述: 串口通信初始化,设置串口工作在模式1下,接收使能,使用Timer1工作在模式2下,
  24           *               波特率2400
  25           *
  26           * 参数: 无
  27           *
  28           * 返回: 无
  29           *
  30           ******************************************************************************/
  31          void init_serialcom()
  32          {       SCON=0x50;      //设置串口工作在模式1下,接收使能
  33   1              TMOD=0x20;      //使用Timer1工作在模式2下
  34   1              TH1=0xF3;       //波特率2400
  35   1              TL1=0xF3;
  36   1              TR1=1;          //启动Timer1
  37   1      }
  38          /*******************************************************************************
  39           *
  40           * 描述: 向串口发送一个字符或一个字节。
  41           *
  42           * 参数: ch      待发送字符或字节
  43           *
  44           * 返回: 无
  45           *
  46           ******************************************************************************/
  47          void send_char_com(unsigned char ch)
  48          {       SBUF=ch;                //发送ch
  49   1              while(TI==0);  //等待发送完毕(TI=1)
  50   1              TI=0;
  51   1      }
  52          /*******************************************************************************
  53           *
  54           * 描述: 向串口发送一个字符串或多个字节。
  55           *
C51 COMPILER V8.15   TXD8951                                                               10/20/2008 22:31:59 PAGE 2   

  56           * 参数: str      待发送字符串或多字节首地址
  57           *               strlen   待发送字符串或多字节长度
  58           *
  59           * 返回: 无
  60           *
  61           ******************************************************************************/
  62          void send_string_com(unsigned char *str,unsigned int strlen)
  63          {       unsigned int k=0;
  64   1              do
  65   1              {
  66   2                      send_char_com(*(str+k));
  67   2                      k++;
  68   2              }while(k<strlen);
  69   1      }
  70                                  
  71          
  72          main()
  73          {       unsigned char response;   //判断通信是否建立用
  74   1              //bit flag=0;                                     //发送标志位,由形参传递,flag=1是发送,flag=0不发送
  75   1              unsigned char num;                        //待发送数据
  76   1              init_serialcom();                         //串口通信初始化
  77   1              
  78   1              do
  79   1              {       SBUF=0x99;                                //发送呼叫号99H
  80   2                      while(!TI);                               //判断是否发送完毕,完毕(TI=1)开始接收应答
  81   2                      TI=0;
  82   2                      while(!RI);                               //串口接收到数据(RI=1)
  83   2                      RI=0;                                     //
  84   2                      response=SBUF;                    //
  85   2              }while(response!=0x01);           //判断接收到的数据是否为应答号01H。如果不是正确的应答号,就重呼
  86   1              
  87   1              while(1)
  88   1              {       P2=0x00;
  89   2                      //flag=0;
  90   2                      if(P2!=0x00)                      //有按键按下,发送相应按键值
  91   2                      {       switch(P2)                        //取按键值,并进行相应转换,将P2口的按键值转换为1~8的数据
  92   3                              {       case 0x01:num=0x01;break;
  93   4                                      case 0x02:num=0x02;break;
  94   4                                      case 0x04:num=0x03;break;
  95   4                                      case 0x08:num=0x04;break;
  96   4                                      case 0x10:num=0x05;break;
  97   4                                      case 0x20:num=0x06;break;
  98   4                                      case 0x40:num=0x07;break;
  99   4                                      case 0x80:num=0x08;break;
 100   4                              }
 101   3                              //flag=1;                                //发送标志位置1
 102   3                              send_char_com(num);//serial_send(flag,num) ;
 103   3                      }
 104   2              }
 105   1      }


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