?? selftest.lst
字號(hào):
C51 COMPILER V7.06 SELFTEST 07/01/2003 16:02:57 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE SELFTEST
OBJECT MODULE PLACED IN selftest.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE selftest.c BROWSE INCDIR(C:\Keil\C51\INC\) DEBUG OBJECTEXTEND
stmt level source
1 #include "REG52.H"
2 #include "SJA_BCANCONF.H"
3 #include "VIIC_C51.h"
4 #include "ZLG7290.h"
5 #include "string.h"
6 #include "intrins.h"
7
8 void Init_Cpu(void);
9 void Init_T0(void);
10 void Sja_1000_Init(void);
11 void disp_ok(unsigned char *);
12 void disp_err(void);
13 void delay(unsigned int k);
14 //void send(unsigned char a);
15 void display(unsigned char display_buffer[5]);
16
17
18 bit flag_sec;
19 unsigned char data a[5];
20 unsigned char data send_data[10],rcv_data[10];
21 unsigned char databuf,sec_data,second;
22 unsigned char data Tmod_data;
23 unsigned char bdata flag_init;
24
25 unsigned char data display_bit;
26
27 sbit rcv_flag=flag_init^0;
28 sbit err_flag=flag_init^2;
29
30
31 void main(void)
32 {
33 1 Sja_1000_Init(); //initialize Sja1000
34 1 Init_T0(); //initialize T0
35 1 Init_Cpu(); //initialize mcu
36 1 flag_init=0x00;
37 1
38 1 while(1)
39 1 {
40 2 if(rcv_flag) //if there is receive interrupt
41 2 {
42 3 rcv_flag=0;
43 3 BCAN_DATA_RECEIVE(rcv_data);
44 3 BCAN_CMD_PRG(0x04); //釋放緩沖區(qū)
45 3 disp_ok(rcv_data);
46 3 }
47 2 if(flag_sec) //
48 2 {
49 3 flag_sec=0; //send data if reach 1 s
50 3 //send_data[0]=0xaa; //Basic can
51 3 send_data[0]=0x08; //Pelican
52 3 send_data[1]=0xaa;
53 3 send_data[2]=second;
54 3 send_data[3]=second;
55 3 BCAN_DATA_WRITE(send_data);
C51 COMPILER V7.06 SELFTEST 07/01/2003 16:02:57 PAGE 2
56 3 BCAN_CMD_PRG(0x01);
57 3 }
58 2 if (err_flag)
59 2 {
60 3 err_flag=0;
61 3 disp_err();
62 3 Sja_1000_Init();
63 3 }
64 2
65 2
66 2 display(a);
67 2 delay(200);
68 2 }
69 1 }
70
71
72 void ex0_int(void) interrupt 2 //using 1
73 {
74 1 SJA_BCANAdr=REG_INTERRUPT;
75 1 flag_init=*SJA_BCANAdr;
76 1 }
77
78 void T0_int(void) interrupt 1 //using 2
79 {
80 1 static unsigned char ii=0;
81 1 TR0=0;
82 1 TH0=0x80;
83 1 TL0=0x60;
84 1 ii++;
85 1 if(ii>40)
86 1 {
87 2 flag_sec=1;
88 2 ii=0;
89 2 second++;
90 2 }
91 1 TR0=1;
92 1 }
93
94 void Init_Cpu(void)
95 {
96 1 PX1=1;
97 1 IT1=1;
98 1 EX1=1;
99 1 ET0=1;
100 1 EA=1;
101 1 sec_data=0x10;
102 1 }
103
104
105 void Init_T0(void)
106 {
107 1 Tmod_data=TMOD;
108 1 Tmod_data&=0xf0;
109 1 Tmod_data|=0x01;
110 1 TMOD=Tmod_data;
111 1 TH0=0x80;
112 1 TL0=0x60;
113 1 TR0=1;
114 1 sec_data=0x20;
115 1 second=0x00;
116 1 }
117
C51 COMPILER V7.06 SELFTEST 07/01/2003 16:02:57 PAGE 3
118 void Sja_1000_Init(void)
119 {
120 1 bit s;
121 1 s=BCAN_CREATE_COMMUNATION();
122 1 s=BCAN_ENTER_RETMODEL();
123 1 s=BCAN_SET_OUTCLK(0xaa,0xc8); //Pelican
124 1 s=BCAN_SET_BANDRATE(0x04);
125 1 s=BCAN_SET_OBJECT(0xaa,0xff);
126 1 //s=BCAN_SET_OUTCLK(0xaa,0x48);
127 1 s=BCAN_SET_MOD();
128 1 s=BCAN_QUIT_RETMODEL();
129 1 SJA_BCANAdr=REG_IER;
130 1 *SJA_BCANAdr=0x03;
131 1 //*SJA_BCANAdr=0xff;
132 1 //SJA_BCANAdr=REG_CONTROL;
133 1 //*SJA_BCANAdr|=0x1e;
134 1 }
135
136
137
138 void disp_ok(unsigned char * rcv_data)
139 {
140 1 a[0]=rcv_data[0]%16;
141 1 a[1]=rcv_data[0]/16;
142 1 a[2]=0x1f;
143 1 a[3]=rcv_data[3]%16;
144 1 a[4]=rcv_data[3]/16;
145 1 }
146
147
148 void disp_err(void)
149 {
150 1 a[0]=0x18;
151 1 a[1]=0x15;
152 1 a[2]=0x18;
153 1 a[3]=0x18;
154 1 a[4]=0x0E;
155 1 }
156
157
158
159 bit BCAN_CREATE_COMMUNATION(void)
160 {
161 1 SJA_BCANAdr=REG_TEST; //訪(fǎng)問(wèn)測(cè)試寄存器
162 1
163 1 *SJA_BCANAdr =0xaa; //寫(xiě)入測(cè)試值
164 1 if(*SJA_BCANAdr == 0xaa)
165 1 {
166 2 return 0; //讀測(cè)試正確
167 2 }
168 1 else
169 1 {
170 2 return 1;
171 2 }
172 1 }
173
174
175 bit BCAN_ENTER_RETMODEL(void)
176 {
177 1 unsigned char TempData;
178 1 SJA_BCANAdr = REG_CONTROL; //訪(fǎng)問(wèn)地址指向控制寄存器
179 1 TempData= *SJA_BCANAdr; //保存原始值
C51 COMPILER V7.06 SELFTEST 07/01/2003 16:02:57 PAGE 4
180 1 *SJA_BCANAdr=(TempData|0x01); //置位復(fù)位請(qǐng)求
181 1 if((*SJA_BCANAdr&0x01) == 1)
182 1 {
183 2 return 0;
184 2 }
185 1 else
186 1 {
187 2 return 1;
188 2 }
189 1
190 1 }
191
192
193 bit BCAN_QUIT_RETMODEL(void)
194 {
195 1 unsigned char TempData;
196 1 SJA_BCANAdr = REG_CONTROL; //訪(fǎng)問(wèn)地址指向控制寄存器
197 1 TempData = *SJA_BCANAdr; //保存原始值
198 1 *SJA_BCANAdr=(TempData&0xfe); //清除復(fù)位請(qǐng)求
199 1 if((*SJA_BCANAdr&0x01) == 0)
200 1 {
201 2 return 0; //
202 2 }
203 1 else
204 1 {
205 2 return 1; //退出成功
206 2 }
207 1
208 1 }
209
210
211 unsigned char code SJA_BTR_CODETAB[]={
212 0x53,0x2F, // ;20KBPS的預(yù)設(shè)值
213 0x87,0xFF, //;40KBPS的預(yù)設(shè)值
214 0x47,0x2F, //;50KBPS的預(yù)設(shè)值
215 0x83,0xFF, //;80KBPS的預(yù)設(shè)值
216 0x43,0x2f, //;100KBPS的預(yù)設(shè)值
217 0x03,0x1c, //;125KBPS的預(yù)設(shè)值
218 0x81,0xfa, //;200KBPS的預(yù)設(shè)值
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -