📄 main.lst
字号:
C51 COMPILER V7.10 MAIN 02/03/2005 10:45:40 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN Main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Main.c OPTIMIZE(7,SIZE) BROWSE INCDIR(E:\WorkHome\932-DDSF\DDSF-932-002\;F:
-\WorkHome\932-DDSF\DDSF-932-003\) DEBUG OBJECTEXTEND
line level source
1 /*========================================*/
2 /*系统名称:DDSF-CECG-JiangSu */
3 /*函数名称:主程序 */
4 /*程序编写:步爱军 */
5 /*开始日期:2005-01-01 */
6 /*完成日期: */
7 /*修改记录: */
8 /*软件版本:DDSF-CECG-002 */
9 /*版本说明:用户数据保存在外部 */
10 /*外部器件:LM75、AT24C02、HT1621、LPC932 */
11 /* R8025、ADE7755 */
12 /*========================================*/
13
14 //特别声明:利用中断0模拟的485通讯简称串口通讯
15 // 利用MCU自带的串口进行的红外通讯
16 // 简称红外通讯
17
18 #include <REG932.H>
19 #include <define.h>
20 #include <Stdio.h>
21 #include <Intrins.h>
22
23 void main(void)
24 {
25 1 EA=0;
26 1 EA=0;
27 1 InitCpu(); //初始化CPU
28 1 InitCmd(); //命令初始化---判断硬复位还是软复位
29 1 InitLcd(); //初始化液晶显示驱动器
30 1 InitRTC(); //初始化时钟
31 1 WDT();
32 1 EA=1;
33 1 EA=1;
34 1 while(1)
35 1 {
36 2 LcdParse(); //显示方式处理
37 2 Temperature(); //温度采集处理
38 2 TimeSpend(); //费率时刻判断
39 2 CmdParse(); //外部通讯处理
40 2 PulseParse(); //脉冲采集处理
41 2 DataProtect(); //数据定时存储(15分钟存储一次数据)
42 2 LowPower(); //掉电检测
43 2 KeyParse(); //键盘采集处理
44 2 DataCom(); //通讯数据帧处理
45 2 StakeOut(0x00,0x01);
46 2 }
47 1 }
48 //485接收
49 void INT_INT0(void) interrupt 0
50 {
51 1 unsigned char BitData;
52 1 bit BitChk;
53 1 EA=0;
54 1 EX0=0;
C51 COMPILER V7.10 MAIN 02/03/2005 10:45:40 PAGE 2
55 1 WDT();
56 1 EX0=0;
57 1 BitData=0;
58 1 BitChk=1;
59 1 SeriesInData=0;
60 1 Delay(130); //等过起始位
61 1 while(BitData<9)
62 1 {
63 2 if(BitData==8)
64 2 {
65 3 SeriesBitNine=RXD;
66 3 }
67 2 if(RXD==1)
68 2 {
69 3 SeriesInData|=0x0080;
70 3 BitChk=~BitChk;
71 3 }
72 2 BitData++;
73 2 if(BitData<8)
74 2 {
75 3 SeriesInData>>=1;
76 3 }
77 2 Delay(90);
78 2 }
79 1 if(BitChk)
80 1 {
81 2 if(ComEn)
82 2 {
83 3
84 3 InfraredSt=0;
85 3 if(SeriesSt)
86 3 {
87 4 if(SeriesBufDptr<60)
88 4 {
89 5 if(SeriesBufDptr==0) //数据缓冲区地址指针是否为零
90 5 {
91 6 if(SeriesInData==0x68) //缓冲区的第一个数据是否等于0x68*/
92 6 {
93 7 ComDataBuf[0]=SeriesInData; //数据保存到缓冲区*/
94 7 SeriesBufDptr++; //缓冲区地址累加*/
95 7 }
96 6 else
97 6 {
98 7 SeriesBufDptr=0;
99 7 }
100 6 }
101 5 else
102 5 {
103 6 ComDataBuf[SeriesBufDptr]=SeriesInData; //数据保存到缓冲区*/
104 6 SeriesBufDptr++; //缓冲区地址累加*/
105 6 }
106 5 }
107 4 else
108 4 {
109 5 SeriesBufDptr=0;
110 5 }
111 4 if(ComDataBuf[ComDataBuf[9]+11]==0x16)
112 4 {
113 5 SeriesBufDptr=0;
114 5 SeriesFg=1;//串口占用数据通道有标志效
115 5 ComBit=1;
116 5 }
C51 COMPILER V7.10 MAIN 02/03/2005 10:45:40 PAGE 3
117 4 else//命令错误释放串口占用数据通道标志
118 4 {
119 5 SeriesFg=0;//串口占用数据通道标志失效
120 5 }
121 4 }
122 3 }
123 2 else
124 2 {
125 3 ComEn=1;
126 3 SeriesSt=1;
127 3 }
128 2 }
129 1 EX0=1;
130 1 EA=1;
131 1 }
132 void INT_T0(void) interrupt 1 //定时器---产生模拟接受时序间隔信号
133 {
134 1 ET0=0; //定时器0中断使能禁止
135 1 TR0=0; //定时器0中断使能禁止
136 1 TR0=1;
137 1 ET0=1;
138 1 }
139 void INT_INT1(void) interrupt 2 //外部中断1---红外接收中断
140 {
141 1 EX1=0;
142 1 }
143 //定时器---产生0.25秒信号
144 void INT_T1(void) interrupt 3
145 {
146 1 WDT();
147 1 ET1=0;
148 1 TR1=0;
149 1 CkData++;
150 1 ComTimeA++;
151 1 //LCD显示间隔---秒单位
152 1 if(CkData>=90)
153 1 {
154 2 CkData=0;
155 2 LcdTime++;
156 2 LcdTimeFg=1;
157 2 PingLed=~PingLed; //峰指示灯点亮
158 2 if(LcdTime>=4)
159 2 {
160 3 LcdRunData++;
161 3 LcdTime=0;
162 3 }
163 2 ComTimeB++;
164 2 if(ComTimeB>=5) //通讯指示点亮时间---5秒
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -