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

📄 课设3.lst

📁 51单片机实现夜间防睡记录器
💻 LST
字号:
C51 COMPILER V7.50   课设3                                                                 06/26/2006 22:18:32 PAGE 1   


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

line level    source

   1          #include <reg52.h>
   2          unsigned char code d[10] ={0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90};
   3          unsigned char code w[6] ={ 0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf};
   4          unsigned char b[9][3],a[6];
   5          unsigned char cout, k;//计数标志。
   6          unsigned int cout_j;
   7          unsigned char sc= 0;    //时间初始化
   8          unsigned char mi= 0;
   9          unsigned char hour = 10;
  10          unsigned char i,key,n=0;
  11          sbit P3_0=P3^0;
  12          sbit P3_1=P3^1;
  13          sbit P3_2=P3^2;
  14          sbit P3_4=P3^4;
  15          sbit P2_7=P2^7;
  16          bit bj_60,bj_11,bj_10,bj_ma,bj_c;//超过60分报警标志
  17          void delay(unsigned char i,unsigned char k)
  18          {
  19   1              do{     if(bj_ma==1)
  20   2                              {       a[0] = b[k][0] % 10;
  21   3                      a[1] = b[k][0] / 10;
  22   3                      a[2] = b[k][1]% 10;
  23   3                      a[3] = b[k][1] / 10;
  24   3                      a[4] =b[k][2] % 10;
  25   3                      a[5] = b[k][2] / 10;
  26   3                      }
  27   2                      else
  28   2               {      a[0] = sc % 10;
  29   3                      a[1] = sc / 10;
  30   3                      a[2] = mi % 10;
  31   3                      a[3] = mi / 10;
  32   3                      a[4] = hour % 10;
  33   3                      a[5] = hour / 10;
  34   3                      }
  35   2                 }while(i--);
  36   1      }
  37          cc(unsigned char i)        //保存当前时刻时间数据
  38          {       b[i][0]=sc;
  39   1              b[i][1]=mi;
  40   1              b[i][2]=hour;
  41   1      }
  42          void wait()interrupt 1    //定时50ms
  43          {
  44   1        TH0 = 0xee;
  45   1        TL0 = 0x00;
  46   1        cout++;
  47   1        P3_4=0;          //外部定时报警 
  48   1        if (cout==2)  //   以秒为单位
  49   1        {     bj_c=~bj_c; //10min时灯闪的频率定为2秒
  50   2          sc++;
  51   2          cout = 0;
  52   2              cout_j++;//计数标志。
  53   2          if (sc==60)
  54   2          {
  55   3            sc = 0;
C51 COMPILER V7.50   课设3                                                                 06/26/2006 22:18:32 PAGE 2   

  56   3           mi++;
  57   3            if (mi==60)
  58   3            {
  59   4              mi = 0;
  60   4              hour++;
  61   4              if (hour==24)hour = 0;
  62   4            }
  63   3          }
  64   2               if(cout_j==600)bj_10=1;//10MIN标志,
  65   2               if(cout_j==660)bj_11=1; //11分标志,
  66   2               if(cout_j==3600){bj_60=1;cc(n);n++;}
  67   2               //报警开,记录当前时刻,存储单元指向下一个以便下次报警记录时间
  68   2        }
  69   1      }
  70          void kk()interrupt 3    //中断显示
  71          {       
  72   1                TH1=0Xf8;                //显示定时两毫秒。
  73   1                TL1=0Xcc;
  74   1            P1 = w[i];
  75   1            P2 = d[a[i]];
  76   1            i++;
  77   1                if((i==3||i==5)&&bj_ma==0)P2_7=bj_c;
  78   1            if(i==6)i=0;
  79   1      }
  80          mm()
  81          {
  82   1              unsigned char k,down,up;
  83   1              P0=0x00;
  84   1              P0=0xF0;
  85   1              k=P0;
  86   1              if(k==0xF0)return 0xFF;
  87   1              delay(100,key);         ////////////
  88   1              down=3;
  89   1              while(k&0x80)down--,k<<=1;
  90   1              P0=0x00;
  91   1              P0=0x0F;
  92   1              k=P0;
  93   1              if(k==0x0F)return 0xFF;
  94   1              up=0;
  95   1              while(k&0x01)up+=4,k>>=1;
  96   1              return up+down;
  97   1      }//scankey
  98          tt() //松键操作
  99          {       unsigned char k;
 100   1              while(1)
 101   1              {       k=mm();
 102   2                      if(k==mm()&&k==0xff)break;
 103   2              }
 104   1      }
 105          void jb()interrupt 2    //定时中断显示
 106          {       P3_4=1; //定时标志
 107   1              if(bj_10==1){P3_2=bj_c;}
 108   1              if(bj_11==1){P3_0=~P3_0;P3_2=~P3_2;bj_10=0;}//11min灯1s闪烁,
 109   1              if(bj_60==1)       
 110   1              {       P3_1=~P3_1;
 111   2                      P3_2=0;
 112   2                      bj_11=0;
 113   2                      P3_0=1;
 114   2              }
 115   1      }                                       
 116          void main()
 117          {
C51 COMPILER V7.50   课设3                                                                 06/26/2006 22:18:32 PAGE 3   

 118   1        IP=0X0A; //T0,T1,INT1,
 119   1        TMOD = 0X11;
 120   1        TH0 = 0Xee;
 121   1        TL0 = 0X00;
 122   1        TH1=0Xf8;     
 123   1        TL1=0Xcc;
 124   1        IE=0X8E;
 125   1        TCON=0X5C;
 126   1              while (1)
 127   1              {       k=mm();
 128   2                      delay(100,key);  //////////////////////////////////////////////
 129   2                      if(k==mm()&&k!=0xFF)
 130   2                      {       tt();
 131   3                                      switch(i)
 132   3              {       
 133   4                      case 8:key=8;
 134   4                                      b[8][0]=n;
 135   4                                      b[8][1]=0;
 136   4                                      b[8][2]=0;
 137   4                                      bj_ma=~bj_ma;
 138   4                                      break;
 139   4                      case 9:bj_11=0;
 140   4                                      bj_10=0;
 141   4                                      bj_60=0;
 142   4                                      cout_j=0;
 143   4                                      P3_0=1;
 144   4                                      P3_1=1;
 145   4                                      P3_2=1;
 146   4                                      break;   //复位,清计数,定时
 147   4                      case 10:
 148   4                      case 11:
 149   4                      case 12:
 150   4                      case 13:
 151   4                      case 14:
 152   4                      case 15:break;
 153   4                      default:key=k;bj_ma=~bj_ma; //显示记录的时间
 154   4              }
 155   3                      }
 156   2              }
 157   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    603    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     43    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      5    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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