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

📄 课设.lst

📁 51单片机实现夜间防睡记录器
💻 LST
字号:
C51 COMPILER V7.50   课设                                                                  06/24/2006 19:09:40 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE 课设
OBJECT MODULE PLACED IN 课设.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 课设.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg52.h>
   2          #define uchar unsigned char
   3          uchar cout, k;//计数标志。
   4          unsigned int cout_j;
   5          uchar miao = 0; //时间初始化
   6          uchar fen = 0;
   7          uchar hour = 10;
   8          uchar flag,i,key,n=0;
   9          sbit P0_0=P0^0;
  10          sbit P0_1=P0^1;
  11          sbit P0_2=P0^2;
  12          sbit flag_1=P0^3;
  13          sbit flag_arm=P0^4;
  14          bit flag_ma;//超过60分报警标志
  15          uchar huanchun[6];
  16          uchar duanma[11] ={0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0xff};
  17          uchar weima[6] ={ 0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf};
  18          unsigned char code b[]={10,3,2,1,11,6,5,4,12,9,8,7,13,14,0,15};
  19          uchar room[8][3];
  20          void delay(uchar i,uchar k)
  21          {
  22   1              do{     if(flag_ma==0)
  23   2                      {       huanchun[0] = miao % 10;
  24   3                      huanchun[1] = miao / 10;
  25   3                      huanchun[2] = fen % 10;
  26   3                      huanchun[3] = fen / 10;
  27   3                      huanchun[4] = hour % 10;
  28   3                      huanchun[5] = hour / 10;
  29   3                      }
  30   2                      else
  31   2                      {       huanchun[0] = room[k][0] % 10;
  32   3                      huanchun[1] = room[k][0] / 10;
  33   3                      huanchun[2] = room[k][1]% 10;
  34   3                      huanchun[3] = room[k][1] / 10;
  35   3                      huanchun[4] = room[k][2] % 10;
  36   3                      huanchun[5] = room[k][2] / 10;
  37   3                      }
  38   2                 }while(i--);
  39   1      }
  40          baocun(uchar i)
  41          {       room[i][0]=miao;
  42   1              room[i][1]=fen;
  43   1              room[i][2]=hour;
  44   1      }
  45          void dingshi()interrupt 1         //定时50ms
  46          {
  47   1        TH0 = 0xee;
  48   1        TL0 = 0x00;
  49   1        cout++;
  50   1        if (cout == 2)  //   以秒为单位
  51   1        {
  52   2          miao++;
  53   2          cout = 0;
  54   2              cout_j++;//计数标志。
  55   2                if(cout_j==660)flag_1=1,P0_0=0; //
C51 COMPILER V7.50   课设                                                                  06/24/2006 19:09:40 PAGE 2   

  56   2                if(cout_j==3600){flag_arm=1;P0_1=0;baocun(n);n++;}//报警开,记录当前时刻,存储单元指向下一个以便下次报警
             -记录时间
  57   2          if (miao== 60)
  58   2          {
  59   3            miao = 0;
  60   3            fen++;
  61   3            if (fen == 60)
  62   3            {
  63   4              fen = 0;
  64   4              hour++;
  65   4              if (hour == 12)
  66   4                hour = 0;
  67   4            }
  68   3          }
  69   2        }
  70   1      }
  71          void xianshi()interrupt 3 using 1       //中断显示
  72          {       
  73   1                TH1=0Xf8;                //显示定时两毫秒。
  74   1                TL1=0Xcc;
  75   1            P1 = weima[i];
  76   1            P2 = duanma[huanchun[i]];
  77   1            i++;
  78   1            if (i==6)i=0;
  79   1      }
  80          unsigned char scankey(){
  81   1              unsigned char k,down,up;
  82   1              P3=0x00;
  83   1              P3=0xF0;
  84   1              k=P3;
  85   1              if(k==0xF0)return 0xFF;
  86   1              delay(100,key);         ////////////
  87   1              down=3;
  88   1              while(k&0x80)down--,k<<=1;
  89   1              P3=0x00;
  90   1              P3=0x0F;
  91   1              k=P3;
  92   1              if(k==0x0F)return 0xFF;
  93   1              up=0;
  94   1              while(k&0x01)up+=4,k>>=1;
  95   1              return b[up+down];
  96   1      }//scankey
  97          songjian()
  98          {       unsigned char k;
  99   1              while(1)
 100   1              {       k=scankey();
 101   2                      if(k==scankey()&&k==0xff)break;
 102   2              }
 103   1      }
 104          void shortb()interrupt 0 using 1        //中断显示
 105          {
 106   1              do{
 107   2                      P0_0=~P0_0;        //
 108   2                      do{
 109   3                              P0_2=~P0_2;      //
 110   3                              delay(1,key);   //P0_3 取反频率
 111   3                              }while(i--);// P0_4取反频率
 112   2                      }while(flag_1);
 113   1                      P0_2=1;
 114   1                      P0_0=1; 
 115   1      }       
 116                  
C51 COMPILER V7.50   课设                                                                  06/24/2006 19:09:40 PAGE 3   

 117          longb(uchar i)   //60min 报警
 118          {       uchar t=100;
 119   1              do{
 120   2                      P0_1=~P0_1;
 121   2                      do{
 122   3                              P0_2=~P0_2;      //
 123   3                              delay(1,key);   //P0_3 取反频率
 124   3                              }while(i--);// P0_4取反频率
 125   2                      }while(t--);
 126   1                      P0_2=1;
 127   1                      P0_1=1; 
 128   1      }               
 129          void main()
 130          {
 131   1        IP=0X0A; //T0,T1,INT0,INT1,
 132   1        TMOD = 0X11;
 133   1        TH0 = 0Xee;
 134   1        TL0 = 0X00;
 135   1        TH1=0Xf8;     
 136   1        TL1=0Xcc;
 137   1        EA = 1;
 138   1        ET0 = 1;
 139   1        ET1=1;
 140   1        TR1=1;
 141   1        TR0 = 1;
 142   1          while (1)
 143   1        {     k=scankey();
 144   2              delay(100,key);  //////////////////////////////////////////////
 145   2              if(k==scankey()&&k!=0xFF)
 146   2              {       songjian();
 147   3                      if(k==15)
 148   3                      {       flag_1=0;
 149   4                              flag_arm=0;
 150   4                              cout_j=0;        //复位,清计数,定时
 151   4                      }
 152   3                      else {key=k;flag_ma=~flag_ma;  } //显示记录的时间
 153   3              }
 154   2      //      if(flag_1==1)shortb(100);
 155   2              if(flag_arm==1)longb(10);
 156   2        }
 157   1      }


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