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

📄 课设4刘.lst

📁 51单片机实现夜间防睡记录器
💻 LST
字号:
C51 COMPILER V7.50   课设4羅                                                               07/02/2006 15:45:51 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE 课设4羅
OBJECT MODULE PLACED IN 课设4刘.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 课设4刘.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 i,key,n=0;
   9          sbit P3_0=P3^0;
  10          sbit P3_1=P3^1;
  11          sbit P3_2=P3^2;
  12          sbit P3_4=P3^4;
  13          sbit P2_7=P2^7;
  14          bit flag_60,flag_11,flag_10,flag_ma,flag_c;//超过60分报警标志
  15          uchar code duanma[10] ={0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90};
  16          uchar code weima[6] ={ 0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf};
  17          uchar room[9][3],huanchun[6];
  18          void delay(uchar i,uchar k)//延时程序采用将要显示的数据不断地读入huanchun数组中
  19          {
  20   1              do{     if(flag_ma==0)
  21   2                      {       huanchun[0] = miao % 10;
  22   3                      huanchun[1] = miao / 10;
  23   3                      huanchun[2] = fen % 10;
  24   3                      huanchun[3] = fen / 10;
  25   3                      huanchun[4] = hour % 10;
  26   3                      huanchun[5] = hour / 10;
  27   3                      }
  28   2                      else
  29   2                      {       huanchun[0] = room[k][0] % 10;
  30   3                      huanchun[1] = room[k][0] / 10;
  31   3                      huanchun[2] = room[k][1]% 10;
  32   3                      huanchun[3] = room[k][1] / 10;
  33   3                      huanchun[4] = room[k][2] % 10;
  34   3                      huanchun[5] = room[k][2] / 10;
  35   3                      }
  36   2                 }while(i--);
  37   1      }
  38          baocun(uchar i)    //保存当前时刻时间数据
  39          {       room[i][0]=miao;
  40   1              room[i][1]=fen;
  41   1              room[i][2]=hour;
  42   1      }
  43          void dingshi()interrupt 1         //定时50ms
  44          {
  45   1        TH0 = 0x4c;//初始设置
  46   1        TL0 = 0x00;
  47   1        cout++;
  48   1        P3_4=0;          //外部中断启动报警 
  49   1        if (cout==2)  //   以秒为单位
  50   1        {     flag_c=~flag_c; //10min时灯闪的频率定为2秒
  51   2          miao++;
  52   2          cout = 0;
  53   2              cout_j++;//计数标志。
  54   2          if (miao==60)
  55   2          {
C51 COMPILER V7.50   课设4羅                                                               07/02/2006 15:45:51 PAGE 2   

  56   3            miao = 0;
  57   3            fen++;
  58   3            if (fen==60)
  59   3            {
  60   4              fen = 0;
  61   4              hour++;
  62   4              if (hour==24)hour = 0;
  63   4            }
  64   3          }
  65   2               if(cout_j==600)flag_10=1;//10MIN标志,
  66   2               if(cout_j==660)flag_11=1; //11分标志,
  67   2               if(cout_j==3600){flag_60=1;baocun(n);n++;}
  68   2               //报警开,记录当前时刻,存储单元指向下一个以便下次报警记录时间
  69   2        }
  70   1      }
  71          void xianshi()interrupt 3       //中断显示
  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==3||i==5)&&flag_ma==0)P2_7=flag_c;
  79   1            if(i==6)i=0;
  80   1      }//该中断显示huanchun中的数据
  81          unsigned char scankey()//键盘扫描以坐标形式取键值
  82          {
  83   1              unsigned char k,down,up;
  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=0x0F;
  91   1              k=P0;
  92   1              if(k==0x0F)return 0xFF;//确定行
  93   1              up=0;
  94   1              while(k&0x01)up+=4,k>>=1;
  95   1              return up+down;///行值加键值=坐标值
  96   1      }//scankey
  97          jianpan(uchar i)//键盘功能处理
  98          {       switch(i)
  99   1              {       
 100   2                      case 8:
 101   2                      case 9:
 102   2                      case 10:
 103   2                      case 11:
 104   2                      case 12:
 105   2                      case 13:break;
 106   2                      case 14:key=8;//该键按下后将记录的次数读入room中
 107   2                                      room[8][0]=n;
 108   2                                      room[8][1]=0;
 109   2                                      room[8][2]=0;
 110   2                                      flag_ma=~flag_ma;//显示时钟(时,分,秒)或显示记录次数
 111   2                                      break;//跳出switch
 112   2                      case 15:flag_11=0;//复位,清计数,定时
 113   2                                      flag_10=0;
 114   2                                      flag_60=0;
 115   2                                      cout_j=0;
 116   2                                      P3_0=1;
 117   2                                      P3_1=1;
C51 COMPILER V7.50   课设4羅                                                               07/02/2006 15:45:51 PAGE 3   

 118   2                                      P3_2=1;
 119   2                                      break;   //跳出switch
 120   2                      default:key=k;flag_ma=~flag_ma; //显示时钟(时,分,秒)或显示记录的时间
 121   2              }
 122   1      }
 123          void shortb()interrupt 2        //定时中断显示
 124          {       P3_4=1; //清除外部定时标志以便下次中断
 125   1              if(flag_10==1){P3_2=flag_c;}//如果计时至十分钟,p3.2将会输出2hz频率的方波直到flag_10被清0
 126   1              if(flag_11==1){P3_0=~P3_0;P3_2=~P3_2;flag_10=0;}//11min灯1s闪烁

⌨️ 快捷键说明

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