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

📄 ex10-3.lst

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


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

line level    source

   1          #include "stc12c5a.h"
   2          #include "intrins.h"
   3          
   4          sbit  Begin_Led = P1^2;                         //系统开始工作指示灯 
   5          unsigned char Is_Power_Down = 0;                //判断是否进入掉电模式标志
   6          sbit  Is_Power_Down_Led_INT0 = P1^7;            //掉电唤醒指示灯,在INT0中
   7          sbit  Not_Power_Down_Led_INT0 = P1^6;           //不是掉电唤醒指示灯,在INT0中
   8          sbit  Is_Power_Down_Led_INT1 = P1^5;            //掉电唤醒指示灯,在INT1中
   9          sbit  Not_Power_Down_Led_INT1 = P1^4;           //不是掉电唤醒指示灯,在INT1中
  10          sbit  Power_Down_Wakeup_Pin_INT0 = P3^2;        //掉电唤醒管脚,INT0
  11          sbit  Power_Down_Wakeup_Pin_INT1 = P3^3;        //掉电唤醒管脚,INT1
  12          sbit  Normal_Work_Flashing_Led   = P1^3;        //系统处于正常工作状态指示灯
  13          void Normal_Work_Flashing(void); 
  14          void INT_System_init(void); 
  15          void INT0_Routine(void); 
  16          void INT1_Routine(void);
  17          
  18          void main(void) 
  19          { 
  20   1              unsigned char j=0;
  21   1              unsigned char wakeup_counter = 0;       //中断唤醒次数变量初始为0
  22   1      
  23   1              Begin_Led = 0;                          //系统开始工作指示灯
  24   1              INT_System_init();                                      //中断系统初始化
  25   1      
  26   1              while(1)
  27   1              {
  28   2                      P2 = ~wakeup_counter;                           //中断唤醒次数显示,先将wakeup_counter取反
  29   2                      wakeup_counter++;                               //中断唤醒次数显示
  30   2                      for(j=0;j<2;j++)
  31   2                      Normal_Work_Flashing();                         //系统正常工作指示灯
  32   2                      Is_Power_Down = 1;                                      //进入掉电模式之前,将其置为1,以供判断
  33   2                      PCON = 0x02;                                            //执行完此句,单片机进入掉电模式,外部时钟停止振荡
  34   2                      _nop_(); 
  35   2                      //外部中断唤醒后,首先执行上句,然后才会进入中断服务程序
  36   2                      _nop_();                                                        //建议多加几个空操作指令NOP,以便观察
  37   2                      _nop_();                                                        //建议多加几个空操作指令NOP
  38   2              }
  39   1      }
  40          void INT_System_init(void)              //中断系统初始化
  41          { 
  42   1              IT0 = 0;                                        //外部中断0,低电平触发中断
  43   1              EX0 = 1;                                        //允许外部中断0 中断
  44   1              IT1 = 1;                                        //外部中断 1,下降沿触发中断
  45   1              EX1 = 1;                                        //允许外部中断1中断
  46   1              EA  = 1;                                        //开总中断控制位
  47   1      } 
  48          void INT0_Routine(void) interrupt 0     //外部中断0服务程序
  49          { 
  50   1              if(Is_Power_Down)                               //判断掉电唤醒标志
  51   1              { 
  52   2                      Is_Power_Down = 0;
  53   2                      Is_Power_Down_Led_INT0 = 0;     //点亮外部中断0掉电唤醒指示灯
  54   2                      while(Power_Down_Wakeup_Pin_INT0==0);  //等待变高
  55   2                      Is_Power_Down_Led_INT0 = 1;     //关闭外部中断0掉电唤醒指示灯
C51 COMPILER V8.18   EX10_3                                                                11/30/2009 13:21:27 PAGE 2   

  56   2              }
  57   1              else
  58   1              {
  59   2                      Not_Power_Down_Led_INT0 = 0;    //点亮外部中断0正常工作中断指示灯
  60   2                      while(Power_Down_Wakeup_Pin_INT0==0);  //等待变高
  61   2                      Not_Power_Down_Led_INT0 = 1;    //关闭外部中断0正常工作中断指示灯
  62   2              }
  63   1      }
  64          void INT1_Routine(void) interrupt 2     //外部中断1服务程序
  65          {
  66   1              if(Is_Power_Down)                               //判断掉电唤醒标志
  67   1              {
  68   2                      Is_Power_Down = 0;
  69   2                      Is_Power_Down_Led_INT1 = 0;     //点亮外部中断1掉电唤醒指示灯
  70   2                      while(Power_Down_Wakeup_Pin_INT1==0); //等待变高
  71   2                      Is_Power_Down_Led_INT1 = 1;     //关闭外部中断1掉电唤醒指示灯
  72   2              }
  73   1              else
  74   1              {
  75   2                      Not_Power_Down_Led_INT1 = 0;    //点亮外部中断1正常工作中断指示灯
  76   2                      while(Power_Down_Wakeup_Pin_INT1==0);  //等待变高
  77   2                      Not_Power_Down_Led_INT1 = 1;    //关闭外部中断1正常工作中断指示灯
  78   2              }
  79   1      }
  80          void delay(void)
  81          {
  82   1              unsigned int j,k;
  83   1      
  84   1              for(k=0;k<2;++k)
  85   1              {
  86   2                      for(j=0;j<=30000;++j)
  87   2                      {
  88   3                              _nop_();
  89   3                              _nop_();
  90   3                              _nop_();
  91   3                              _nop_();
  92   3                              _nop_();
  93   3                              _nop_();
  94   3                              _nop_();
  95   3                              _nop_();
  96   3                      }
  97   2              }
  98   1      }
  99          void Normal_Work_Flashing(void)
 100          { 
 101   1              Normal_Work_Flashing_Led = 0;
 102   1              delay(); 
 103   1              Normal_Work_Flashing_Led = 1; 
 104   1              delay();
 105   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    157    ----
   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 + -