📄 main.lst
字号:
C51 COMPILER V8.02 MAIN 09/16/2008 10:53:22 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /********************************工程文件说明*******************************/
2 /*FileName:main.c */
3 /*Author:烛光 */
4 /*Version:v1.0 */
5 /*Data:2008年07月11日 */
6 /*Description:工程主程序文件,包含状态机制和时间机制两条主线。 */
7 /*Function List: */
8 /* 1.main 主程序,状态机制 */
9 /* 2.scrfresh 状态辅助程序,刷新屏幕 */
10 /* 3.time_manager 时间控制程序,时间机制 */
11 /* 4.…… */
12 /*History: */
13 /* 3.烛光 2008.09.13 v1.0 初步完成设计 */
14 /* 2.烛光 2008.09.13 v1.0 初步完成设计 */
15 /* 1.烛光 2008.07.11 v0.0 开始设计 */
16 /*Copyright (c) 2008 烛光 All Rights Reserved */
17 /***************************************************************************/
18
19 /***********************************硬件接口说明****************************/
20 /*MCU
21 1、STC89C58RD+
22 /*LM19264A接口说明
23 1、DB7--P0^7 5、DB3--P0^3 9、 EN--P2^5 13、VDD--VDD 17、VOUT--RP3
24 2、DB6--P0^6 6、DB2--P0^2 10、RW--P2^4 14、VSS--GND 18、RSTB--P2^0
25 3、DB5--P0^5 7、DB1--P0^1 11、RS--P2^3 15、CSA--P2^2 19、BLA--VDD
26 4、DB4--P0^4 8、DB0--P0^0 12、VO--RP2 16、CSB--P2^1 20、BLK--GND
27 /*键盘接口说明
28 1、JP6.1--P2.6 2、JP6.2--P.7 JP2.3--GND
29
30 /***********************************头文件包含******************************/
31 #include <intrins.h>
32
33 #include "hardware.h"
34 #include "software.h"
35 #include "keyboard.h"
36 #include "lm19264.h"
37 #include "serial.h"
38 #include "eeprom.h"
39
40 /************************************符号定义*******************************/
41 //使用接口定义
42 //见其他各头文件
43
44 //使用寄存器定义
45 #define startclk TR0
46
47 /************************************变量定义*******************************/
48
49 bit scrfreshf=1;//刷新屏幕标志
50 bit mlimitf=0;//分限制标志
51 bit slimitf=0;//秒限制标志
52 bit newnewsf=0;//收到新消息
53 bit newnewsf0=0;//新消息0
54 bit newnewsf1=0;//新消息1
55 bit newnewsf2=0;//新消息2
C51 COMPILER V8.02 MAIN 09/16/2008 10:53:22 PAGE 2
56 bit oldnewsf=0;//旧消息标志
57 bit oldnewsf0=0;//旧消息0
58 bit oldnewsf1=0;//旧消息1
59 bit oldnewsf2=0;//旧消息2
60 bit newsoverf=0;//显示消息结束标志
61 bit statefinish=0;//状态任务完成标志
62 bit gprscarryf=0;//gprs传送位
63 bit gprsresf=0;//gprs回复标志位
64 bit gprslostf=0;//gprs回复丢失标志位
65 bit contraf=0;
66 bit tiaoshi=0;//调试程序标志
67
68 uchar timer=0;
69 uchar second=0;
70 uchar minute=0;
71 uchar hour=0;
72 uchar state=0;
73 uchar minutecopy=0;
74 uchar secondcopy=0;
75 uchar storeturn=0;//eep消息存储顺序
76 uchar gprssendtime=0;
77 uchar gprscode=0;
78 uchar gprsturner=0;
79 uchar gprsharth=0;
80 uchar ti=0;//测试计数标志
81
82 /************************************函数声明*******************************/
83 void scrfresh(void);
84 void time_manager(void);
85 void getdata(void);
86 void displaynews(uchar startstr);
87 void storenews(void);
88 void loadnews(uchar m);
89 void showoldnews(void);
90 void rectify(void);
91 void device_init(void);
92 void displaygprs(void);
93 void displaycdma(void);
94
95 /***************************************************************************/
96 ////////////////////////////////////主程序///////////////////////////////////
97 /***************************************************************************/
98 /**********************************状态机制*********************************/
99 void main(void)
100 {
101 1
102 1 device_init();
103 1
104 1 while(1)
105 1 {
106 2 //第一喂狗
107 2 WDT_CONTR=0x3f;
108 2 //第二优先处理
109 2 if(TF0)time_manager();
110 2 //第三状态处理
111 2 /*0000000000000000000000000000000000000000000000000000000000000000000000000*/
112 2 if(state<0x10)//〇.总界面
113 2 {
114 3 switch(state)
115 3 {
116 4 case 0x00:if(scrfreshf){scrfreshf=0;scrfresh();break;}break;
117 4 case 0x01:break;
C51 COMPILER V8.02 MAIN 09/16/2008 10:53:22 PAGE 3
118 4 case 0x02:break;
119 4 case 0x03:break;
120 4 default:break;
121 4
122 4 }
123 3 }
124 2 /*1111111111111111111111111111111111111111111111111111111111111111111111111*/
125 2 if(state>=0x10&&state<0x20)//I.旧消息
126 2 {
127 3 switch(state)
128 3 {
129 4 case 0x10:if(statefinish==0){statefinish=1;mlimitf=1;showoldnews();break;}break;
130 4 case 0x11:if(statefinish==0){statefinish=1;;break;}break;
131 4 case 0x12:if(statefinish==0){statefinish=1;;break;}break;
132 4 case 0x13:if(statefinish==0){statefinish=1;;break;}break;
133 4 case 0x14:if(statefinish==0){statefinish=1;;break;}break;
134 4 case 0x15:if(statefinish==0){statefinish=1;;break;}break;
135 4 default:break;
136 4 }
137 3 }
138 2 /*2222222222222222222222222222222222222222222222222222222222222222222222222*/
139 2 if(state>=0x20&&state<0x30)//II.显示消息
140 2 {
141 3 switch(state)
142 3 {
143 4 case 0x20:
144 4 if(statefinish==0)
145 4 {
146 5 mlimitf=1;//一分钟倒计时开始
147 5 statefinish=1;//任务完成
148 5 displaynews(0);
149 5 break;
150 5 }
151 4 else break;
152 4 case 0x21:
153 4 if(statefinish==0)
154 4 {
155 5 statefinish=1;mlimitf=1;
156 5 displaynews(32);lcd_prt_letter(23,0x2c,0);
157 5 break;
158 5 }break;
159 4 case 0x22:
160 4 if(statefinish==0)
161 4 {
162 5 statefinish=1;mlimitf=1;
163 5 displaynews(64);lcd_prt_letter(23,0x2c,0);
164 5 break;
165 5 }break;
166 4 case 0x23:
167 4 if(statefinish==0)
168 4 {
169 5 statefinish=1;mlimitf=1;
170 5 displaynews(96);lcd_prt_letter(23,0x2c,0);
171 5 break;
172 5 }break;
173 4 case 0x24:
174 4 if(statefinish==0)
175 4 {
176 5 statefinish=1;mlimitf=1;
177 5 displaynews(128);lcd_prt_letter(23,0x2c,0);
178 5 break;
179 5 }break;
C51 COMPILER V8.02 MAIN 09/16/2008 10:53:22 PAGE 4
180 4 case 0x25:
181 4 if(statefinish==0)
182 4 {
183 5 statefinish=1;mlimitf=1;
184 5 displaynews(160);lcd_prt_letter(23,0x2c,0);
185 5 break;
186 5 }break;
187 4 case 0x26:
188 4 if(statefinish==0)
189 4 {
190 5 statefinish=1;mlimitf=1;
191 5 displaynews(192);lcd_prt_letter(23,0x2c,0);
192 5 break;
193 5 }break;
194 4 case 0x27:
195 4 if(statefinish==0)
196 4 {
197 5 statefinish=1;mlimitf=1;
198 5 displaynews(224);lcd_prt_letter(23,0x2c,0);
199 5 break;
200 5 }break;
201 4 case 0x28:
202 4 if(statefinish==0)
203 4 {
204 5 statefinish=1;//状态收到
205 5 mlimitf=1;//一分钟倒计时开始
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -