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

📄 temper.lst

📁 用proteus仿真做的单片机实验
💻 LST
字号:
C51 COMPILER V7.01  TEMPER                                                                 04/03/2009 09:54:10 PAGE 1   


C51 COMPILER V7.01, COMPILATION OF MODULE TEMPER
OBJECT MODULE PLACED IN temper.OBJ
COMPILER INVOKED BY: G:\C51\keil 安装\C51\BIN\C51.EXE temper.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <reg52.h>
   2          
   3          unsigned char code dispbitcode[]={0xfe,0xfd,0xfb,0xf7,
   4                                            0xef,0xdf,0xbf,0x7f};////数码管位编码 
   5          unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
   6                                         0x6d,0x7d,0x07,0x7f,0x6f,0x00};//数码管段编码
   7          unsigned char dispbuf[8]={10,10,10,10,10,0,0,0};
   8          unsigned char time;
   9          unsigned char getdata;
  10          unsigned  int temp;
  11          unsigned char i;
  12          
  13          sbit ST=P3^0;//p3.0口
  14          sbit OE=P3^1;//
  15          sbit EOC=P3^2;
  16          sbit CLK=P3^3;
  17          sbit LED1=P3^6;
  18          sbit LED2=P3^7;
  19          sbit BELL=P3^5;
  20          bit lowflag;
  21          bit highflag;
  22          unsigned int cnta;
  23          unsigned int cntb;
  24          bit alarmflag;//报警标志位
  25          
  26          
  27          void main(void)
  28          {
  29   1        ST=0;
  30   1        OE=0;
  31   1        TMOD=0x12;//定时/计数器方式控制位,T1定时方式1,T0定时方式2
  32   1        TH0=0x216;//T0定时器初始化
  33   1        TL0=0x216;
  34   1        TH1=(65536-4000)/256;//T1定时器高位
  35   1        TL1=(65536-4000)%256;//T1定时器底位
  36   1        TR1=1;//T1运行控制位,启动运行
  37   1        TR0=1;//T0运行控制位,启动运行
  38   1        ET0=1;//T0溢出标志位
  39   1        ET1=1;//T1溢出标志位
  40   1        EA=1;//开总的中断位
  41   1        ST=1;
  42   1        ST=0;
  43   1        while(1)
  44   1          {
  45   2              //LED灯是否闪烁
  46   2            if((lowflag==1) &&(highflag==0))
  47   2              {
  48   3                LED1=0;
  49   3                LED2=1;
  50   3              }
  51   2              else if((highflag==1) && (lowflag==0))
  52   2                {
  53   3                  LED1=1;
  54   3                  LED2=0;
  55   3                }
C51 COMPILER V7.01  TEMPER                                                                 04/03/2009 09:54:10 PAGE 2   

  56   2                else
  57   2                  {
  58   3                    LED1=1;
  59   3                    LED2=1;
  60   3                  }
  61   2                  
  62   2          }
  63   1      
  64   1      }
  65          
  66          void t0(void) interrupt 1 using 0
  67          {
  68   1        CLK=~CLK;//延时
  69   1      }
  70          //////////////定时温度A/D转换函数
  71          void t1(void) interrupt 3 using 0
  72          { 
  73   1        TH1=(65536-500)/256;//定时
  74   1        TL1=(65536-500)%256;
  75   1        if(EOC==1)
  76   1               {
  77   2                 OE=1;
  78   2                 getdata=P0;//D/A转换
  79   2                 OE=0;
  80   2                 temp=getdata*25;
  81   2                 temp=temp/64; 
  82   2                         dispbuf[2]=temp/100;
  83   2                         dispbuf[3]=temp/10;
  84   2                         dispbuf[4]=temp%10;
  85   2      
  86   2                 if(getdata<77)//低温
  87   2                   {
  88   3                     lowflag=1;
  89   3                     highflag=0;
  90   3                   }
  91   2                   else if(getdata>153)//高温
  92   2                     {
  93   3                       lowflag=0;
  94   3                       highflag=1;
  95   3                     }
  96   2                     else//正常温度
  97   2                       {
  98   3                         lowflag=0;
  99   3                         highflag=0;
 100   3                       }
 101   2                 ST=1;
 102   2                 ST=0;
 103   2               } 
 104   1              ////数码管显示    
 105   1        P2=0xff;//数码管初选
 106   1        P1=dispcode[dispbuf[time]];//取数码管段编码
 107   1        P2=dispbitcode[time];//数码管位编码
 108   1       ////延时
 109   1        time++;
 110   1        if(time==8)
 111   1          {
 112   2            time=0;
 113   2          }
 114   1        //报警显示和蜂鸣器鸣叫
 115   1        if((lowflag==1) && (highflag==0))
 116   1          {
 117   2            cnta++;
C51 COMPILER V7.01  TEMPER                                                                 04/03/2009 09:54:10 PAGE 3   

 118   2            if(cnta==800)
 119   2              {
 120   3                cnta=0;
 121   3                alarmflag=~alarmflag;//报警位
 122   3              }
 123   2            if(alarmflag==1)
 124   2              {
 125   3                BELL=~BELL;//蜂鸣器报警
 126   3              }
 127   2          }
 128   1          else if((lowflag==0) && (highflag==1))
 129   1            {
 130   2            cntb++;
 131   2            if(cntb==400)
 132   2              {
 133   3                cntb=0;
 134   3                alarmflag=~alarmflag;
 135   3              }
 136   2            if(alarmflag==1)
 137   2              {
 138   3                BELL=~BELL;
 139   3              }        
 140   2            }
 141   1            else
 142   1              {
 143   2                alarmflag=0;
 144   2                cnta=0;
 145   2                cntb=0;
 146   2              }
 147   1      }
 148          
 149          
 150          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    323    ----
   CONSTANT SIZE    =     19    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     17    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      3    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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