📄 main.lst
字号:
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 + -