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

📄 30-14-4.lst

📁 C51程序应用例子,自己的学习历程,希望可以帮到大家
💻 LST
字号:
C51 COMPILER V7.06   30_14_4                                                               03/10/2009 17:01:21 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE 30_14_4
OBJECT MODULE PLACED IN 30-14-4.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 30-14-4.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #define uchar unsigned char //定义一下方便使用
   2          #define uint  unsigned int
   3          #define ulong unsigned long
   4          #include <reg52.h>     //包括一个52标准内核的头文件
   5          
   6          sbit P10=P1^0; //要控制的LED灯
   7          sbit K1=P3^0;   //按键K1,占空比增大
   8          sbit K2=P3^1;   //按键K2,占空比减小
   9          sbit K3=P3^2;   //按键K3,周期增大
  10          sbit K4=P3^3;   //按键K4,周期减小
  11          static uchar Tosc;//一个周期的时间
  12          static uchar Duty;//占空比
  13          
  14          void main(void)
  15          {
  16   1      TMOD=0x11; //T0和T1均选择工作方式1,16位定时器
  17   1      TH0=0x3C;
  18   1      TL0=0xB0; //定时时间为0.1s/周期
  19   1      TH1=0x3C;
  20   1      TL1=0xB0; //定时时间为0.1s/周期
  21   1      ET0=1;     //使能T0溢出中断
  22   1      ET1=1;
  23   1      EA=1;    //使能CPU中断
  24   1      TR0=0;   //T0禁止运行
  25   1      TR1=1;  //唤醒T1,T1开始计数
  26   1      while(1)     //无限循环
  27   1      {
  28   2      ;
  29   2      }
  30   1      }
  31          
  32          timer0(void) interrupt 1   //T0中断服务函数,占空比
  33          {
  34   1      if(Duty==0 && Tosc==0)Tosc=1; //消除都等于0时的Duty无限增长死循环
  35   1      if(!K1)Duty++;
  36   1      if(Duty==Tosc)
  37   1      {
  38   2      Duty=0;
  39   2      P10=~P10;   //矩形波中的高低电平反转
  40   2      TR1=1;   //开始T1计数
  41   2      TR0=0;   //禁止T0计数,等待T1将其唤醒
  42   2      }
  43   1      if(!K2)
  44   1      {
  45   2      Duty--;
  46   2      P10=~P10; 
  47   2      TR1=1;   //开始T1计数
  48   2      TR0=0;   //禁止T0计数,等待T1将其唤醒
  49   2      }
  50   1      if(Duty==0)
  51   1      {
  52   2      Duty=Tosc;
  53   2      P10=~P10;   //矩形波中的高低电平反转
  54   2      TR1=1;   //开始T1计数
  55   2      TR0=0;   //禁止T0计数,等待T1将其唤醒
C51 COMPILER V7.06   30_14_4                                                               03/10/2009 17:01:21 PAGE 2   

  56   2      }
  57   1      }
  58          
  59          timer1(void) interrupt 3 //T1中断服务函数,频率
  60          {
  61   1      if(!K3)
  62   1      {
  63   2      if(Tosc==10)Tosc=0; //定时时间为1s
  64   2      Tosc++;
  65   2      TR0=1;   //开始T0计数
  66   2      TR1=0; //禁止T1计数,等待T0将其唤醒
  67   2      }
  68   1      
  69   1      if(!K4)
  70   1      {
  71   2      if(Tosc==0)Tosc=10; //定时时间为1s
  72   2      Tosc--;
  73   2      TR0=1;   //开始T0计数
  74   2      TR1=0; //禁止T1计数,等待T0将其唤醒
  75   2      }
  76   1      
  77   1      }


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


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

⌨️ 快捷键说明

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