?? main.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 + -