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

📄 pc51.lst

📁 C51串口程序
💻 LST
字号:
C51 COMPILER V7.00  PC51                                                                   04/08/2006 16:21:11 PAGE 1   


C51 COMPILER V7.00, COMPILATION OF MODULE PC51
OBJECT MODULE PLACED IN pc51.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE pc51.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include "reg52.h"
   2          
   3          #define TimeLen 2000                    // 定时器定时时间长度   
   4          
   5          unsigned short  Loop_Num  ;             // 转动圈数
   6          unsigned char   Led_Buf[4] ={1,2,3,4};  // 存放数码管显示的数
   7          unsigned char   Led_Sel = 0 ;   // 动态扫描中选中的数码管号     
   8          
   9          #define LEDDAT_P        P0                      // 数码管数据管脚
  10          #define LEDSEL_P        P2              // 数码管使能选择管脚
  11          
  12          #define LED_NUM         4                       // 数码管个数
  13          #define uint8  unsigned char
  14          #define uint32 unsigned int
  15          #define Baud   9600
  16          #define fosc   11059200 
  17          
  18          bit Tx_Flag ;     // 发送结束标志位 ,0:发送结束     1:正在发送
  19          bit Rx_Flag ;     // 接收结束标志位 ,0:正在接收     1:接收完一条完整的指令
  20          bit Rx_Start ;     // 接收到开始符
  21          
  22          
  23          
  24          uint8 RxLen=0 ;
  25          
  26          
  27          
  28          // 数码管数
  29          code  uint8 LED_CODE[21]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
  30            0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0xbf};
  31          void InitCom( void );
  32          // 定时器0初始
  33          void  Time0Init(void)
  34          {
  35   1              TMOD= 0x01 ;
  36   1              TR0= 1 ;
  37   1              ET0= 1 ;
  38   1              EA= 1 ;
  39   1              TL0= ( 65536-TimeLen ) % 256 ;
  40   1              TH0= ( 65536-TimeLen ) / 256 ;
  41   1      }
  42          // 串口模块
  43          
  44          
  45          //
  46          // 协议 :  起始码 ($ ) + 长度码 (该字节后面的总长度)+ 数据 + 结束符(#)
  47          //
  48          
  49          
  50          
  51          
  52          void InitCom( void )
  53          {
  54   1      
  55   1              uint32 temp ;
C51 COMPILER V7.00  PC51                                                                   04/08/2006 16:21:11 PAGE 2   

  56   1      
  57   1              SCON = 0x50 ;                   // 串口模式1,10位模式
  58   1               // T2 初始化
  59   1              T2CON = 0X34 ;
  60   1              PCON = 0 ;
  61   1              temp = fosc;
  62   1              temp = temp / 32 / Baud ;       // 获取波特率相应的计数值
  63   1              temp = 0xffff - temp ;
  64   1              RCAP2H = temp>>8 ;
  65   1              RCAP2L = temp&0xff ;
  66   1      
  67   1              ES = 1 ;                        // 启用串口中断
  68   1              Tx_Flag = 0  ;
  69   1              Rx_Start = 0 ;
  70   1              Rx_Flag = 0 ;
  71   1      }
  72          
  73          //extern unsigned char  Led_Buf[4] ;
  74          uint8 bak_buf[4] ;
  75          // 串口
  76          void Com_Int( void ) interrupt 4
  77          {
  78   1              uint8 temp ;
  79   1      
  80   1              if(RI)
  81   1              {
  82   2                      RI = 0 ;
  83   2                    P1  = SBUF ;
  84   2                              /*      if( temp == '$')
  85   2                                      {
  86   2                                              Rx_Start = 1 ;  
  87   2                          RxLen = 0 ;               // 数据接收数组下标归零
  88   2                      }
  89   2                                      else if( Rx_Start == 1 )*/
  90   2                                      //{
  91   2                                      //      bak_buf[ RxLen ] = temp ;
  92   2                                              //RxLen++ ;
  93   2                                              /*if( RxLen == 4 )
  94   2                                              {
  95   2                                                      RxLen = 0 ;
  96   2                                                      Rx_Start = 0 ;
  97   2                                                      for( temp = 0 ; temp<4 ; temp++ ) Led_Buf[temp] = bak_buf[4] ;
  98   2                                              }
  99   2                                      }*/
 100   2                                
 101   2              }
 102   1              /*if(TI)
 103   1              {
 104   1                      TI = 0 ;
 105   1                      Tx_Flag = 0 ;
 106   1              }*/
 107   1      }
*** WARNING C280 IN LINE 78 OF PC51.C: 'temp': unreferenced local variable
 108          
 109          
 110          
 111           // 每20毫秒调用 动态扫描
 112          void timer0(void) interrupt 1
 113          {
 114   1      
 115   1              TL0= ( 65536-TimeLen ) % 256 ;
 116   1              TH0= ( 65536-TimeLen ) / 256 ;
C51 COMPILER V7.00  PC51                                                                   04/08/2006 16:21:11 PAGE 3   

 117   1       
 118   1              LEDSEL_P = 0;
 119   1              LEDDAT_P = ~LED_CODE[Led_Buf[Led_Sel]] ;                // 动态扫描显示
 120   1              LEDSEL_P = 0x01 << Led_Sel ;
 121   1              Led_Sel++;
 122   1              if( Led_Sel == LED_NUM )Led_Sel=0;
 123   1      
 124   1      
 125   1      }
 126          main()
 127          {
 128   1              Time0Init() ;
 129   1              InitCom() ;
 130   1              while(1);
 131   1      }
 132          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    167    ----
   CONSTANT SIZE    =     21    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     12       1
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      3    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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