📄 checkmode.lst
字号:
C51 COMPILER V7.50 CHECKMODE 05/23/2008 10:14:05 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE CHECKMODE
OBJECT MODULE PLACED IN checkmode.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE bottom\checkmode.c LARGE OPTIMIZE(9,SIZE) BROWSE NOAREGS MODDP2 INCDIR(E:\w
-ork\印度表\程序文件\程序\var\;E:\work\tiger D test\程序\var\) DEBUG OBJECTEXTEND PRINT(.\checkmode.lst) OBJECT(checkmode
-.obj)
line level source
1 /*************************************************************************************
2
3 文件类型:
4 文件作用:对flash进行擦除操作
5 修改权限:
6 文件相关:
7
8 创 建 人:chenbo
9 创建日期:2007.11.24
10 当前版本:Ver0.1
11
12 版本信息:Ver0.1
13
14 **************************************************************************************/
15 #include "Tiger.h"
16 extern unsigned char recover_item(unsigned int flashaddr,unsigned int ramaddr,unsigned char num);
17 extern void Recover_meter(void);
18 struct check_struct //参数地址列表
19 { unsigned int flashaddr; //参数在flash中的地址
20 unsigned int id_data; //ID号
21 unsigned char num; //参数在flash中的长度
22 };
23
24 const struct check_struct code check_addrtalbe[]=
25 { {FL_canshu01+130,ID_PRIOXUL ,3}, //需量参数
26 {FL_canshu01+133,ID_CHANGSHU,4}, //脉冲常数
27 {FL_canshu01+137,ID_BANTRATA,2}, // 波特率
28 {FL_canshu01+139,ID_COMADDR,7}, //表号
29 {FL_canshu01+146,ID_GATCUTPOW,4}, //是呀门限
30 {FL_canshu01+150,ID_GATLOSTCUR,4}, //失流门限
31 {FL_canshu01+154,ID_TIMERETUN,2}, //轮显时间
32 {FL_canshu01+156,ID_PRIOCOSENG,2} //功率因数计量周期
33 };
34
35 //======================================================================
36 //函数功能:对check模块进行初始化
37 //
38 //======================================================================
39 void Ini_checkmode(void)
40 { unsigned char i;
41 1 flag_runcheckmode=0;
42 1 flag_mincheck=RTCTIME.rMinute;
43 1 for(i=0;i<16;i++)
44 1 count_flagereas[i]=0; //清零页擦除等待计数器
45 1 times_pllerror=0;
46 1 flag_errorflash01.byte=0;
47 1 }
48
49 //==================================================================
50 //函数功能:对pll进行渐次
51 //
52 //==================================================================
53
C51 COMPILER V7.50 CHECKMODE 05/23/2008 10:14:05 PAGE 2
54 void check_pll(void)
55 { unsigned char xdata *p;
56 1 p=0x28d3;
57 1 if(*p!=0x01)
58 1 { times_pllerror++;
59 2 if(times_pllerror>3)
60 2 { times_pllerror=0;
61 3 SetPLL(); //开pll电路
*** WARNING C209 IN LINE 61 OF BOTTOM\CHECKMODE.C: '_SetPLL': too few actual parameters
62 3 }
63 2 }
64 1 else
65 1 times_pllerror=0;
66 1 }
67
68 //==========================================================
69 //函数功能:对flash页状态进行检测
70 //备注:检测到页损坏,置位相应的标志位
71 //==========================================================
72 void check_flashpage(void)
73 { unsigned char i,temp_flag;
74 1 temp_flag=flag_ereasflash01.byte;
75 1 for(i=0;i<8;i++)
76 1 { if((temp_flag&0x01)==0x01) //如果该页擦除标志位置位
77 2 count_flagereas[i]++; //计数器累加
78 2 else
79 2 count_flagereas[i]=0; //如果每置位,则清零标志位
80 2
81 2 if(count_flagereas[i]>10) //如果擦除标志位10钟尚未相应,则该页错误
82 2 { flag_errorflash01.byte=flag_errorflash01.byte|set_bittable[i]; //置位页损坏标志位
83 3 count_flagereas[i]=0;
84 3 }
85 2
86 2 temp_flag=temp_flag>>1;
87 2 }
88 1 /*
89 1 temp_flag=flag_ereasflash02.byte;
90 1 for(i=0;i<3;i++)
91 1 { if(temp_flag&0x01==0x01) //如果该页擦除标志位置位
92 1 count_flagereas[i+8]++; //计数器累加
93 1 else
94 1 count_flagereas[i+8]=0; //如果每置位,则清零标志位
95 1
96 1 if(count_flagereas[i+8]>10) //如果擦除标志位10钟尚未相应,则该页错误
97 1 { flag_errorflash02.byte=flag_errorflash02.byte|set_bittable[i]; //置位页损坏标志位
98 1 count_flagereas[i+8]=0;
99 1 }
100 1
101 1 temp_flag=temp_flag>>1;
102 1 }
103 1 */
104 1 }
105
106 //==========================================================================
107 //函数功能:程序自检,对个参数和flash页的状态进行自检
108 //
109 //==========================================================================
110 void check_mode(void)
111 { static unsigned char i;
112 1 if(flag_runcheckmode==1)
113 1 { flag_runcheckmode=0;
114 2 check_flashpage(); //flash每秒检测一次,确定页有没有损坏
C51 COMPILER V7.50 CHECKMODE 05/23/2008 10:14:05 PAGE 3
115 2 check_pll(); //pll电路每秒检测一次
116 2 if(flag_mincheck!=RTCTIME.rMinute) //参数每1分钟检测一次
117 2 { if(i<8) //分8次测试数据
118 3 { i++;
119 4 }
120 3 else
121 3 { i=0;
122 4 flag_mincheck=RTCTIME.rMinute;
123 4 }
124 3 if(i<8)
125 3 { addr_baseonIDandtype(RAM,check_addrtalbe[i].id_data); //取指针
126 4 recover_item(check_addrtalbe[i].flashaddr,(*ID_coretalbpoint[0]).dataaddr,check_addrtalbe[i].
-num);
127 4 }
128 3 else
129 3 Recover_meter();
130 3 }
131 2
132 2 }
133 1
134 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 299 ----
CONSTANT SIZE = 40 ----
XDATA SIZE = 1 ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -