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

📄 chengxu.lst

📁 TCS230颜色识别传感器应用学习资料
💻 LST
字号:
C51 COMPILER V8.05a   CHENGXU                                                              11/30/2011 23:41:49 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE CHENGXU
OBJECT MODULE PLACED IN chengxu.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE chengxu.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          
   2           /********************************************************************
   3                                      汇诚科技
   4          
   5          实现功能:对颜色传感器输出的频率进行测量
   6          使用芯片:AT89S52 或者 STC89C52
   7          晶振:11.0592MHZ
   8          编译环境:Keil
   9          作者:zhangxinchunleo
  10          网站:www.ourhc.cn
  11          淘宝店:汇诚科技 http://shop36330473.taobao.com
  12          【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!     
  13          
  14          /*********************************************************************/
  15          
  16          #include <reg52.h>       //头文件
  17          unsigned char code dispbit[]={0xef,0xdf,0xbf,0x7f};       //位控制
  18          unsigned char code dispcode[]={0xc0,0Xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //数字码
  19          unsigned char dispbuf[4]={0,0,0,0};       //临时数据位
  20          unsigned char temp[8];   //缓存数组
  21          unsigned char dispcount; //数值组变量
  22          unsigned char T0count;   //计数器
  23          unsigned char timecount; //时间计数器
  24          unsigned char bz;                //采集标志位
  25          unsigned int bz1;                //延时标志位
  26          bit flag;                                //数值变换使能
  27          unsigned long x;                 //计数值换算变量
  28          
  29          /******************************************************************
  30                                  输入输出初始化定义
  31          ******************************************************************/
  32          
  33          sbit P2_0=P2^0;                  //采集锁定按键
  34          sbit P2_1=P2^1;                  //采集解锁按键
  35          sbit P1_1=P1^6;                  //采集解锁指示
  36          sbit P1_2=P1^7;                  //采集锁定指示
  37          
  38          
  39          sbit S0=P1^0;                    //用于选择输出比例因子或电源关断模式
  40          sbit S1=P1^1;                    //用于选择输出比例因子或电源关断模式
  41          sbit OE=P1^2;                    //频率输出使能引脚
  42          sbit S2=P1^3;                    //用于选择滤波器的类型
  43          sbit S3=P1^4;                    //用于选择滤波器的类型
  44          
  45          /*************************************************************************
  46                                         TCS230连接初始化 
  47          **************************************************************************/
  48          
  49          void TCS230()
  50          {
  51   1       S0=0;                   //用于选择输出比例因子或电源关断模式
  52   1       S1=1;                   //用于选择输出比例因子或电源关断模式
  53   1       OE=0;                   //频率输出使能引脚
  54   1       S2=1;                   //用于选择滤波器的类型
  55   1       S3=0;                   //用于选择滤波器的类型
C51 COMPILER V8.05a   CHENGXU                                                              11/30/2011 23:41:49 PAGE 2   

  56   1      }
  57          
  58          
  59          /*************************************************************************
  60                                          主函数  
  61          **************************************************************************/
  62          
  63          void main(void)                  //主函数
  64          {
  65   1      
  66   1      unsigned char i;
  67   1      TMOD=0x15;                                //定义定时器
  68   1      TH0=0;
  69   1      TL0=0;
  70   1      TH1=(65536-4000)/256;
  71   1      TL1=(65536-4000)%256;
  72   1      TR1=1;
  73   1      TR0=1;
  74   1      ET0=1;
  75   1      ET1=1;
  76   1      EA=1;
  77   1      TCS230();                                                  
  78   1      while(1)                                  //主函数循环体
  79   1      {
  80   2      if(flag==1)                                //显示使能开
  81   2      {
  82   3      flag=0;
  83   3      x=T0count*65536+TH0*256+TL0;  //计数器换算
  84   3      for(i=0;i<4;i++)
  85   3      {
  86   4       temp[i]=0;
  87   4      }
  88   3      i=0;
  89   3      while(x/10)
  90   3      {
  91   4      temp[i]=x%10;
  92   4      x=x/10;
  93   4      i++;
  94   4      }
  95   3      temp[i]=x;
  96   3      for(i=0;i<4;i++)
  97   3      {
  98   4      dispbuf[i]=temp[i];
  99   4      }
 100   3      timecount=0;
 101   3      T0count=0;
 102   3      TH0=0;
 103   3      TL0=0;
 104   3      TR0=1;
 105   3      }
 106   2      }
 107   1      }
 108          /*************************************************************************
 109                                          定时器函数      
 110          **************************************************************************/
 111          
 112          void t0(void) interrupt 1 using 0         //计数器中断
 113          {
 114   1      T0count++;
 115   1      }
 116          
 117          /*************************************************************************
C51 COMPILER V8.05a   CHENGXU                                                              11/30/2011 23:41:49 PAGE 3   

 118                                          中断函数        
 119          **************************************************************************/
 120          void t1(void) interrupt 3 using 0         //定时器中断
 121          {
 122   1      TH1=(65536-4000)/256;
 123   1      TL1=(65536-4000)%256;
 124   1      timecount++;
 125   1      
 126   1      if(P2_0==0){bz=1;P1_2=0;}
 127   1      if(P2_1==0){bz=0;bz1=0;P1_2=1;P1_1=1;}
 128   1      
 129   1      if(timecount==250)
 130   1      {
 131   2      TR0=0;
 132   2      timecount=0;
 133   2      
 134   2      flag=1;
 135   2      if(bz==1){bz1++;}
 136   2      if(bz1>=5){flag=0;bz1=6;P1_1=0;}
 137   2      
 138   2      }
 139   1      P0=dispcode[dispbuf[dispcount]];
 140   1      P2=dispbit[dispcount];
 141   1      dispcount++;
 142   1      if(dispcount==4)
 143   1      {
 144   2      dispcount=0;
 145   2      }
 146   1      } 
 147          
 148          /*************************************************************************
 149                                          结束    
 150          **************************************************************************/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    380    ----
   CONSTANT SIZE    =     14    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     22       1
   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 + -