📄 freqcount.lst
字号:
C51 COMPILER V8.02 FREQCOUNT 09/06/2007 14:01:35 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE FREQCOUNT
OBJECT MODULE PLACED IN Freqcount.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Freqcount.c BROWSE DEBUG OBJECTEXTEND
line level source
1
2
3 //定时器0作为外部计数器,定时器1作为定时器,在定时1s范围内察看计数器0所计的数。
4
5 //-----------------------------------------------------------------------------
6
7 #include "c8051F020.h"
8 #include "intrins.h"
9 #include "CH452CMD.H" // 定义常用命令码及外部子程序
10 #include "pin.h"
11 #include "math.h"
12 #include "key_display.h"
13
14 #define N 4
15 #define SYSCLK (N*1000000) // 根据频率值设初值
16
17 unsigned int Frequence=0; //外部脉冲数变量
18 uchar times_of_overflow1=0;
19 float JIA=0;
20 uchar timein=10;
21 // Peripheral specific initialization functions,
22 // Called from the Init_Device() function
23
24
25
26 void Port_IO_Init()
27 {
28 1
29 1 XBR1 = 0x02; //交叉开关使能T0
30 1 XBR2 = 0x40; // 使能交叉开关和弱上拉
31 1 }
32
33
34
35 void Interrupts_Init()
36 {
37 1 IE = 0x0A; /*允许TF1/TF0标志位(TCON.7/TCON.5)的中断请求*/
38 1 /*定时器1/0发生溢出*/
39 1 IP = 0x0A; /*定时器1和0是高优先级中断*/
40 1 }
41
42 // Initialization function for device,
43 // Call Init_Device() from your main program
44 void Init_Device(void)
45 {
46 1 Reset_Sources_Init();
47 1 Timer_Init();
48 1 Port_IO_Init();
49 1 Oscillator_Init();
50 1 Interrupts_Init();
51 1 }
52
53 //定时n秒。不要放在循环语句中调用
54 void timecontrol(float n)
55 {
C51 COMPILER V8.02 FREQCOUNT 09/06/2007 14:01:35 PAGE 2
56 1 timein=(uchar)(n*10);
57 1 TR1=1;
58 1 TR0=1;
59 1 }
60
61 // MAIN Routine
62 void main (void)
63 {
64 1 Init_Device(); //初始化时钟 初始化交叉开关和IO口 初始化定时器0/1
65 1 EA=1; // 开总中断
66 1 //TR1=1; // 开定时器1
67 1 //TR0=1; // 开定时器0
68 1 timecontrol(0.5);
69 1 while (1)
70 1 {
71 2 //BCDdisplay1(Frequence);
72 2 //BCDdisplay_l(JIA);
73 2 delayms(200);
74 2 }
75 1 }
76
77
78
79 void TIMER0_ISR (void) interrupt 1 using 0
80 {
81 1 TF0=0; //清中断标志
82 1 }
83
84
85 void TIMER1_ISR (void) interrupt 3 using 1
86 {
87 1 TR1=0;
88 1 TF1=0;
89 1 TH1=0x7D ;
90 1 TL1=0xFB ;
91 1 if(times_of_overflow1 < timein)
92 1 times_of_overflow1 ++ ;
93 1 else
94 1 { TR0=0;
95 2 Frequence=TH0*0x100+TL0;
96 2 times_of_overflow1=0;
97 2 JIA+=(float)timein/10 ;
98 2 BCDdisplay_l(JIA);
99 2 TH0=0;
100 2 TL0=0;
101 2 TR0=1;
102 2 }
103 1
104 1 TR1=1;
105 1
106 1
107 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 231 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 8 4
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
C51 COMPILER V8.02 FREQCOUNT 09/06/2007 14:01:35 PAGE 3
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -