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

📄 dingshi.lst

📁 基于89S51芯片开发的篮球倒计时系统,开发环境KEIL,仿真环境PROTUES
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.09   DINGSHI                                                               04/24/2007 21:33:45 PAGE 1   


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

line level    source

   1          /*********************************************************************/
   2          //            
   3          //                       定时
   4          //                    ancleyan 2007.04.23      
   5          /*********************************************************************/
   6          //使用AT89C51单片机,3MHZ晶振,P1口输入,P2口作列扫描,P1数据输出,用共阳LED数码管
   7          
   8          #include"reg51.h"
   9          #define char unsigned char
  10          char data time[6]={0x0b,0x0b,0x0b,0x0b,0x0b,0x0b};  //当开启之后显示最下面一行
  11          char code dis_7[14]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff,0xf7,0xbf,0xfe};
  12          char code  scan_con[7]={0x01,0x02,0x04,0x08,0x10, 0x20, 0x00};   // 列扫描控制字
  13          //*********************第1个  2个  3个  4个  5个  6个 全不亮
  14          char data t=0;     //供键盘输入的数存储进数组时使用
  15          char data count=13;
  16          sbit clean=P3^2;
  17          sbit aa=P3^0;
  18          sbit bb=P3^1;
  19          char data lock=0;
  20          char data lockfun14=0;
  21          
  22          //*********外部中断0  完成清零功能  *********
  23          void reset(void) interrupt 0 using 1   // 利用中断清零
  24          { 
  25   1        char i;
  26   1        //if(){bb=0;}
  27   1        aa=1;
  28   1        //else{
  29   1        for(i=0;i<6;i++) {time[i]=0x0c;}
  30   1        ////gg=0;//delay1ms(200);//P2=0;
  31   1        clean=1;//记得将P3还原   对产生中断的信号还原      
  32   1        t=0;   //还原供键盘输入的数存储进数组时使用  如果不还原 下次存储是从上次中断的地方接着存储
  33   1        lock=0;
  34   1        TR0=0;//关闭定时器0
  35   1        EA=0;
  36   1        //}
  37   1        //return t;    
  38   1      }
  39          
  40          //*******定时器0  50MS定时中断
  41          void delay50ms() interrupt 1 using 0
  42          { void fun15(void);
  43   1      //while(1)
  44   1      //{   //0000
  45   1        count--;
  46   1        EA=1;ET0=1;TMOD=0x01;
  47   1        TH0=(65536-15526)/256;
  48   1        TL0=(65536-15536)%256;
  49   1        //*****原来使用的确定键功能函数 void okset(void)*********//
  50   1      if(time[5]==0xff) //&&count==0
  51   1        {   //1111
  52   2          if(time[4]==00)
  53   2            {   //2222
  54   3              if(time[3]==0x00)
  55   3                {   //3333
C51 COMPILER V7.09   DINGSHI                                                               04/24/2007 21:33:45 PAGE 2   

  56   4                  if(time[2]==0x00)
  57   4                    {   //4444
  58   5                      if(time[1]==0x00)
  59   5                        {    //5555
  60   6                          if(time[0]==0x00)
  61   6                            {aa=0;TR0=0;}// 一定要关计时器0 如果不关 7段显示码上无显示 实际上还在继续倒计时
  62   6                          else
  63   6                            {time[0]--;time[1]=9;time[2]=5;time[3]=9;time[4]=5;time[5]=9;}
  64   6                                        }    //5555
  65   5                      else
  66   5                        {time[1]--;time[2]=5;time[3]=9;time[4]=5;time[5]=9;}
  67   5                                }   //4444
  68   4                  else
  69   4                    {time[2]--;time[3]=9;time[4]=5;time[5]=9;}
  70   4                        }   //3333
  71   3                  else
  72   3                {time[3]--;time[4]=5;time[5]=9;}
  73   3               }    //2222
  74   2               else
  75   2              {time[4]--;time[5]=9;}
  76   2        }       //1111
  77   1      else 
  78   1         {
  79   2           if(count==0)
  80   2            { count=13;TR0=1;time[5]--;}//
  81   2         }
  82   1      //}       //0000
  83   1      }
  84          //*********设置键的功能**********
  85          void settime(void)
  86          { 
  87   1        if(t==0)  //防止输入数据、计时过程中按下设置键
  88   1        {
  89   2        char i;
  90   2        for(i=0;i<6;i++)
  91   2        {time[i]=0x0d;}
  92   2        lock=1;lockfun14=1;
  93   2        }
  94   1      }
  95          //*******1毫秒延时程序********
  96          delay1ms(int t1)
  97          {
  98   1         char i,j;
  99   1         for(i=0;i<t1;i++)
 100   1         for(j=0;j<120;j++)
 101   1         {;}
 102   1      }
 103          //*******10毫秒延时程序********
 104          //delay10ms(int t2)
 105          //{
 106            // int i,j;
 107             //for(i=0;i<t2;i++)
 108             //for(j=0;j<1200;j++)
 109             //{;}
 110          //}
 111          
 112          //**********功能函数15   发出INT0中断请求脉冲清零***********************************
 113          void fun15(void)
 114          {
 115   1        clean=0;//delay1ms(1);clean=1;
 116   1      }
 117          //**********功能函数14   发出T0中断请求脉冲计时***********************************
C51 COMPILER V7.09   DINGSHI                                                               04/24/2007 21:33:45 PAGE 3   

 118          void fun14(void)
 119          {
 120   1       if(t==6)
 121   1        {TR0=1;}
 122   1        //ff=0;
 123   1      }
 124          //**********功能函数13***********************************
 125          void fun13(void)
 126          {
 127   1        //delay1ms(200);
 128   1       // okset();
 129   1        //ee=0;
 130   1      }
 131          //**********功能函数12***********************************
 132          void fun12(void)
 133          {
 134   1        //delay1ms(200);
 135   1        //dd=0;
 136   1      }
 137          //**********功能函数11***********************************
 138          void fun11(void)
 139          {
 140   1        //delay1ms(200);
 141   1        //cc=0;
 142   1      }
 143          //**********功能函数10***********************************
 144          void fun10(void)
 145          {
 146   1        settime();
 147   1        //password();
 148   1       // okset();
 149   1      }
 150          //**********功能函数9***********************************
 151          char fun9(void)
 152          { if(lock==1&&t<6)//平时数字键无效 只有按下设置键才有效
 153   1       {if(t!=2&&t!=4){  
 154   3        void scan_7(void);//对被调用函数的说明
 155   3        while(P1!=0xfe){scan_7();}                          //while(P3!=0xfe);
 156   3        //delay1ms(200);       //防止由于按键未放开 输入一串数字  可以加入一个while(P3!=0xfe)语句 直到放开键才动
             -作
 157   3        time[t]=9;         //用delay1ms(100)语句可以按住键之后重复输入
 158   3        //aa=0;              
 159   3        return t++;}
 160   2        }
 161   1      }
 162          //**********功能函数8***********************************
 163          char fun8(void)
 164          {if(lock==1&&t<6)         //加入t<6  防止输入的定时时间多于6位数字
 165   1        {if(t!=2&&t!=4){
 166   3        void scan_7(void);      //对被掉函数的说明  
 167   3        while(P1!=0xfe){scan_7();}  //加入这两条语句的目的是防止闪烁
 168   3      //while(P3!=0xfe);
 169   3        //delay1ms(200);
 170   3        time[t]=8;
 171   3       // bb=0;                 //函数功能测试灯
 172   3        return t++;}}
 173   1      }
 174          //**********功能函数7***********************************
 175          char fun7(void)
 176          { if(lock==1&&t<6)
 177   1        {

⌨️ 快捷键说明

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