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

📄 main.lst

📁 3LED闪烁 要用按键实现 89c51f020来实现的
💻 LST
字号:
C51 COMPILER V7.06   MAIN                                                                  08/06/2007 11:47:23 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          
   2          //------------------------------------------------------------------------------------
   3          // Includes
   4          //------------------------------------------------------------------------------------
   5          #include <c8051f020.h>                    // SFR declarations
   6          //------------------------------------------------------------------------------------
   7          // Global CONSTANTS
   8          //------------------------------------------------------------------------------------
   9          
  10          #define SYSCLK 2000000                    // approximate SYSCLK frequency in Hz
  11          
  12          sbit  LED1 = P1^6;                         // green LED: '1' = ON; '0' = OFF
  13          sbit  LED2 = P3^5; 
  14          sbit  LED3 = P3^6; 
  15          //------------------------------------------------------------------------------------
  16          // Function PROTOTYPES
  17          //------------------------------------------------------------------------------------
  18          void PORT_Init (void);
  19          
  20          
  21          void SYSCLK_Init ()
  22          {
  23   1          int i;                    // 延时计数器
  24   1          OSCXCN = 0x67;            // 开启外部振荡器24.000000MHz晶体
  25   1          for (i=0; i < 256; i++) ; // 等待振荡器启振
  26   1          while (!(OSCXCN & 0x80)); // 等待晶体振荡器稳定
  27   1          OSCICN = 0x88;            // 选择外部振荡器为系统时钟源并允许丢失
  28   1      }
  29          void PORT_Init (void)
  30          {
  31   1         //XBR2    = 0x40;                     // Enable crossbar and weak pull-ups
  32   1        //  XBR0      = 0x07;
  33   1        //  XBR1      = 0x80;
  34   1          XBR2      = 0x40;
  35   1         //P1MDOUT |= 0x40;                    // enable P1.6 (LED) as push-pull output
  36   1      }
  37          
  38          //------------------------------------------------------------------------------------
  39          // MAIN Routine
  40          //------------------------------------------------------------------------------------
  41          void main (void) {
  42   1         // disable watchdog timer
  43   1         WDTCN = 0xde;
  44   1         WDTCN = 0xad;
  45   1         SYSCLK_Init ();
  46   1         PORT_Init ();
  47   1         
  48   1         //EX7 中断配置
  49   1              P3IF|=0x80;
  50   1              EIE2|=0x20;
  51   1         //Timer2 mode0 config
  52   1         CKCON&=~0x20;
  53   1         T2CON=0x09;
  54   1         TL2=0;
  55   1         TH2=0;
C51 COMPILER V7.06   MAIN                                                                  08/06/2007 11:47:23 PAGE 2   

  56   1         ET2=1;
  57   1         //enable interrupt
  58   1              EA=1;
  59   1         while(1);
  60   1      
  61   1      }
  62          //上升沿中断处理程序
  63          void ex7_ISR(void)interrupt 19 using 1
  64          {
  65   1              P3IF&=~0x80;
  66   1              //开启定时器
  67   1              TR2=1;
  68   1      }
  69          
  70          //捕捉中断服务程序
  71          void cap_ISR(void) interrupt 5 using 2
  72          {
  73   1              unsigned char temp;
  74   1              EXF2=0;
  75   1              TR2=0;
  76   1              TL2=0;
  77   1              TH2=0;
  78   1              //RCAP2H RCAP2L
  79   1              //1 1 0 0, 0 0 0 0, 0 0 0 0, 0 0 0 0   
  80   1              temp=RCAP2H;
  81   1              if(temp&0x80==0x80)
  82   1                      LED1=0;
  83   1              else
  84   1                      LED1=1;
  85   1              if(temp&0x40==0x40)
  86   1                      LED2=0;
  87   1              else
  88   1                      LED2=1;
  89   1              if(temp&0x20==0x20)
  90   1                      LED3=0;
  91   1              else
  92   1                      LED3=1;
  93   1              //计算脉冲宽度
  94   1              //根据结果显示
  95   1      }
  96          
  97          
  98          //step 1 用上升,开启定时器
  99          
 100          //step 2 下降沿捕捉
 101          
 102          //step 3 计算脉冲宽度,根据一定规则输出到LED
 103           
 104          


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

⌨️ 快捷键说明

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