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

📄 ex7-5c.lst

📁 《增强型8051单片机实用开发技术》例程代码
💻 LST
字号:
C51 COMPILER V8.18   EX7_5C                                                                11/27/2009 21:48:50 PAGE 1   


C51 COMPILER V8.18, COMPILATION OF MODULE EX7_5C
OBJECT MODULE PLACED IN ex7-5c.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ex7-5c.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "stc12c5a.h"    //包含STC12C5A60S2寄存器定义文件
   2          
   3          sbit LED_1s=P1^6;
   4          unsigned char cnt;       //中断计数变量
   5          
   6          void main (void)
   7          {
   8   1              cnt=200;                //设置COUNTER计数器初值
   9   1              CMOD=0x80;              //#10000000B   空闲模式下停止PCA计数器工作
  10   1                                              //选择PCA时钟源为fOSC/12,禁止PCA计数器溢出时中断
  11   1              CCON=0;                 //清0 PCA计数器溢出中断请求标志位CF
  12   1                                                      //CR = 0, 不允许 PCA 计数器计数;清0 PCA 各模块中断请求标志位CCFn
  13   1              CL=0;               //清0 PCA 计数器 
  14   1              CH=0;
  15   1              CCAP0L=0;           //给PCA模块0的CCAP0L置初值
  16   1              CCAP0H=0x1e;        //给PCA模块0的CCAP0H 置初值
  17   1              CCAPM0=0x49;        //设置PCA模块0为16位软件定时器
  18   1                                                      //ECCF0=1允许PCA模块0中断
  19   1                                              //当[CH,CL]=[CCAP0H,CCAP0L]时,CCF0=1,产生中断请求
  20   1              EA=1;               //开整个单片机所有中断共享的总中断控制位
  21   1              CR=1;               //启动PCA计数器(CH,CL)计数
  22   1              while(1);                       //等待中断
  23   1      }
  24          void PCA_ISR(void) interrupt 7 //PCA中断服务程序
  25          {
  26   1              union{       //定义一个联合,以进行16位加法
  27   1              unsigned int num;
  28   1              struct{             //在联合中定义一个结构
  29   1                     unsigned char Hi,Lo;
  30   1              }Result;
  31   1          }temp;
  32   1              //每5ms中断一次
  33   1          temp.num=(unsigned int)(CCAP0H<<8)+CCAP0L+0x1e00;
  34   1          CCAP0L=temp.Result.Lo;      //取计算结果的低8位
  35   1          CCAP0H=temp.Result.Hi;      //取计算结果的高8位
  36   1              CCF0=0;                         //清 PCA 模块0 中断标志
  37   1              cnt--;                                  //修改中断计数
  38   1          if(cnt==0)
  39   1          {
  40   2                      cnt=200;                //恢复中断计数初值
  41   2                      LED_1s =!LED_1s;        //在P1.6输出脉冲宽度为1秒钟的方波
  42   2              }
  43   1      }


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