C51 COMPILER V8.08   FENPIN                                                                08/19/2015 10:18:23 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE FENPIN
OBJECT MODULE PLACED IN fenpin.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE fenpin.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*********************************************************************************
   2          * 【编写时间】： 2014年3月5日
   3          * 【作    者】： 清翔电子:03
   4          * 【版    本】： 1.0
   5          * 【网    站】： http://www.qxmcu.com/ 
   6          * 【淘宝店铺】： http://qxmcu.taobao.com/ 
   7          * 【实验平台】： QX-MCS51 单片机开发板
   8          * 【外部晶振】： 11.0592mhz     
   9          * 【主控芯片】： STC89C52
  10          * 【编译环境】： Keil μVisio3  
  11          * 【程序功能】：                                                                                    
  12          * 【使用说明】： 
  13          *  说明：免费开源，不提供源代码分析.
  14          **********************************************************************************/
  15          
  16          /******************************************************************
  17          程序功能： 本例程为简易分频器(用计数器采集外部脉冲)。
  18                             实验前，请用排线（杜邦线）将QX-MCS51学习板的P1^0管脚与P3^5(T1)
  19                             管脚相连。因为P1^0用来模拟外界波形输入，它提供周期为100ms的方波，
  20                             与T1管脚相连后，T1可对其进行周期计数。
  21                             程序中的变量TL1决定着分频系数，其值乘以2即为分频系数。
  22                             改变其值可以得到相应的分频输出波形（方波）。
  23                             P1^1为输出管脚，将其连接示波器可以看到分频后的波形。
  24          ********************************************************************/
  25          
  26          #include<reg52.h>
  27          
  28          sbit shuru=P1^0;
  29          sbit shuchu=P1^1;
  30          
  31          void main()
  32          {
  33   1              TMOD=0x51;      //定时计数器0用于定时，定时计数器1用于计数
  34   1              TR0=1;
  35   1              TR1=1;    //开通TR1计数器
  36   1              TH0=0x4c;// 计时器每隔50000微秒发起一次中断。
  37   1              TL0=0x00;
  38   1              ET0=1;
  39   1              EA=1;
  40   1      
  41   1              while(1)
  42   1              {                               //TL1为定时计数器1对应的内部寄存器的低八位。每当外部脉冲由1变为0时，其值加一。
  43   2                      if(TL1==1)         //对从T1端口采得的波形二分频。
  44   2                      {                          //每计数一次（即采的模拟输入方波的一个周期），即执行此函数
  45   3                              shuchu=~shuchu; //模拟方波的周期为100ms，而此处，每隔一个输入方波的周期，
  46   3                                                              //输出信号电平变换一次，故其周期为200ms，实现了二分频。
  47   3                              TL1=0;
  48   3                      }                                                           
  49   2              }
  50   1      }
  51          
  52          void time0() interrupt 1
  53          {       TH0=0x4c;
  54   1              TL0=0x00;
  55   1              shuru=~shuru; //定时器每隔50ms发起一次中断，shuru电平变换一次，故模拟输入方波的周期为100ms
C51 COMPILER V8.08   FENPIN                                                                08/19/2015 10:18:23 PAGE 2   

  56   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =     38    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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