📄 capturetest.lst
字号:
C51 COMPILER V8.02 CAPTURETEST 03/14/2009 16:22:21 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE CAPTURETEST
OBJECT MODULE PLACED IN CaptureTest.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE CaptureTest.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <C8051F020.H>
2 #include "pwmtest.h"
3 #include "uart.h"
4 #include "stdio.h"
5 #include "intrins.h"
6
7 unsigned char CaptureFlag=0;
8 unsigned int temp=0;
9
10 void PCAInit()
11 {
12 1 EA=1; //允许总中断
13 1 EIE1|=0X08; // 允许PCA0中断(EIE1.3=1)
14 1 PCA0CPM1|=0X21;//CEX1上升沿触发
15 1
16 1 }
17
18 unsigned int Capture(void)
19 {
20 1 unsigned int period,Hold_val,Curr_val;
21 1 union cap_val
22 1 {
23 1 char a[2];
24 1 unsigned int b;
25 1 } CAP_VAL;
26 1
27 1
28 1 while(CaptureFlag==0);
29 1
30 1 EA=0;
31 1
32 1 Hold_val=temp;
33 1 CAP_VAL.a[1]=PCA0CPL1;
34 1 CAP_VAL.a[0]=PCA0CPH1;
35 1 Curr_val=CAP_VAL.b;
36 1
37 1 if(Curr_val<Hold_val)
38 1 period=0xffff+Curr_val-Hold_val;
39 1 else
40 1 period=Curr_val-Hold_val;
41 1
42 1 temp=Curr_val; //保存上次的值
43 1 CaptureFlag=0;
44 1 EIE1|=0X08; //开PCA0中断(EIE1.3=1)
45 1
46 1 EA=1;
47 1
48 1 return period;
49 1 }
50
51 void main()
52 {
53 1 unsigned int Period;
54 1 float Frequency;
55 1 PORT_Init(); //CEX0 连到P0.0 CEX1连到P0.1
C51 COMPILER V8.02 CAPTURETEST 03/14/2009 16:22:21 PAGE 2
56 1 ClkInit();
57 1 PWMInit();
58 1 PCAInit();
59 1 UartInit();
60 1 TI0=1;
61 1 //printf("UART is OK!\n");
62 1
63 1 while(1)
64 1 {
65 2 Period=Capture();
66 2 Frequency=1843200/Period/2;
67 2 //printf("Period=%d\n",Period);
68 2 //printf("Frequency=%f\n",Frequency);
69 2
70 2 }
71 1 }
72
73
74
75
76 void CapInterrupt() interrupt 9
77 {
78 1
79 1 EIE1&=0Xf7; // 关PCA0中断(EIE1.3=0)
80 1 PCA0CN&=0XFD; //清CCF1中断标志
81 1 CaptureFlag=1;
82 1
83 1 _nop_();
84 1 //EIE1|=0X08; // 开PCA0中断(EIE1.3=1)
85 1
86 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 151 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 8
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 + -