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

📄 serial.lst

📁 proteus仿真的单片机串口通信
💻 LST
字号:
C51 COMPILER V7.07   SERIAL                                                                08/06/2007 09:22:44 PAGE 1   


C51 COMPILER V7.07, COMPILATION OF MODULE SERIAL
OBJECT MODULE PLACED IN Serial.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil2\C51\BIN\C51.EXE Serial.C BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <reg51.h>
   2          #include "LM016L.H"
   3          
   4          unsigned char RData[17],j;
   5          unsigned char TData[] = "INT0 Interrupt .";
   6          unsigned char *str;
   7          
   8          ////////////////// LCD ////////////////////////
   9          
  10          //初始化LCD
  11          void LCD_Initial()
  12          {
  13   1              LCDE = 0;
  14   1              LCD_Write(LCDCOMMAND,0x38);
  15   1              LCD_Write(LCDCOMMAND,0x38);
  16   1              LCD_SetDisplay(LCDSHOW | LCDNOCURSOR);
  17   1              LCD_Write(LCDCOMMAND,LCDCLEARSCREEN);
  18   1              LCD_SetInput(LCDACUP | LCDNOMOVE);
  19   1      }
  20          //内部等待函数
  21          unsigned char LCD_Wait(void)
  22          {
  23   1              LCDRS = 0;
  24   1              LCDRW = 1;
  25   1              _nop_();
  26   1              LCDE  = 1;
  27   1              _nop_();
  28   1              //while(LCDDB & 0x80);
  29   1              LCDE = 0;
  30   1              return LCDDB;
  31   1      }
  32          //向LCD写入命令或数据
  33          void LCD_Write(bit style, unsigned char input)
  34          {
  35   1              LCDE = 0;
  36   1              LCDRS = style;
  37   1              LCDRW = 0;
  38   1              _nop_();
  39   1              LCDDB = input;
  40   1              _nop_();
  41   1              LCDE = 1;
  42   1              _nop_();
  43   1              LCDE = 0;
  44   1              _nop_();
  45   1              LCD_Wait();
  46   1      }
  47          //设置显示模式
  48          void LCD_SetDisplay(unsigned char DisplayMode)
  49          {
  50   1              LCD_Write(LCDCOMMAND,0x08 | DisplayMode);
  51   1      }
  52          //设置输入模式
  53          void LCD_SetInput(unsigned char InputMode)
  54          {
  55   1              LCD_Write(LCDCOMMAND,0x04 | InputMode);
C51 COMPILER V7.07   SERIAL                                                                08/06/2007 09:22:44 PAGE 2   

  56   1      }
  57          void GotoXY(unsigned char x, unsigned char y)
  58          {
  59   1              if(y == 0)
  60   1              {
  61   2                      LCD_Write(LCDCOMMAND,0x80 | x);
  62   2              }
  63   1              if(y == 1)
  64   1              {
  65   2                      LCD_Write(LCDCOMMAND,0x80 | (x - 0x40));
  66   2              }
  67   1      }
  68          void Print(unsigned char *str)
  69          {
  70   1              while(*str != '\0')
  71   1              {
  72   2                      LCD_Write(LCDDB,*str);
  73   2                      str++;
  74   2              }
  75   1      }
  76          
  77          ////////////////// 80C51 ////////////////////////
  78          
  79          void Timer1_Initial()
  80          {
  81   1              TMOD = 0x20;                    // 定时器1工作于8位自动重载模式, 用于产生波特率
  82   1              TH1 = 0xFD;                             // 波特率9600
  83   1              TL1 = 0xFD;
  84   1              
  85   1              SCON = 0x50;                    // 设定串行口工作方式  
  86   1              PCON &= 0xef;                   // 波特率不倍增
  87   1                      
  88   1              TR1 = 1;                                // 启动定时器1
  89   1              ES = 1;                                 // 允许串口中断中断
  90   1              EA = 1;
  91   1      }
  92          
  93          void INT0_Initial()
  94          {
  95   1              EX0 = 1;              // INT0中断开
  96   1              IT0 = 1;              // INT0低电平触发(为1则为下降沿触发)
  97   1              EA  = 1;
  98   1      }
  99          
 100          void Timer1_interrupt() interrupt 4
 101          {
 102   1              EA = 0;
 103   1              RI = 0;
 104   1              RData[j] = SBUF;
 105   1              j++;
 106   1              EA = 1;
 107   1      }
 108          
 109          void INT0_interrupt() interrupt 0
 110          {
 111   1              EA = 0;
 112   1              str = TData;
 113   1              while(*str != '\0')
 114   1              {
 115   2                      TI = 0;
 116   2                      SBUF = *str;
 117   2                      while(!TI);
C51 COMPILER V7.07   SERIAL                                                                08/06/2007 09:22:44 PAGE 3   

 118   2                      TI = 0;
 119   2                      str++;
 120   2              }
 121   1              EA = 1;
 122   1      }
 123          
 124          ////////////////// main ////////////////////////
 125          
 126          void main()
 127          {
 128   1              LCD_Initial();
 129   1              Timer1_Initial();
 130   1              INT0_Initial();
 131   1              
 132   1              while(1)
 133   1              {               
 134   2                      if(j > 15)
 135   2                      {
 136   3                              GotoXY(0,0);
 137   3                              RData[16] = '\0';
 138   3                              Print(RData);
 139   3                              j = 0;
 140   3                      }       
 141   2              }
 142   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    329    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     38       1
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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