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

📄 main.lst

📁 本程序可以实现串口通信及液晶显示功能
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   MAIN                                                                  07/21/2006 15:57:40 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\output\MAIN.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE src\MAIN.C ROM(SMALL) OPTIMIZE(9,SPEED) BROWSE DEBUG OBJECTEXTEND PRINT(.\M
                    -AIN.lst) OBJECT(.\output\MAIN.obj)

line level    source

   1          //==================================================
   2          //程序以89c2051为基础,串行口以19200波特率(11.059M晶振)
   3          //==================================================
   4          #include ".\main.h"
   5          #include <math.h>   
   6          
   7          #define DataPort P1                // 数据端口
   8          #define Busy    0x80
   9          
  10          // 控制引脚定义,不同的连接必须修改的部分
  11          sbit RS=P3^5;
  12          sbit RW=P3^4;
  13          sbit Elcm=P3^7; 
  14          
  15          //sbit UP = P3^0;
  16          //sbit DOWN = P3^1;
  17          
  18          //------------------0123456789abcdef---------------------------------                            
  19          code char exampl[]="Time:   :  :    ";
  20          
  21           
  22          union word_union
  23          {
  24                  WORD w;
  25                  BYTE b[2];
  26          };
  27          
  28          
  29          bit     r_done;
  30          bit             flash;             //20041205
  31          bit             flash_sec;      
  32          bit             flash_min;
  33          bit             flash_hour;
  34          
  35          byte code TABLE[] = {0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
  36          byte data Clock[3]  = {0,0,0};
  37          byte Number;
  38          byte    time_set;
  39          data word p;
  40          
  41          
  42          
  43          bit  gBt_TxBusy;
  44          data BYTE gB_RxIndex;
  45          data BYTE gBa_DebugBuf[RXDBUFSIZE];
  46          
  47          data    word    gB_T1count;    //0.5ms一个单位;
  48          data    word    gB_T2count;
  49          
  50          byte obj_speed;
  51          byte avg_speed;
  52          
  53          byte data RxCt;
  54          byte data RxBuf[10];
C51 COMPILER V7.50   MAIN                                                                  07/21/2006 15:57:40 PAGE 2   

  55          
  56          void Init8051Regs(void);
  57          void clearbuff(void);
  58          
  59          //--------------------------------------------------------------
  60          void WaitForEnable( void );
  61          void LcdWriteData( char dataW );
  62          void LcdWriteCommand( Uchar CMD,Uchar AttribC );
  63          void LcdReset( void );
  64          void Display( Uchar dd );
  65          void DispOneChar(Uchar x,Uchar y,Uchar Wdata);
  66          void ePutstr(Uchar x,Uchar y, Uchar code *ptr);
  67          
  68          void Delay5Ms(void);
  69           
  70          ///////////////////////////////////////////////////////////////////////////////
  71          //      void InitAll(void)                                                                     //
  72          ///////////////////////////////////////////////////////////////////////////////
  73          
  74          void Init8051Regs(void)
  75          {
  76   1        EA = 0;
  77   1      
  78   1      //SCON ----||----  SM0 SM1 SM2 REN TB8 RB8 T1 RI
  79   1                SCON  = 0x50;   // SCON: mode 1, 8-bit UART, enable rcvr 
  80   1                PCON |= 0x00;       
  81   1              
  82   1                TMOD |= 0x23;       // TMOD: timer 1, mode 2, 8-bit reload 
  83   1              //  TH1   = 0xf3;        // TH1:  reload value for 9600 baud @ 24MHz WINBOND
  84   1                TH1   = 0xfd;        // TH1:  4800 baud @ 11.0596MHz 89c2051
  85   1                TL1   = 0xfd;        //fd-->9600 fa-->4800 f4-->2400 0xe8-->1200
  86   1                TI    = 1;          // TI:   set TI to send first char of UART 
  87   1                ES = 1;
  88   1              //--------------------------
  89   1                TL0 = 0x47;      //  
  90   1                TR0  = 1;
  91   1                ET0 = 1;
  92   1              //---------------------------
  93   1                TH0 = 0x00;        //
  94   1                TR1   = 1;          // TR1:  timer 1 run */
  95   1                ET1   = 1;    //Disable timer 0 irq
  96   1      
  97   1        EA = 1;   // global interrupt enable on
  98   1      }
  99          
 100          
 101          /////////////////////////////////////////////////////////////
 102          //  Function:   Main()                                    //
 103          //  Description:     //
 104          //                             //
 105          //////////////////////////////////////////////////////////
 106          void main(void) 
 107          {
 108   1              Init8051Regs();
 109   1      
 110   1          LcdReset();
 111   1          Delay5Ms();
 112   1          ePutstr(0,0,exampl);        // 上面一行显示一个预定字符串
 113   1              Delay5Ms();
 114   1       
 115   1              r_done = 1;                     //20041205  有效计时
 116   1      
C51 COMPILER V7.50   MAIN                                                                  07/21/2006 15:57:40 PAGE 3   

 117   1              SBUF = 0x55;
 118   1      
 119   1        while ( 1 )               // Infinite loop
 120   1        {  
 121   2              multi_tasking();
 122   2        }
 123   1      }
 124          
 125          //=======================================
 126          //=Module Name: multi_tasking()         =
 127          //=Function:  task allocation     =
 128          //=======================================
 129          void multi_tasking(void)
 130          {
 131   1      byte bLen ;
 132   1                      if ( gB_RxIndex )
 133   1                      {
 134   2                              bLen = gB_RxIndex;
 135   2                              Delay1ms(1);
 136   2                              while ( gB_RxIndex > bLen )
 137   2                              {
 138   3                                      bLen = gB_RxIndex;
 139   3                                      Delay1ms(1);
 140   3                              }
 141   2      
 142   2                              switch ( gBa_DebugBuf[0] )
 143   2                              {
 144   3                                      case 'u':
 145   3                                              printf("uU");
 146   3                                              printB(0x13,1);
 147   3                                              clearbuff();
 148   3                                      break;
 149   3      
 150   3                                      case 'r':
 151   3                                      {       printf("EL\r\n");       clearbuff();    }
 152   3                                      break;
 153   3      
 154   3                                      case 't':
 155   3                                      {       printf("test done\r\n");        clearbuff();    }
 156   3                                      break;
 157   3      
 158   3                                      case 'E':
 159   3                                      {               printf("RCVOK\r\n");
 160   4                                                      printf("ERASEOK\r\n");
 161   4                                                      printf("EERR3\r\n");
 162   4                                                      printf("EERR4\r\n");
 163   4                                              clearbuff();
 164   4                                      }
 165   3                                      break;
 166   3                                                                      
 167   3                                      case 'R':
 168   3                                      {       printf("RCVOK\r\n");
 169   4                                                      printf("Unknow Flash");
 170   4                                              clearbuff();
 171   4                                      }
 172   3                                      break;
 173   3      
 174   3                                      case 'S':
 175   3                                      {               printf("SERR1\r\n");
 176   4                                                      printf("SERR2\r\n");
 177   4                                                      printf("SERR3\r\n");
 178   4                                                      printf("SERR4\r\n");
C51 COMPILER V7.50   MAIN                                                                  07/21/2006 15:57:40 PAGE 4   

 179   4                                              printf("RCVOK\r\n");
 180   4                                              clearbuff();
 181   4                                      }
 182   3                                      break;
 183   3      

⌨️ 快捷键说明

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