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

📄 serial.lst

📁 51串口通讯程序
💻 LST
字号:
C51 COMPILER V8.02   SERIAL                                                                02/25/2008 00:02:16 PAGE 1   


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

line level    source

   1          #include <reg52.h>
   2          
   3          unsigned char revbuf;//接收到的字符
   4          unsigned char number;
   5          unsigned code cash = '9';
   6          unsigned char copyOK,re_finish;
   7          //串口初始化
   8          void initial()
   9          {
  10   1         SCON=0x50;           //串口工作方式1,允许接收
  11   1         PCON=0x80;           //波特率翻倍
  12   1         TCON=0;              
  13   1         TMOD=0x26;           //T1用于串口波特率控制
  14   1         TL1=0xfa;            //初始化T1,波特率为9600(晶振11.0592M)
  15   1         TH1=0xfa;                    
  16   1         TR1=1;               //开定时器
  17   1         EA=1;                //开总中断
  18   1         ES=1;                //开串口中断
  19   1         copyOK=0;
  20   1         re_finish=0;
  21   1      }
  22          
  23          
  24          void  send(void)//向串口发送字符串
  25           { 
  26   1         
  27   1         if(copyOK)  //串口准备好且缓冲区准备好
  28   1          { 
  29   2           REN = 0;               //发送过程中禁止接收数据
  30   2           copyOK = 0;            //清缓冲区准备好标志
  31   2           SBUF = cash;      //发送字符串首字符
  32   2           number = 0;            //置发送计数器
  33   2            }
  34   1         else
  35   1             return;              //没准备好则返回
  36   1        }
  37          //串口中断处理函数_接收数据
  38          void serial(void) interrupt 4//串口中断响应
  39          {  
  40   1        if(RI)//为接收中断
  41   1           {      
  42   2                    RI=0;                                         //清接收中断标志
  43   2                    revbuf = SBUF;                                                            //读取串口缓冲区数据
  44   2                        revbuf=revbuf-'0';
  45   2                        re_finish=1;
  46   2               }
  47   1        else
  48   1        { 
  49   2           TI=0;                   //为单个字符发送完中断
  50   2           if(!number)             //字符串发送完
  51   2           {
  52   3                 REN = 1;              //允许接收
  53   3           }
  54   2           else
  55   2               {                       //字符串未发送完
C51 COMPILER V8.02   SERIAL                                                                02/25/2008 00:02:16 PAGE 2   

  56   3              SBUF =  cash;   //发送下一字符
  57   3                      number--;            //发送字符数减一
  58   3           }             
  59   2         }                              
  60   1      }
  61          
  62          main()
  63          {
  64   1               initial();
  65   1               while(1)
  66   1               {
  67   2                 if(re_finish)
  68   2                 {
  69   3                   re_finish=0;
  70   3                       switch(revbuf)
  71   3                       {
  72   4                       case 0:
  73   4                          P0=0xfe;
  74   4                              break;
  75   4                       case 1:
  76   4                          P0=0xfd;
  77   4                              break;
  78   4                       case 2:
  79   4                          P0=0xfb;
  80   4                              break;
  81   4                       case 3:
  82   4                          P0=0xf7;
  83   4                              break;
  84   4                       case 4:
  85   4                          P0=0xef;
  86   4                              break;
  87   4                       case 5:
  88   4                          P0=0xdf;
  89   4                              break;
  90   4                       case 6:
  91   4                          P0=0xbf;
  92   4                              break;
  93   4                       case 7:
  94   4                          P0=0x7f;
  95   4                              break;
  96   4                       default:
  97   4                          P0=0xff;
  98   4                              break;
  99   4                   }
 100   3                       copyOK=1;
 101   3                       send();
 102   3                 }
 103   2               }
 104   1      }
 105          
 106          
 107          
 108          
 109          
 110          
 111          
 112          
 113          
 114          
 115          
 116          
 117          
C51 COMPILER V8.02   SERIAL                                                                02/25/2008 00:02:16 PAGE 3   

 118          
 119          
 120          
 121          
 122          


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