📄 sja1000_peli.lst
字号:
C51 COMPILER V8.06 SJA1000_PELI 07/11/2007 15:55:53 PAGE 1
C51 COMPILER V8.06, COMPILATION OF MODULE SJA1000_PELI
OBJECT MODULE PLACED IN SJA1000_PELI.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE SJA1000_PELI.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <AT89x52.h>
2 #include "SJA1000_PELI.h"
3
4 bit g_TiFlag=0;
5 bit g_RiFlag=0;
6
7
8 unsigned char xdata *SJA_BASE_ADDR = 0xfe00;
9
10 //写数据
11 void SJARegWrite(unsigned char regAddr,unsigned char setData)
12 {
13 1 *(SJA_BASE_ADDR+regAddr) = setData;
14 1 }
15 //读数据
16 unsigned char SJARegRead(unsigned char regAddr)
17 {
18 1 unsigned char tempData;
19 1 tempData = *(SJA_BASE_ADDR+regAddr);
20 1 return tempData;
21 1 }
22 //寄存器自测试
23 bit SJARegSelfTest(void)
24 {
25 1 bit flag;
26 1
27 1 SJARegWrite(9,0xaa);
28 1 if (SJARegRead(9) == 0xaa)
29 1 {
30 2 flag = 0;
31 2 }
32 1
33 1 else
34 1 {
35 2 flag = 1;
36 2 }
37 1
38 1 if (!flag)
39 1 {
40 2 SJARegWrite(9,0x55);
41 2 if (SJARegRead(9) == 0x55)
42 2 {
43 3 flag = 0;
44 3 }
45 2 else
46 2 {
47 3 flag = 1;
48 3 }
49 2 }
50 1
51 1 return flag ;
52 1 }
53 //进入复位模式
54 bit SJAEnterRstMode(void)
55 {
C51 COMPILER V8.06 SJA1000_PELI 07/11/2007 15:55:53 PAGE 2
56 1 bit flag;
57 1 unsigned char tempData;
58 1
59 1 tempData = SJARegRead(0);
60 1 tempData = tempData|0x01;
61 1 SJARegWrite(0,tempData);
62 1
63 1 if((SJARegRead(0)&0x01)==1)
64 1 {
65 2 flag = 0;
66 2 }
67 1 else
68 1 {
69 2 flag = 1;
70 2 }
71 1 return flag;
72 1 }
73 //退出复位模式
74 bit SJAEnterWorkMode(void)
75 {
76 1 bit flag;
77 1 unsigned char tempData;
78 1
79 1 tempData = SJARegRead(0);
80 1 tempData = tempData&0xfe;
81 1 SJARegWrite(0,tempData);
82 1
83 1 if((SJARegRead(0)&0x01)==0)
84 1 {
85 2 flag = 0;
86 2 }
87 1 else
88 1 {
89 2 flag = 1;
90 2 }
91 1 return flag;
92 1 }
93
94 //设置时钟分频,输出控制寄存器
95 bit SJAClkOut(unsigned char OCR,unsigned char CDR)
96 {
97 1 bit flag;
98 1
99 1 SJARegWrite(8,OCR);
100 1 SJARegWrite(31,CDR);
101 1
102 1 if((SJARegRead(8)==OCR)&(SJARegRead(31)==CDR))
103 1 {
104 2 flag = 0;
105 2 }
106 1 else
107 1 {
108 2 flag = 1;
109 2 }
110 1 return flag;
111 1 }
112 //中断使能设置
113 bit SJASetInterrupt(unsigned char ENA_INT)
114 {
115 1 bit flag;
116 1
117 1 SJARegWrite(4,ENA_INT);
C51 COMPILER V8.06 SJA1000_PELI 07/11/2007 15:55:53 PAGE 3
118 1
119 1 if (SJARegRead(4) == ENA_INT)
120 1 {
121 2 flag = 0;
122 2 }
123 1 else
124 1 {
125 2 flag = 1;
126 2 }
127 1 return flag;
128 1 }
129 //波特率设置
130 bit SJASetBaudRate(unsigned char BTR0,unsigned char BTR1)
131 {
132 1 bit flag;
133 1 SJARegWrite(6,BTR0);
134 1 SJARegWrite(7,BTR1);
135 1
136 1 if((SJARegRead(6)==BTR0)&(SJARegRead(7)==BTR1))
137 1 {
138 2 flag = 0;
139 2 }
140 1 else
141 1 {
142 2 flag = 1;
143 2 }
144 1 return flag;
145 1 }
146 //验收代码寄存器设置
147 bit SJASetACR( unsigned char ACR0,
148 unsigned char ACR1,
149 unsigned char ACR2,
150 unsigned char ACR3 )
151 {
152 1 bit flag;
153 1
154 1 SJARegWrite(16,ACR0);
155 1 SJARegWrite(17,ACR1);
156 1 SJARegWrite(18,ACR2);
157 1 SJARegWrite(19,ACR3);
158 1
159 1 if ((SJARegRead(16) ==ACR0)&(SJARegRead(17) ==ACR1)
160 1 &(SJARegRead(18) ==ACR2)&(SJARegRead(19) ==ACR3))
161 1 {
162 2 flag = 0;
163 2 }
164 1 else
165 1 {
166 2 flag = 1;
167 2 }
168 1 return flag;
169 1 }
170 //屏蔽寄存器设置
171 bit SJASetAMR( unsigned char AMR0,
172 unsigned char AMR1,
173 unsigned char AMR2,
174 unsigned char AMR3 )
175 {
176 1 bit flag;
177 1
178 1 SJARegWrite(20,AMR0);
179 1 SJARegWrite(21,AMR1);
C51 COMPILER V8.06 SJA1000_PELI 07/11/2007 15:55:53 PAGE 4
180 1 SJARegWrite(22,AMR2);
181 1 SJARegWrite(23,AMR3);
182 1
183 1 if ((SJARegRead(20) ==AMR0)&(SJARegRead(21) ==AMR1)
184 1 &(SJARegRead(22) ==AMR2)&(SJARegRead(23) ==AMR3))
185 1 {
186 2 flag = 0;
187 2 }
188 1 else
189 1 {
190 2 flag = 1;
191 2 }
192 1 return flag;
193 1 }
194 //SJA初始化
195 void SJAInit(void)
196 {
197 1 bit flag;
198 1
199 1 flag = SJARegSelfTest(); //SJA自测试
200 1 while(flag)
201 1 {
202 2 flag = SJARegSelfTest();
203 2
204 2 }
205 1
206 1
207 1 flag = SJAEnterRstMode(); //进行复位模式
208 1 while(flag)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -