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