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

📄 main.lst

📁 8051系列单片机的利用定时器进行脉冲宽度测量的c语言的简单的操作例程
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.00 Beta 6  MAIN                                                            06/18/2002 13:18:24 PAGE 1   


C51 COMPILER V7.00 Beta 6, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN Main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Main.c BROWSE DEBUG OBJECTEXTEND CODE SYMBOLS

stmt level    source

   1          /*---------------------------------------------------------
   2          ---------------------------------------------------------*/
   3          #include <reg52.h>
   4          #include <stdio.h>
   5          
   6          /*---------------------------------------------------------
   7          Timer 0 Overflow Interrupt
   8          ---------------------------------------------------------*/
   9          unsigned int T0_ISR_count = 0;
  10          
  11          void T0_ISR (void) interrupt 1
  12          {
  13   1      T0_ISR_count++;
  14   1      TF0 = 0;                        // Reset the interrupt request
  15   1      }
  16          
  17          
  18          /*---------------------------------------------------------
  19          MAIN C function
  20          ---------------------------------------------------------*/
  21          void main (void)
  22          {
  23   1      /*--------------------------------------
  24   1      Set serial port for 9600 baud at
  25   1      11.0592 MHz.  Note that we use Timer 1
  26   1      for the baud rate generator.
  27   1      --------------------------------------*/
  28   1      SCON  = 0x50;
  29   1      TMOD |= 0x20;
  30   1      TH1   = 0xFA;
  31   1      TR1   = 1;
  32   1      TI    = 1;
  33   1      PCON |= 0x80;
  34   1      
  35   1      printf ("\nPulse Width Example Program\n\n");
  36   1      
  37   1      /*--------------------------------------
  38   1      Enable interrupts for timer 0.
  39   1      --------------------------------------*/
  40   1      ET0 = 1;
  41   1      EA = 1;
  42   1      
  43   1      /*--------------------------------------
  44   1      Set Timer0 for 16-bit interval timer
  45   1      mode.
  46   1      --------------------------------------*/
  47   1      TMOD = (TMOD & 0xF0) | 0x09;
  48   1      
  49   1      while (1)
  50   1        {
  51   2      /*--------------------------------------
  52   2      Clear the timer overflow counter and
  53   2      the timer low and high registers.  Then,
  54   2      start the timer.
  55   2      --------------------------------------*/
C51 COMPILER V7.00 Beta 6  MAIN                                                            06/18/2002 13:18:24 PAGE 2   

  56   2        T0_ISR_count = 0;
  57   2        TH0 = 0;
  58   2        TL0 = 0;
  59   2      
  60   2        TR0 = 1;
  61   2      
  62   2        printf ("\nStart a pulse.\n");
  63   2      
  64   2      /*--------------------------------------
  65   2      Wait for the pulse to start.
  66   2      Then, wait for the pulse to end.
  67   2      --------------------------------------*/
  68   2        while (!INT0);
  69   2        while (INT0);
  70   2      
  71   2      /*--------------------------------------
  72   2      Compute the width of the pulse -- one
  73   2      clock cycle is 1us for a standard 8051
  74   2      and display it.
  75   2      --------------------------------------*/
  76   2        printf ("The width pulse is: %ld uSec\n",
  77   2                (unsigned long)((TH0 << 8) | TL0 | ((unsigned long)T0_ISR_count << 16)));
  78   2        }
  79   1      }
  80          
  81          /*---------------------------------------------------------
  82          ---------------------------------------------------------*/
  83          
C51 COMPILER V7.00 Beta 6  MAIN                                                            06/18/2002 13:18:24 PAGE 3   

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION T0_ISR (BEGIN)
0000 C0E0              PUSH    ACC
                                           ; SOURCE LINE # 11
                                           ; SOURCE LINE # 13
0002 0500        R     INC     T0_ISR_count+01H
0004 E500        R     MOV     A,T0_ISR_count+01H
0006 7002              JNZ     ?C0009
0008 0500        R     INC     T0_ISR_count
000A         ?C0009:
                                           ; SOURCE LINE # 14
000A C28D              CLR     TF0
                                           ; SOURCE LINE # 15
000C D0E0              POP     ACC
000E 32                RETI    
             ; FUNCTION T0_ISR (END)

             ; FUNCTION main (BEGIN)
                                           ; SOURCE LINE # 21
                                           ; SOURCE LINE # 22
                                           ; SOURCE LINE # 28
0000 759850            MOV     SCON,#050H
                                           ; SOURCE LINE # 29
0003 438920            ORL     TMOD,#020H
                                           ; SOURCE LINE # 30
0006 758DFA            MOV     TH1,#0FAH
                                           ; SOURCE LINE # 31
0009 D28E              SETB    TR1
                                           ; SOURCE LINE # 32
000B D299              SETB    TI
                                           ; SOURCE LINE # 33
000D 438780            ORL     PCON,#080H
                                           ; SOURCE LINE # 35
0010 7BFF              MOV     R3,#0FFH
0012 7A00        R     MOV     R2,#HIGH ?SC_0
0014 7900        R     MOV     R1,#LOW ?SC_0
0016 120000      E     LCALL   _printf
                                           ; SOURCE LINE # 40
0019 D2A9              SETB    ET0
                                           ; SOURCE LINE # 41
001B D2AF              SETB    EA
                                           ; SOURCE LINE # 47
001D E589              MOV     A,TMOD
001F 54F0              ANL     A,#0F0H
0021 4409              ORL     A,#09H
0023 F589              MOV     TMOD,A
0025         ?C0002:
                                           ; SOURCE LINE # 49
                                           ; SOURCE LINE # 50
                                           ; SOURCE LINE # 56
0025 E4                CLR     A
0026 F500        R     MOV     T0_ISR_count,A
0028 F500        R     MOV     T0_ISR_count+01H,A
                                           ; SOURCE LINE # 57
002A F58C              MOV     TH0,A
                                           ; SOURCE LINE # 58
002C F58A              MOV     TL0,A
                                           ; SOURCE LINE # 60
002E D28C              SETB    TR0
                                           ; SOURCE LINE # 62

⌨️ 快捷键说明

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