📄 main.lst
字号:
C51 COMPILER V7.50 MAIN 08/20/2006 14:48:06 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN MAIN.OBJ
COMPILER INVOKED BY: E:\Program Files\keil\C51\BIN\C51.EXE MAIN.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "MAIN.H"
2 #include "display.h"
3 #include "disdrive.h"
4 #include "KEY.H"
5 #include "X.H"
6
7 //定义串口缓冲区和结构体
8 #define ADDRESSL 0xFF //地址校验码地位
9 #define ADDRESSH 0xFF //地址校验码高位
10
11 #define BufferLen 30
12 #define SEARIALTIME 0x64 //串口接收完所有数据的最大时间,5s
13
14 unsigned char data RealReceiveLen ; //实际接收到个数
15 unsigned char data CheckSum ; //校验码
16 unsigned char data ReceivBuf[BufferLen];
17 unsigned char data SerialTime ; //串口接收数据时间计数器,在接收中大于一个数可以认为此次接收丢失
18 unsigned char data ReceiveState ; //接收状态标志位
19
20 //定义时间变量
21 unsigned int ResetLedBackTime; //背光灯熄灭时间计数器
22 unsigned int CountTimeTime; //累计时间计数器
23 unsigned char IsSaveTime; //是否保存累计时间数据
24
25 unsigned char data GuZhangState; //故障状态
26 unsigned char data GuZhangTime; //故障延时计数器
27 unsigned char idata WriteGuZhangPtr; //故障存储指针,指向当前可以存储的地址首位
28 unsigned char idata GuZhangNum; //当前已经存储了的故障数
29 unsigned long data GuZhangShiJian; //故障发生时间
30 //申明应用定义在KEY.C中的全局变量
31 extern unsigned long idata CountTime;
32 extern struct INCOME idata Incomedata;
33
34 extern unsigned char data IsKeyDown;
35 extern unsigned int data AutoKeyTime;
36 extern unsigned int data KeyDelayTime;
37 extern unsigned char data UpdataLEDTime;
38
39 void SYS_Init()
40 {
41 1 EA = 0;
42 1 ResetLedBackTime = 0; //变量初始化
43 1 CountTimeTime = 0;
44 1
45 1 SysReg_Init(); //system register initial block
46 1 Serial_Init(); //serial initial block;
47 1 HardInitialLED(); //display initial block
48 1 InitialKey(); //key initail block
49 1 SetWatchDog(); //set watch dog
50 1 FeedDog(); //Error Light off
51 1
52 1 TR1 = 1; //timer1 start
53 1 TR0 = 1; //timer0 start
54 1 EA = 1;
55 1 }
C51 COMPILER V7.50 MAIN 08/20/2006 14:48:06 PAGE 2
56
57
58 void SysReg_Init()
59 {
60 1 //IE setting
61 1 EX0 = 0; //int0 disable
62 1 ET0 = 1; //timer0 interrupt enable
63 1 EX1 = 0; //int1 disable
64 1 ET1 = 1; //tiemr1 interrupt disable
65 1 ES = 1; //serial intrrupt enable
66 1 ET2 = 0; //timer2 interrupt disable
67 1 IP = 0x10; //serial interrupt high
68 1
69 1 //TMOD setting
70 1 SCON = 0x50; //串口工作方式1,允许接收
71 1 //SM0=0; SM1=1;SM2=0;REN=1;TB8=0;RB8=0;TI=0;RI=0;
72 1 PCON = 0x00; //波特率倍频
73 1 T2CON = 0x30; // 定时器2作为串口1的波特率发生器
74 1 RCAP2 = -(SYSCLK/BAUDRATE/32);
*** ERROR C202 IN LINE 74 OF MAIN.C: 'RCAP2': undefined identifier
75 1 TR2 = 1; // TR2=1
76 1
77 1
78 1 //TIMER0 SETTING
79 1 TMOD = 0x11; //定时器0和1都是方式1,16位计数器
80 1 TF0 = 0;
81 1 TH0 = TIMER0_H;
82 1 TL0 = TIMER0_L ;
83 1 //TIMER1 SETTING
84 1 TF1 = 0;
85 1 TH1 = TIMER1_H;
86 1 TL1 = TIMER1_L;
87 1
88 1 TI = 0; //初始化发送中断和接收中断
89 1 RI = 0;
90 1 }
91
92 void main(void)
93 {
94 1 unsigned int ErrorTemp; //故障中间变量
95 1 SYS_Init();
96 1 ErrorLight=ResetLight;
97 1 SetLEDBackLight();
98 1 LedFillNULL();
99 1 ShowWait();
100 1 FeedDog();
101 1 //初始化故障存储器
102 1 DataWrite25045EEROM(0,SAVEGUZHANG_ADD);
103 1 DataWrite25045EEROM(0,SAVEGUZHANG_ADD+2);
104 1 GuZhangState = NOGUZHANG;
105 1 //取出累计时间,高位存储在低地址
106 1 PageRead25045EEROM(SAVETIME_ADD,(unsigned char *)(&CountTime));
107 1
108 1 while(1)
109 1 {
110 2 FeedDog();
111 2 KeyPro();
112 2 if(ReceiveState == ENDRECEIVE) //接收完所有数据
113 2 {
114 3 if(CheckSum == 0x00)
115 3 {
116 4 SerialLight = SetLight; //点亮串口灯
C51 COMPILER V7.50 MAIN 08/20/2006 14:48:06 PAGE 3
117 4 ReadSerialBufData((unsigned int *)ReceivBuf,&(Incomedata.InputUA),14);//取出数据
118 4 if(Incomedata.ErrorCodeShuZi!=0)
119 4 {
120 5 ErrorTemp=DataRead25045EEROM(SAVEGUZHANG_ADD)|Incomedata.ErrorCodeShuZi;
121 5 DataWrite25045EEROM(ErrorTemp,SAVEGUZHANG_ADD);
122 5 GuZhangState = GUZHANGDELAY;
123 5 // GuZhangTime = 0;
124 5 ErrorLight = SetLight;
125 5 RunLight = ResetLight;
126 5 }
127 4 if(Incomedata.ErrorCodeMoNi!=0)
128 4 {
129 5 ErrorTemp=DataRead25045EEROM(SAVEGUZHANG_ADD+2)|Incomedata.ErrorCodeMoNi;
130 5 DataWrite25045EEROM(ErrorTemp,SAVEGUZHANG_ADD+2);
131 5 GuZhangState = GUZHANGDELAY;
132 5 // GuZhangTime = 0;
133 5 ErrorLight = SetLight;
134 5 RunLight = ResetLight;
135 5 }
136 4 delay(15);
137 4 SerialLight = ResetLight;
138 4 }
139 3 ReceiveState = STARTRECEIVE1;
140 3 RealReceiveLen = 0;
141 3 CheckSum = 0;;
142 3 }
143 2 //故障延时已到且当前没有收到故障
144 2 if(GuZhangState == GUZHANGDELAYOVER&&Incomedata.ErrorCodeShuZi==0&&Incomedata.ErrorCodeMoNi==0)
145 2 {
146 3 ErrorLight = ResetLight;
147 3 RunLight = SetLight;
148 3 GuZhangState = NOGUZHANG;
149 3 }
150 2 if(SerialTime >= SEARIALTIME) //串口通讯等待时间过长
151 2 Serial_Init();
152 2 if(IsSaveTime)
153 2 {
154 3 IsSaveTime = 0;
155 3 PageWrite25045EEROM(SAVETIME_ADD,(unsigned char *)(&CountTime));
156 3 }
157 2 }
158 1
159 1 }
160
161 void TO_INT(void) interrupt 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -