📄 rtc_dsp.lst
字号:
C51 COMPILER V7.50 RTC_DSP 04/13/2007 13:24:54 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE RTC_DSP
OBJECT MODULE PLACED IN rtc_dsp.OBJ
COMPILER INVOKED BY: E:\Keil\C51\BIN\C51.EXE rtc_dsp.c ROM(COMPACT) BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <Reg931.h>
2 #include <Meter_def.h>
3 #include <General.h>
4
5 #ifdef uchar
6 #define READYDEF 1 //宏uchar已定义
7 #else
#define uchar unsigned char
#endif
10
11
12
13 //**********************************************************
14 //变量申明
15 //**********************************************************
16 extern uchar bdata MeterFlag;
17 extern bit Battery;
18 extern bit Hardware;
19 extern bit RsComm;
20 extern bit AdjTime;
21 extern bit EryRev;
22 extern bit AdjDate;
23 extern bit Fee0;
24 extern bit Fee1;
25
26 extern uchar bdata Flag;
27 extern bit TimeAdj;
28 extern bit TimeProg;
29 extern bit RxdFlag;
30 extern bit TxdFlag;
31 extern bit TxdWork;
32 extern bit DspType;
33 extern bit DspPage;
34 extern bit DspFlag;
35
36 extern uchar bdata SystemStates;
37 extern bit Comm_RTC_Err;
38 extern bit Comm_EPM_Err;
39 extern bit Data_RTC_Err;
40 extern bit Data_EPM_Err;
41 extern bit EryBln_Flag;
42 extern bit Prog_Flag;
43 extern bit Fee_Flag;
44 extern bit CommFlag;
45
46 extern uchar ComPtr;
47 extern uchar DspPtr;
48 extern uchar DspSec;
49 extern uchar RevSec;
50 extern uchar CommSec;
51 extern uchar CommTimer;
52
53 extern uchar Len[2];
54 extern uchar Addr[2];
55 extern uchar DspPara[4];
C51 COMPILER V7.50 RTC_DSP 04/13/2007 13:24:54 PAGE 2
56 extern uchar DspExch[6];
57 extern uchar PulseTmp[6];
58 extern uchar EryTmp[6];
59 extern uchar RTC[8];
60 extern uchar Ptr[8];
61 extern uchar idata ComBuf[RS_MaxSize];
62
63 extern unsigned int MSSum;
64 extern unsigned int ProgTimer;
65
66
67 //===============================================
68 //LCD_TABLE
69 //===============================================
70 uchar code LcdCoding[17]=
71 {
72 0xED, //"0" a+b+c+d+e+f
73 0x60, //"1" b+c
74 0xA7, //"2" a+b+d+e+g
75 0xE3, //"3" a+b+c+d+g
76 0x6A, //"4" b+c+f+g
77 0xCB, //"5" a+c+d+f+g
78 0xCF, //"6" a+c+d+e+f+g
79 0xE0, //"7" a+b+c
80 0xEF, //"8" a+b+c+d+e+f+g
81 0xEB, //"9" a+b+c+d+f+g
82 0xEE, //"A" a+b+c+e+f+g
83 0x4F, //"b" c+d+e+f+g
84 0x8D, //"C" a+d+e+f
85 0x67, //"d" b+c+d+e+g
86 0x8F, //"E" a+d+e+f+g
87 0x8E, //"F" a+e+f+g
88 0x00 //" "
89 };
90
91
92
93
94 //===============================================
95 //时钟温度补偿表
96 //===============================================
97 uchar code Equalize_Table[91]=
98 {
99 0x63,0x5F,0x5B,0x57,0x53, // 0~4
100 0x4F,0x4B,0x47,0x43,0x3F, // 5~9
101 0x3B,0x37,0x33,0x2F,0x2B, // 10~14
102 0x28,0x25,0x22,0x1F,0x1C, // 15~19
103 0x09,0x06,0x04,0x02,0x01, // 20~24
104 0x00, // 25
105 0x00,0x01,0x01,0x02,0x03, // 26~30
106 0x05,0x06,0x08,0x0A,0x0D, // 31~35
107 0x0F,0x12,0x15,0x19,0x1C, // 36~40
108 0x20,0x24,0x29,0x2E,0x32, // 41~45
109 0x38,0x3D,0x43,0x49,0x4F, // 46~50
110
111 0x55,0x5C,0x63,0x6A,0x71, // 51~55
112 0x79,0x81,0x89,0x92,0x9A, // 56~60
113 0xA3,0xAD,0xB6,0xC0,0xCA, // 61~65
114 0xD4,0xDE,0xE9,0xF4,0xFF, // 66~70
115
116 0x67,0x6B,0x6F,0x73,0x77, // -1 ~ -5
117 0x7C,0x81,0x86,0x8B,0x90, // -6 ~ -10
C51 COMPILER V7.50 RTC_DSP 04/13/2007 13:24:54 PAGE 3
118 0x95,0x9A,0x9F,0xA5,0xAB, // -11 ~ -15
119 0xB2,0xB8,0xBE,0xC4,0xCA // -16 ~ -20
120 };
121
122
123
124 //**********************************************************
125 //函数申明
126 //**********************************************************
127 void RTC_Dsp_Proc(void); //时间、显示事件处理
128 void Dsp_Proc(void); //显示处理
129 void Rev_Proc(void); //电能反向处理
130 void DspPara_Read(void); //读显示控制参数
131 void Ery_Balance(void); //电量冻结
132 void Temp_Equalize(void); //时钟温度补偿
133 void Fee_CHK(void); //费率检查和切换
134
135 void RTC_Init(void); //RTC初始化设置
136 void RTC_Read(void); //时间读取
137 void RTC_BAK(void); //时间备份
138 void SECINC(void); //秒加1
139
140 void Display(uchar idata *ptr); //LCD数据刷新
141 void RTC_Set(uchar staddr,uchar idata *ptr,uchar len); //RTC设置
142
143 bit DateTerm(void); //日期条件判断
144 bit DateCHK(uchar idata *ptr); //日期正确性判断
145 bit TimeCHK(uchar idata *ptr); //时间正确性判断
146
147 uchar Temp_Read(void); //温度测量
148 uchar LastMonthSN(uchar sn); //历史月份计算
149
150 extern bit ReadData(uchar idata *ptr);
151
152 extern void WriteEPMData(uchar idata *ptr);
153 extern void ErrorModify(uchar addr,uchar idata *ptr);
154
155
156
157
158 //**********************************************************
159 // 名称:RTC_Dsp_Proc()
160 // 功能:
161 // 说明:
162 //**********************************************************
163 void RTC_Dsp_Proc(void)
164 {
165 1 Watchdog_feed(); //喂狗
166 1
167 1 //电池情况
168 1 Battery = 1; //电池电压偏低
169 1 if(CMP2&0x02) Battery = 0; //电池电压正常
170 1
171 1 //********
172 1 //硬件情况
173 1 Hardware = 0; //电表硬件正确
174 1 if(SystemStates&0x0F) Hardware = 1; //电表硬件出错
175 1 //********
176 1
177 1 //编程开关处理
178 1 if(PROG==0)
179 1 {
C51 COMPILER V7.50 RTC_DSP 04/13/2007 13:24:54 PAGE 4
180 2 DelayNms(100); //按键延时100ms
181 2
182 2 if( PROG==0 )
183 2 {
184 3 Prog_Flag = 1; //确认编程按键操作有效
185 3 ProgTimer = 0x0000; //编程有效计时器清零
186 3 AdjDate = 1; //校时期有效
187 3
188 3 //通讯指示灯闪烁一下
189 3 LED_COMM = !LED_COMM;
190 3 DelayNms(100); //闪烁100ms
191 3 LED_COMM = !LED_COMM;
192 3 }
193 2 }
194 1 else
195 1 {
196 2 if(ProgTimer>=1800) //编程开关有效时间:30分钟
197 2 {
198 3 Prog_Flag = 0;
199 3 ProgTimer = 0x0000;
200 3 AdjDate = DateTerm(); //日期条件处理
201 3 }
202 2 }
203 1
204 1 //费率检查
205 1 if(Fee0==0&&Fee1==0) Fee_CHK(); //费率检查和恢复(出错处理)
206 1
207 1 //显示方式检查
208 1 if(DspParaCHK!=SumCHK(DspPara,3))DspPara_Read(); //显示控制参数校对处理
209 1
210 1 //显示刷新
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -