📄 montor.lst
字号:
C51 COMPILER V8.05a MONTOR 12/24/2008 15:11:13 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE MONTOR
OBJECT MODULE PLACED IN montor.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE montor.c ROM(COMPACT) DEBUG OBJECTEXTEND
line level source
1 #include "STC12C5410AD.h"
2 #include "app.h"
3 #include <string.h>
4 #include <stdio.h>
5 #include <INTRINS.H>
6 #include <MATH.H>
7
8 void delay_n_ms( unsigned int n_milisecond);
9
10 unsigned int xdata Fos[125];
11
12
13 unsigned int Count =0;
14 unsigned int MainCount =0;
15 unsigned int SaveFos = 0;
16 unsigned int BigCount =0;
17 unsigned int SmallCount =0;
18 unsigned int ArbCount =0; //计算次数*时间
19 bit FLAG = 0;
20
21 //延时n_milisecond MS
22 //供内部调用函数
23 //可以在延时里面加入按键LED等处理
24 void delay_n_ms( unsigned int n_milisecond) /* n mS delay */
25 {
26 1 unsigned int i;
27 1 while(n_milisecond--)
28 1 {
29 2 i=500;
30 2 while(i--);
31 2 WDT_CONTR = 0x3c; //使能看门狗
32 2 }
33 1
34 1 }
35
36 unsigned char getkey()
37 {
38 1 unsigned char temp;
39 1 temp=0;
40 1 if(!KEY2) temp |=1;
41 1 temp <<=1;
42 1 if(!KEY1) temp |=1;
43 1 temp <<=1;
44 1 if(!KEY0) temp |=1;
45 1 temp <<=1;
46 1 if(!KEY3) temp |=1;
47 1
48 1 return temp;
49 1 }
50
51 // 10MS 定时
52 void Timer0(void) interrupt 1
53 {
54 1 unsigned char i;
55 1 unsigned long int Sum;
C51 COMPILER V8.05a MONTOR 12/24/2008 15:11:13 PAGE 2
56 1 unsigned int Fos1,Fos2;
57 1
58 1 TR0 = 0;
59 1 // RED_LED = ~ RED_LED;
60 1 MainCount = Count;
61 1 Count = 0;
62 1
63 1 if(MainCount !=0)
64 1 {
65 2 EX0 = 0; //关闭外部中断
66 2 TR0 = 0; //关闭本身中断
67 2
68 2 ArbCount++;
69 2
70 2 if(( MainCount>450)&&(ArbCount>40) ) // 说明是连接上了线圈
71 2 {
72 3 ArbCount =0;
73 3 if(MainCount>SaveFos)
74 3 {
75 4 SmallCount = 0;
76 4 Fos[BigCount++] = MainCount;
77 4 if( BigCount>124)
78 4 {
79 5 BigCount =0;
80 5 Sum =0;
81 5 for(i=0;i<62;i++)
82 5 {
83 6 Sum =Fos[i] +Sum;
84 6 }
85 5 Fos1 = Sum/62;
86 5
87 5 Sum =0;
88 5 for(i=62;i<124;i++)
89 5 {
90 6 Sum =Fos[i] +Sum;
91 6 }
92 5 Fos2 = Sum/62;
93 5
94 5 if(abs(Fos1-Fos2)<5)
95 5 {
96 6 SaveFos = (Fos1+Fos2)/2;
97 6 }
98 5 }
99 4 }
100 3 if(MainCount<SaveFos)
101 3 {
102 4 BigCount = 0;
103 4 Fos[SmallCount++] =MainCount;
104 4 if(SmallCount>124)
105 4 {
106 5 SmallCount =0;
107 5 Sum =0;
108 5 for(i=0;i<62;i++)
109 5 {
110 6 Sum =Fos[i] +Sum;
111 6 }
112 5 Fos1 = Sum/62;
113 5
114 5 Sum =0;
115 5 for(i=62;i<124;i++)
116 5 {
117 6 Sum =Fos[i] +Sum;
C51 COMPILER V8.05a MONTOR 12/24/2008 15:11:13 PAGE 3
118 6 }
119 5 Fos2 = Sum/62;
120 5
121 5 if(abs(Fos1-Fos2)<5)
122 5 {
123 6 SaveFos = (Fos1+Fos2)/2;
124 6 }
125 5
126 5 }
127 4 }
128 3
129 3 }
130 2
131 2
132 2 FLAG = 1;
133 2
134 2 }
135 1 else
136 1 {
137 2 MainCount =0;
138 2 EX0 = 1;
139 2 RED_LED = 1;
140 2 TR0 = 1;
141 2 }
142 1 WDT_CONTR = 0x3c; //使能看门狗
143 1
144 1
145 1 }
146
147 void Ex0(void) interrupt 0
148 {
149 1 Count++ ;
150 1
151 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 773 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 250 ----
PDATA SIZE = ---- ----
DATA SIZE = 12 9
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -