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

📄 test.lst

📁 52单片机开发板的实例程序
💻 LST
字号:
C51 COMPILER V9.00   TEST                                                                  10/16/2011 14:30:12 PAGE 1   


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

line level    source

   1          #include<reg52.h>
   2          #define uchar unsigned char
   3          #define uint unsigned int
   4          sbit rs=P1^0;
   5          sbit rw=P1^1;
   6          sbit en=P1^2;
   7          sbit beer=P3^6;
   8          uchar code a[]="Dis=000cm";
   9          uchar num=0,get[2]={0};
  10          bit flag=0;
  11          void delay(uint z)
  12          {
  13   1              uint x,y;
  14   1              for(x=z;x>0;x--)
  15   1              for(y=110;y>0;y--);
  16   1      } 
  17          void delayus(uint i)
  18          {
  19   1              while(i)i--;
  20   1      }
  21          void write1602_command(uchar command)//写指令子函数
  22          {
  23   1         rs=0;
  24   1         rw=0;
  25   1         P2=command;
  26   1         delay(1);
  27   1         en=0;
  28   1         delay(2);
  29   1         en=1;
  30   1      }
  31          void write1602_data(uchar date)//写数据子函数
  32          {
  33   1         rs=1;
  34   1         rw=0;
  35   1         P2=date;
  36   1         delay(1);
  37   1         en=0;
  38   1         delay(2);
  39   1         en=1;
  40   1      }
  41          void init()
  42          {       
  43   1              en=0;
  44   1              rw=0;
  45   1              write1602_command(0x38);
  46   1              write1602_command(0x01);
  47   1              write1602_command(0x0c);
  48   1              write1602_command(0x06);
  49   1              write1602_command(0x80);
  50   1      }       
  51          void display(uint s)
  52          {
  53   1               write1602_command(0x84);
  54   1               write1602_data(s%10000/1000+0x30);
  55   1               write1602_data(s%1000/100+0x30);
C51 COMPILER V9.00   TEST                                                                  10/16/2011 14:30:12 PAGE 2   

  56   1               write1602_data(s%100/10+0x30);
  57   1               //write1602_data(0x2e);
  58   1               //write1602_data(s%10+0x30);   
  59   1      }
  60          void SysInit()
  61          {
  62   1              init();
  63   1              TMOD=0x20;//设置定时器1为工作方式2
  64   1              TH1=0xfd;//设置串口通信的波特率为9600
  65   1              TL1=0xfd;
  66   1              TR1=1;//开启定时器1
  67   1              SM0=0;
  68   1              SM1=1;
  69   1              REN=1;
  70   1              EA=1;
  71   1              ES=1;   
  72   1      }
  73          void send_uart(uchar dat)
  74          {
  75   1        SBUF=dat;
  76   1        while(!TI);
  77   1        TI=0;
  78   1      }
  79          void main()
  80          {               
  81   1              uchar i;
  82   1              uint dis=0;
  83   1              SysInit();
  84   1              write1602_command(0x80);
  85   1              for(i=0;a[i]!='\0';i++)
  86   1              {
  87   2                      write1602_data(a[i]);
  88   2                      delay(6);
  89   2              }
  90   1                while(1)
  91   1                      {
  92   2                        send_uart(0x55);
  93   2                        delay(500);//500ms更新一次,根据你的需要修改延时参数          
  94   2                        if(flag)
  95   2                        {
  96   3                              flag=0;
  97   3                              dis=get[0]*256+get[1];
  98   3                              display(dis);
  99   3                              if(dis<200)       //小于20CM则蜂鸣器响
 100   3                                beer=0;
 101   3                              else
 102   3                                beer=1;
 103   3                              delay(10);
 104   3                              ES=1;
 105   3                        }
 106   2                      }
 107   1              
 108   1      }
 109          void IsrUart() interrupt 4
 110          {
 111   1              ES=0;
 112   1              if(RI)
 113   1              {
 114   2                      RI=0;
 115   2                      get[num++]=SBUF;
 116   2                      if(num>1)
 117   2                      {
C51 COMPILER V9.00   TEST                                                                  10/16/2011 14:30:12 PAGE 3   

 118   3                              ES=0;
 119   3                              num=0;
 120   3                              flag=1;
 121   3                      }
 122   2                      else
 123   2                              ES=1; 
 124   2              }
 125   1              else 
 126   1                ES=1;
 127   1      }


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