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

📄 main.lst

📁 51实例大全
💻 LST
字号:
C51 COMPILER V7.06   MAIN                                                                  06/07/2010 22:29:51 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\obj\main.obj
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND PRINT(.\obj\main.lst) OBJECT(.\obj\main.ob
                    -j)

stmt level    source

   1          /*-----------------------------------------------
   2            名称:DS18b20 温度检测液晶显示
   3            论坛:www.doflye.net
   4            编写:shifang
   5            日期:2009.5
   6            修改:无
   7            内容:
   8          ------------------------------------------------*/
   9          #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
  10          #include<stdio.h>
  11          #include "18b20.h"
  12          #include "1602.h"
  13          #include "delay.h"
  14          
  15          #define KeyPort P3 //定义按键端口
  16          
  17          bit ReadTempFlag;//定义读时间标志
  18          
  19          void Init_Timer0(void);//定时器初始化
  20          unsigned char KeyScan(void);//键盘扫描
  21          /*------------------------------------------------
  22                        串口通讯初始化
  23          ------------------------------------------------*/
  24          void UART_Init(void)
  25          {
  26   1          SCON  = 0x50;                       // SCON: 模式 1, 8-bit UART, 使能接收  
  27   1          TMOD |= 0x20;               // TMOD: timer 1, mode 2, 8-bit 重装
  28   1          TH1   = 0xFD;               // TH1:  重装值 9600 波特率 晶振 11.0592MHz  
  29   1          TR1   = 1;                  // TR1:  timer 1 打开                         
  30   1          //EA    = 1;                  //打开总中断
  31   1          //ES    = 1;                  //打开串口中断
  32   1              TI=1;
  33   1      }
  34          /*------------------------------------------------
  35                              主函数
  36          ------------------------------------------------*/
  37          void main (void)
  38          {                  
  39   1      int temp,tempH=50,tempL=1;
  40   1      float temperature;
  41   1      char displaytemp[16],num;//定义显示区域临时存储数组
  42   1      
  43   1      LCD_Init();           //初始化液晶
  44   1      DelayMs(20);          //延时有助于稳定
  45   1      LCD_Clear();          //清屏
  46   1      Init_Timer0();
  47   1      UART_Init();
  48   1      Lcd_User_Chr();       //写入自定义字符
  49   1      
  50   1      
  51   1      while (1)         //主循环
  52   1        {
  53   2       num=KeyScan();
  54   2       switch(num)
C51 COMPILER V7.06   MAIN                                                                  06/07/2010 22:29:51 PAGE 2   

  55   2             {
  56   3                  case 1:if(tempH<127)tempH++;break;
  57   3                      case 2:if(tempH>-55)tempH--;break;
  58   3                      case 3:if(tempL<127)tempL++;break;
  59   3                      case 4:if(tempL>-55)tempL--;break;
  60   3                      default:break;
  61   3                 }
  62   2        sprintf(displaytemp,"H.%3d  L.%3d ",tempH,tempL);//输出温度上限下限
  63   2        LCD_Write_String(0,1,displaytemp);//显示第二行
  64   2      if(ReadTempFlag==1)
  65   2       {
  66   3        ReadTempFlag=0;
  67   3        temp=ReadTemperature();
  68   3        
  69   3        if(temp&0x8000)
  70   3           temp=0-temp;//变为负数
  71   3        
  72   3        temperature=temp*0.0625;
  73   3      
  74   3        temp>>=4;
  75   3       if(temp>tempH)
  76   3           LCD_Write_String(0,1,"over  tempH    ");
  77   3       else if(temp<tempL)
  78   3          LCD_Write_String(0,1,"under  tempL   ");
  79   3      
  80   3        sprintf(displaytemp,"Temp  %6.2f",temperature);//打印温度值
  81   3        LCD_Write_String(0,0,displaytemp);//显示第一行
  82   3        LCD_Write_Char(13,0,0x01);//写入温度右上角点
  83   3        LCD_Write_Char(14,0,'C'); //写入字符C
  84   3        }     
  85   2       }
  86   1      }
  87          
  88          /*------------------------------------------------
  89                              定时器初始化子程序
  90          ------------------------------------------------*/
  91          void Init_Timer0(void)
  92          {
  93   1       TMOD |= 0x01;    //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响                 
  94   1       //TH0=0x00;          //给定初值
  95   1       //TL0=0x00;
  96   1       EA=1;            //总中断打开
  97   1       ET0=1;           //定时器中断打开
  98   1       TR0=1;           //定时器开关打开
  99   1      }
 100          /*------------------------------------------------
 101                           定时器中断子程序
 102          ------------------------------------------------*/
 103          void Timer0_isr(void) interrupt 1 
 104          {
 105   1       static unsigned int num;
 106   1       TH0=(65536-2000)/256;            //重新赋值 2ms
 107   1       TL0=(65536-2000)%256;
 108   1       
 109   1       num++;
 110   1       if(num==400)        //
 111   1         {
 112   2          num=0;
 113   2          ReadTempFlag=1; //读标志位置1
 114   2              }
 115   1      }
 116          
C51 COMPILER V7.06   MAIN                                                                  06/07/2010 22:29:51 PAGE 3   

 117          /*------------------------------------------------
 118          按键扫描函数,返回扫描键值
 119          ------------------------------------------------*/
 120          unsigned char KeyScan(void)
 121          {
 122   1       unsigned char keyvalue;
 123   1       if(KeyPort!=0xff)
 124   1         {
 125   2          DelayMs(10);
 126   2          if(KeyPort!=0xff)
 127   2                 {
 128   3                  keyvalue=KeyPort;
 129   3                  while(KeyPort!=0xff);
 130   3                      switch(keyvalue)
 131   3                      {
 132   4                       case 0xfe:return 1;break;
 133   4                       case 0xfd:return 2;break;
 134   4                       case 0xfb:return 3;break;
 135   4                       case 0xf7:return 4;break;
 136   4                       case 0xef:return 5;break;
 137   4                       case 0xdf:return 6;break;
 138   4                       case 0xbf:return 7;break;
 139   4                       case 0x7f:return 8;break;
 140   4                       default:return 0;break;
 141   4                      }
 142   3                }
 143   2         }
 144   1         return 0;
 145   1      }
 146          
 147          


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