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

📄 main.lst

📁 KEILC51的始终程序,显示年月日
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   MAIN                                                                  11/12/2006 10:31:33 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN Main.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE Main.c BROWSE DEBUG OBJECTEXTEND CODE

line level    source

   1          #include "Global.H"
   2          #include "KeyTestTask.H"
   3          #include "HelloTask.H"
   4          #include "ClockTask.H"
   5          
   6          void Delay(int time);//延时程序
   7          void SystemInitialize(void);//系统初始始化
   8          
   9          main()
  10          {
  11   1              //系统启动延时
  12   1              //===========
  13   1              Delay(100);
  14   1      
  15   1              //系统初始化
  16   1              //==========
  17   1              SystemInitialize();
  18   1      
  19   1              //主循环
  20   1              //======
  21   1              while(1)
  22   1              {
  23   2                      //将系统按键值转换成自定义的按键值
  24   2                      //================================
  25   2                      KeyConvert();
  26   2      
  27   2                      //时钟参数加1秒。
  28   2                      //==============
  29   2                      ClockIncreaseProcess();
  30   2      
  31   2                      //处理任务切换请求
  32   2                      //================
  33   2                      if(TaskChangeFlag)
  34   2                      {
  35   3                              TaskChangeFlag = 0;
  36   3      
  37   3                              TaskMode++;
  38   3                              if(TaskMode>3) TaskMode=1;
  39   3      
  40   3                              Menu1 = 1;
  41   3                              Menu2 = 1;
  42   3                              Menu3 = 1;
  43   3                      }
  44   2      
  45   2                      //任务执行体
  46   2                      //==========
  47   2                      switch(TaskMode)
  48   2                      {
  49   3                              case 1: KeyTestTask();break;
  50   3                              case 2: HelloTask();break;
  51   3                              case 3: ClockTask();break;
  52   3                      }
  53   2              }
  54   1      }
  55          
C51 COMPILER V7.50   MAIN                                                                  11/12/2006 10:31:33 PAGE 2   

  56          //延时程序
  57          void Delay(int time)
  58          {
  59   1              while(time) time--;
  60   1      }
  61          
  62          //系统初始化
  63          void SystemInitialize(void)
  64          {
  65   1              //资源设置(初始化)
  66   1              //================
  67   1              //定时器0工作在方式1            作16位定时器用(允许中断)
  68   1              //定时器1工作在方式2            作波特率发生器用(禁止中断)
  69   1              //定时器2工作在自动重装方式     作时间定时用(2.5ms产生一次溢出中断)
  70   1              //外部中断设置                          INT0及INT1均为边沿触发(允许中断)
  71   1              //串行口设置为方式1                     8位UART(允许中断)
  72   1      
  73   1              TMOD = 0x21;//7(GATE),6(C/~T),5(M1),4(M0),3(GATE),2(C/~T),1(M1),0(M0)
  74   1      
  75   1              TH0 = 0x00;//设置定时器0计数初值
  76   1              TL0 = 0x00;
  77   1      
  78   1              TH1 = 0xF4;//Serial Port Baud Rate 2400 bps, when the main frequence is 11.0592MHz
  79   1              TL1 = 0xF4;
  80   1      
  81   1              TCON = 0x55;//TCON: 7(TF1),6(TR1),5(TF0),4(TR0),3(IE1),2(IT1),1(IE0),0(IT0)
  82   1      
  83   1              T2CON = 0x04;//T2CON:7(TF2),6(EXF2),5(RCLK),4(TCLK),3(EXEN2),2(TR2),1(C/~T2),0(CP/~RL2)
  84   1              TH2 = 0xF7;//2.5ms产生一次溢出中断(晶振为11.0592MHz)
  85   1              TL2 = 0x00;
  86   1              RCAP2H = 0xF7;
  87   1              RCAP2L = 0x00;
  88   1              
  89   1              SCON = 0x78;//SCON: 7(SM0),6(SM1),5(SM2),4(REN),3(TB8),2(RB8),1(TI),0(RI)
  90   1              PCON = 0x00;//PCON: 7(SMOD),6(null),5(null),4(null),3(GF1),2(GF0),1(PD),0(IDL)
  91   1      
  92   1              IE = 0x37;//中断允许:7(EA),6(null),5(ET2),4(ES),3(ET1),2(EX1),1(ET0),0(EX0)
  93   1              IP = 0x30;//中断优先级:7(null),6(null),5(PT2),4(PS),3(PT1),2(PX1),1(PT0),0(PX0)
  94   1              //==============================================================================
  95   1      
  96   1              //开启中断,允许中断响应
  97   1              //======================
  98   1              EA = 1;
  99   1      }
 100          
 101          /*
 102          ==============================================================================
 103          |/                                                      定时器0和定时器1控制
 104          
 105          方式0:  1.计数方式:             13位计数器,高8位在THx,低5位在TLx的低5位.
 106                          2.计数脉冲输入: C/~Tx = 0       内部时钟12分频信号
 107                                                          C/~Tx = 1       Tx引脚信号
 108                          3.计数允许控制: (~GATEx | ~INTx) & TRx = 1      允许计数
 109                                                          (~GATEx | ~INTx) & TRx = 0      停止计数
 110                          4.中断允许:             ETx = 1 允许中断响应
 111                                                          ETx = 0 禁止中断响应
 112                          5.计数溢出:             计数溢出时置TFx为1,进入中断服务程序时由硬件自动清0.
 113                                                          计数溢出时需由软件重装计数初值到THx和TLx中.
 114          
 115          方式1:  1.计数方式:             16位计数器,高8位在THx,低8位在TLx.
 116                          2.计数脉冲输入: C/~Tx = 0       内部时钟12分频信号
 117                                                          C/~Tx = 1       Tx引脚信号
C51 COMPILER V7.50   MAIN                                                                  11/12/2006 10:31:33 PAGE 3   

 118                          3.计数允许控制: (~GATEx | ~INTx) & TRx = 1      允许计数
 119                                                          (~GATEx | ~INTx) & TRx = 0      停止计数
 120                          4.中断允许:             ETx = 1 允许中断响应
 121                                                          ETx = 0 禁止中断响应
 122                          5.计数溢出:             计数溢出时置TFx为1,进入中断服务程序时由硬件自动清0.
 123                                                          计数溢出时需由软件重装计数初值到THx和TLx中.
 124          
 125          方式2:  1.计数方式:             8位重装计数器,8位计数值在TLx中,THx存放重装初值.
 126                          2.计数脉冲输入: C/~Tx = 0       内部时钟12分频信号
 127                                                          C/~Tx = 1       Tx引脚信号
 128                          3.计数允许控制: (~GATEx | ~INTx) & TRx = 1      允许计数
 129                                                          (~GATEx | ~INTx) & TRx = 0      停止计数
 130                          4.中断允许:             ETx = 1 允许中断响应
 131                                                          ETx = 0 禁止中断响应
 132                          5.计数溢出:             计数溢出时置TFx为1,进入中断服务程序时由硬件自动清0.
 133                                                          计数溢出时由硬件重装THx计数初值到TLx中.
 134          
 135          方式3:  *定时器0专有的定时方式
 136                          定时器0的子定时器一
 137                          1.计数方式:             8位计数器,8位计数值在TL0中.
 138                          2.计数脉冲输入: C/~T0 = 0       内部时钟12分频信号
 139                                                          C/~T0 = 1       T0引脚信号

⌨️ 快捷键说明

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