📄 int.lst
字号:
C51 COMPILER V7.06 INT 10/23/2004 16:55:18 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE INT
OBJECT MODULE PLACED IN Int.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Int.c OPTIMIZE(4,SPEED) BROWSE MOD517(NOAU) DEBUG OBJECTEXTEND
stmt level source
1 //****************************************************************************
2 // @Module Interrupt Controller
3 // @Filename INT.C
4 // @Project
5 //----------------------------------------------------------------------------
6 // @Controller Infineon C505C-2R
7 //
8 // @Compiler Keil
9 //
10 // @Codegenerator DAvE 2-0-0
11 //
12 // @Description This file contains all functions that use the IR
13 //
14 //
15 //----------------------------------------------------------------------------
16 // @Date 01-2-24 12:51:12
17 //
18 //****************************************************************************
19
20 //////////////////////////////////////////////////////////////////////////////
21 //Author:LiAnChuan //
22 //All copyrights for this routine are reserved;Unauthorized down loading or //
23 //other kinds of copying prohibited! //
24 //////////////////////////////////////////////////////////////////////////////
25
26 //****************************************************************************
27 // @Project Includes
28 //****************************************************************************
29
30 #include "MAIN.H"
31 #include "INT.H"
32 #include "CAN.H"
33 #include "PER.H"
34 #include "MSGTABLE.H"
35 //////////////////////////////////////////////////////////////////////////////
36 //****************************************************************************
37 // @variable definition
38 //****************************************************************************
39 extern unsigned char xdata MsgTrans[20][8]; //message translated buffer
40 extern unsigned char xdata diagnostic[8];
41 extern bit ReceivedFlag; //receive ok flag
42 extern unsigned char xdata * p;
43
44 extern unsigned char xdata CANSendCTimer;
45 ////RS232 communication //////////////
46 extern bit NewReceive;//if a character is received,set this flag
47 extern unsigned int xdata ReceiveTimer;//receive delay timer between two character
48 extern unsigned char xdata ReceiveBuffer[RXD_MAX_NUM];//
49 extern unsigned char xdata SendBuffer[TXD_MAX_NUM];
50 extern unsigned char xdata ReceiveCounter;
51 extern unsigned char xdata SendCounter;
52 extern bit NewCommand;//if a command have been received ,set this flag to indicator
53 //the command is processing
54 extern unsigned char xdata SendNumber;//need sending byte number
55 extern unsigned char xdata SendTimer;
C51 COMPILER V7.06 INT 10/23/2004 16:55:18 PAGE 2
56 extern bit ReceiveRight;
57 extern unsigned char xdata RunTime;
58 extern unsigned char xdata FuelUse;
59 extern unsigned char xdata RunErrorTimes;
60 extern unsigned char xdata GateTimer;
61 //////////////////////////////////////////////////////////////////////////////////
62 extern unsigned char xdata ADTimer;
63 extern unsigned char PowerOnTimer;
64 extern bit PowerOn;
65
66 extern float xdata RunMileage;//mileage from engine starting to engine stopping
67 extern float xdata SingleMileage;//mileage from last clearing
68 extern float xdata TotalMileage;//total mileage
69 extern unsigned char xdata MileageTimer;//1s timer for calculating mileage
70 extern unsigned int xdata SaveTimer;//10min auto save timer
71 extern bit SaveFlag;//
72 extern unsigned int xdata SlaveTimer1;//if slave have sent right message clear the timer
73 extern unsigned int xdata SlaveTimer2;//else if the counter value is more enought ,reset system
74
75 extern unsigned char xdata ErrorCodeTimes[30];//error code times,if no error ErrorCodeTimes[]=0
76 //else ErrorCodeTimes[]++,if ErrorCodeTimes[]>ERROR_TIMES
77 //set the error bit
78 extern unsigned int xdata ClearDelayTimer1;//clear error code delay timer
79 extern unsigned int xdata ClearDelayTimer2;//clear single mileage delay timer
80 extern unsigned char xdata ClearOnTimer1;//clear switch on times
81 extern unsigned char xdata ClearOnTimer2;
82 extern bit ClearErrorFlag;
83 extern bit ClearMileageFlag;
84 extern unsigned char T0IntCounter;
85 extern unsigned char TH0Buffer;
86 extern unsigned char TL0Buffer;
87 extern unsigned char T0IntBuffer;
88 extern unsigned char EX1OffTimer;
89 extern bit EX1IntFlag;
90 extern unsigned char Fre2CalTimer;
91 extern bit Fre2CalFlag;
92 extern unsigned char Send_count;
93 extern unsigned char Send_count1;
94 extern unsigned char Send_count2;
95 extern unsigned char Send_obj;
96 extern unsigned char Send_data;
97 extern bit cantransflag;
98 //extern unsigned int xdata FuelQTimer;
99 //extern unsigned int xdata WaterTimer;
100
101 //////////////////////////////////////////////////////////////////////////////
102
103 void INT_vInit(void)
104 {
105 1 /// ---------- external interrupt 0 ----------
106 1 /// enable
107 1 EX0 = 1;
108 1 IT0=1;
109 1 /// ---------- external interrupt 1 ----------
110 1 /// disabled
111 1 EX1=1;
112 1 IT1=1;
113 1 ET0=1;
114 1 ET2=1;
115 1 ///----------serial port interrup----------
116 1 ES=1;
117 1 /// enabled
C51 COMPILER V7.06 INT 10/23/2004 16:55:18 PAGE 3
118 1 ECAN=1; //* for C505C *
119 1 //IEN2 = 0x02; //* for C515C *
120 1 ///---------- timer interrupt-----------------
121 1
122 1 //ET1=1; //enable Timer1 interrupt.
123 1 // ET2=1;
124 1 ///-----------interrupt prioty----------------
125 1 ///////#########
126 1 // IP0 |=0x06;//sirial port is high priority.
127 1 // IP1 |=0x10;
128 1 IP1 |=0x07;
129 1 IP0 |=0x05;
130 1 ///clear all interrupt requests to prevent unintentional generation of an interrupt
131 1 IRCON=0x00;
132 1 ///-------- globally enable interrupts---------
133 1
134 1 EA=1;
135 1 }
136
137 //This is the interrupt service routine for the
138 //software-interrupt (shared with CAN vector).
139
140 void INT_viIsrSwi(void) interrupt CANI
141 {
142 1 unsigned char can_status,int_reg; //define two variables to save CAN status
143 1 //register and interrupt register's value;
144 1 while(int_reg=IR) //while interrupt identifier(INTID) not zero
145 1 {
146 2 can_status=SR;
147 2 SR=0; //read and reset CAN status.
148 2 switch (int_reg)
149 2 {
150 3 case 1: //--Status and error interrupt--
151 3 if (CR&0x04) //SIE=1***********status interrupt*******
152 3 {
153 4 if(can_status & 0x08) //transmit interrupt
154 4 {
155 5 ;
156 5 }
157 4 if(can_status & 0x10) //receive interrupt
158 4 {
159 5 ;
160 5 }
161 4 if(can_status & 0x07) //erroneous transfer
162 4 {
163 5 ;
164 5 }
165 4 }
166 3
167 3 if (CR&0x08) //EIE=1************error interrupt*********
168 3 {
169 4 if(can_status & 0x40) //EWEN has changed
170 4 {
171 5 // if(ErrorTimes<ERRORTIMES)
172 5 // {
173 5 // ErrorTimes++;
174 5 // }
175 5 // else
176 5 // {
177 5 CAN_vInit(); //initialize CAN controller again
178 5 // ErrorTimes=0;
179 5 //ErrorFlag=1;
C51 COMPILER V7.06 INT 10/23/2004 16:55:18 PAGE 4
180 5 // }
181 5 }
182 4 if(can_status & 0x80) //BUSOFF has changed
183 4 {
184 5 // if(ErrorTimes<ERRORTIMES)
185 5 // {
186 5 // ErrorTimes++;
187 5 //}
188 5 //else
189 5 // {
190 5 CAN_vInit(); //initialize CAN controller again
191 5 // ErrorTimes=0;
192 5 //ErrorFlag=1;
193 5 // }
194 5 }
195 4 }
196 3 break;
197 3 case 2: //-----Message Object 15 interrupt---------
198 3 break;
199 3 case 3: //-----Message Object 1 interrupt ----------
200 3 set_msg_MCR(1,INTPND,0); //reset INTPND
201 3 if(can_status & 0x08) //transmit interrupt
202 3 {
203 4 ;
204 4 }
205 3 if(can_status & 0x10) //receive interrupt
206 3 {
207 4 CAN_vStoreMsgObj(2,p);//save the received data to buffer
208 4 set_msg_MCR(2,NEWDAT,0); //reset NEWDAT.
209 4 // CAN_vStoreID(2,IDArray);//save id inorder to judge whether
210 4 ReceivedFlag=1; //indicate that communication is proper.
211 4 cantransflag=1;
212 4 // ErrorTimes=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -