📄 main.lst
字号:
C51 COMPILER V8.01 MAIN 08/08/2008 09:30:15 PAGE 1
C51 COMPILER V8.01, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c LARGE BROWSE DEBUG OBJECTEXTEND
line level source
1 /*********************************************************************/
2 //周期测量模块
3 /*********************************************************************/
4 #include<C8051F000.h>
5 #include<define.h>
6 unsigned int Pulse_Counts=0; //脉冲数
7 unsigned int Flow_Counts=0; //定时器溢出数
8 double T,F; //被测信号周期
9 unsigned int Cat_F; //第一个沿时的定时器值
10 unsigned int Cat_L; //最后一个沿时的定时器值
11 void main()
12 {
13 1 WDTCN=0xde; //关看门狗
14 1 WDTCN=0xad;
15 1 SYSCLK_Init(); //时钟初始化
16 1 PORT_Init(); //端口初始化
17 1 PCA_Init(); //PCA初始化
18 1 EIE1|=0x08; //允许PCA0中断
19 1 EA=1; //开总中断
20 1 while(1); //等待中断到
21 1 }
22
23 void PCA0_ISR(void) interrupt 9
24 {
25 1 EA=0; //中断禁止
26 1 if(CCF0==1)
27 1 {
28 2 CCF0=0; //清中断标志
29 2 Pulse_Counts++; //脉冲数加一
30 2 if(Pulse_Counts==1) //捕捉第一个上升沿到时定时器值
31 2 {
32 3 Cat_F=PCA0CPH0*256+PCA0CPL0;
33 3 }
34 2 if(Pulse_Counts==2&&Flow_Counts>0) //捕捉第一个上升沿到时定时器值
35 2 {
36 3 Cat_L=PCA0CPH0*256+PCA0CPL0; //低频计算
37 3 T=65535*(Flow_Counts-1);
38 3 T+=(65536-Cat_F)+Cat_L;
39 3 T=T*4/SYSCLK;
40 3 F=1/T;
41 3
42 3 }
43 2
44 2 else if(Flow_Counts==1&&Pulse_Counts>2) //高频计算
45 2 {
46 3 Cat_L=PCA0CPH0*256+PCA0CPL0;
47 3 T=65535-Cat_F+Cat_L;
48 3 T=T*4/(SYSCLK*(Pulse_Counts-1));
49 3 F=1/T;
50 3 }
51 2 }
52 1
53 1 if(CF==1)
54 1 {
55 2 CF=0; //溢出中断标志清零
C51 COMPILER V8.01 MAIN 08/08/2008 09:30:15 PAGE 2
56 2 Flow_Counts++; //溢出数加一
57 2 }
58 1
59 1 EA=1; //开总中断
60 1 }
61
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 572 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 16 ----
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 + -