📄 do.lst
字号:
C51 COMPILER V7.10 DO 07/27/2008 16:49:15 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE DO
OBJECT MODULE PLACED IN do.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE do.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "c8051f040.h"
2 #include "can.h"
3
4 //-----------------------------------------------------------------------------
5 // GLOBAL CONSTANTS
6 //-----------------------------------------------------------------------------
7
8 //-----------------------------------------------------------------------------
9 // Functions
10 //-----------------------------------------------------------------------------
11 void SYSCLK_Init (void);
12 void PORT_Init (void);
13 void INT_Init (void);
14 void CAN_Init (void);
15 void CAN_Start(void);
16 void CAN_Transmit_Init (unsigned char MsgNum , unsigned char id);
17 void CAN_Receive_Init (unsigned char MsgNum , unsigned char id);
18 void Timer_Init (void);
19
20 void CAN_Receive_Interrupt (void);
21 void INT0_Interrupt (void);
22 void Timer0_Overflow_Interrupt (void);
23
24 //void Get_DO_Address (void);
25 void Control_DO (void);
26
27
28 void CAN_Transmit(unsigned char MsgNum,unsigned char *p_data );
29 void CAN_Receive (unsigned char MsgNum ,unsigned char *p);
30 void CAN_RemoteRqst_Init(unsigned char MsgNum , unsigned char id);
31 void CAN_RemoteRqst(unsigned char MsgNum);
32 void CAN_Remote_Send_Init(unsigned char MsgNum,unsigned char id );
33 void CAN_Remote_Updata(unsigned char MsgNum,unsigned char *p_data );
34 void delay1ms(unsigned int time);
35
36 //-----------------------------------------------------------------------------
37 // Global Variables
38 //-----------------------------------------------------------------------------
39 sbit OE = P4^0; //74HC245 ENABLE
40 sbit CANLED = P4^1; //CANLED 0 MEANS ON
41 bit b_data1=0; // DO_Error_Flag;
42 bit b_data2=0; // DO_Control_Flag;
43 bit b_data3=0; // DO_Message_Req_Flag;
44
45 unsigned char DO_Control_Data0;
46 unsigned char DO_Control_Data1;
47 unsigned char DO_Control_Data_New0;
48 unsigned char DO_Control_Data_New1;
49 unsigned char DO_Control_Data_Ordered0;
50 unsigned char DO_Control_Data_Ordered1;
51 unsigned char temp1, temp2;
52 unsigned char temppage,CAN_Status;
53
54 //xdata unsigned char ss1[8]={0x1a,0x2a,0x3a,0x4a,0x5a,0x6a,0x7a,0x8a};
55 //xdata unsigned char ss2[8]={0x1b,0x2b,0x3b,0x4b,0x5b,0x6b,0x7b,0x8b};
C51 COMPILER V7.10 DO 07/27/2008 16:49:15 PAGE 2
56 //xdata unsigned char ss3[8]={0x1c,0x2c,0x3c,0x4c,0x5c,0x6c,0x7c,0x8c};
57 xdata unsigned char rr1[8]={0,0,0,0,0,0,0,0};
58 xdata unsigned char rr2[8]={0,0,0,0,0,0,0,0};
59 xdata unsigned char rr3[8]={0,0,0,0,0,0,0,0};
60
61 void delay1ms(unsigned int time)
62 {
63 1 unsigned int i;
64 1 unsigned int j;
65 1 for(i=0;i<time;i++)
66 1 {
67 2 for(j=0;j<300;j++);
68 2 }
69 1 }
70
71
72 //-----------------------------------------------------------------------------
73 // Main Routine
74 //-----------------------------------------------------------------------------
75 void main ()
76 {
77 1
78 1 //unsigned char state; //CANSTAT
79 1
80 1 EA = 0;
81 1
82 1 WDTCN = 0xDE; //Disable Watchdog Timer
83 1 WDTCN = 0xAD;
84 1
85 1 SYSCLK_Init ();
86 1 PORT_Init ();
87 1 INT_Init ();
88 1
89 1 //Get_DO_Address ();
90 1
91 1 CAN_Init ();
92 1 CAN_Transmit_Init (1,1);
93 1 CAN_Receive_Init (2,1);
94 1 CAN_Start();
95 1
96 1 Timer_Init ();
97 1
98 1 OE = 0;
99 1 EA = 1;
100 1 TR0 = 1;
101 1
102 1
103 1 //CAN_Transmit(1,ss);
104 1 CAN_RemoteRqst_Init(1,1);
105 1 CAN_RemoteRqst_Init(2,2);
106 1 CAN_RemoteRqst_Init(3,3);
107 1
108 1 //P5 =0xaa;
109 1 //P5 =0x55;
110 1
111 1 CAN_RemoteRqst(1);
112 1 while (1)
113 1 {
114 2 // if(b_data1){P5=rr1[0];b_data1=0;}
115 2 // if(b_data2){P5=rr2[0];b_data2=0;}
116 2 // if(b_data3){P5=rr3[0];b_data3=0;}
117 2
C51 COMPILER V7.10 DO 07/27/2008 16:49:15 PAGE 3
118 2 }
119 1
120 1 }
121
122 //-----------------------------------------------------------------------------
123 // CAN_Receive_Interrupt
124 //-----------------------------------------------------------------------------
125 void CAN_Receive_Interrupt (void) interrupt 19
126 {
127 1 unsigned char temp;
128 1 temppage = SFRPAGE;
129 1 SFRPAGE = CAN0_PAGE;
130 1
131 1 CAN_Status = CAN0STA;
132 1 if((CAN_Status & 0x10)!=0)
133 1 {
134 2 CAN0STA = CAN_Status & 0xef;
135 2 CAN0ADR = INTPEND1;
136 2 temp = CAN0DATL; //
137 2
138 2 if((temp & 0x01)!=0)
139 2 {
140 3 CAN_Receive(1,rr1);
141 3 SFRPAGE = 0x0f;
142 3 P5= rr1[7];
143 3 P6= rr1[6];
144 3 SFRPAGE = CAN0STA;
145 3 delay1ms(10000);
146 3 CAN_RemoteRqst(2);
147 3 }
148 2
149 2 if((temp & 0x02)!=0)
150 2 {
151 3 CAN_Receive(2,rr2);
152 3 SFRPAGE = 0x0f;
153 3 P5= rr2[7];
154 3 P6= rr2[6];
155 3 SFRPAGE = CAN0STA;
156 3 delay1ms(10000);
157 3 CAN_RemoteRqst(3);
158 3 }
159 2
160 2 if((temp & 0x04)!=0)
161 2 {
162 3 CAN_Receive(3,rr3);
163 3 SFRPAGE = 0x0f;
164 3 P5= rr3[7];
165 3 P6= rr3[6];
166 3 SFRPAGE = CAN0STA;
167 3 delay1ms(10000);
168 3 CAN_RemoteRqst(1);
169 3 }
170 2
171 2 }
172 1
173 1 }
174
175 void Timer0_Overflow_Interrupt (void) interrupt 1 {
176 1
177 1 }
178
179
C51 COMPILER V7.10 DO 07/27/2008 16:49:15 PAGE 4
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 305 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 24 ----
PDATA SIZE = ---- ----
DATA SIZE = 10 1
IDATA SIZE = ---- ----
BIT SIZE = 3 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -