📄 main.lst
字号:
C51 COMPILER V3.96, SN-83203013 MAIN 05/29/07 15:22:24 PAGE 1
DOS C51 COMPILER V3.96, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN D:\CC\MAIN.OBJ
COMPILER INVOKED BY: C:\LIUBO\51\BIN\C51.EXE D:\CC\MAIN.C DB SB OE
stmt level source
1 #define _GLOBAL_SJA1000_PELI_
2 #include "PELI.H"
*** WARNING 317 IN LINE 87 OF OS.H: macro 'ByteRate_20k': invalid redefinition
*** WARNING 317 IN LINE 88 OF OS.H: macro 'ByteRate_40k': invalid redefinition
*** WARNING 317 IN LINE 89 OF OS.H: macro 'ByteRate_50k': invalid redefinition
*** WARNING 317 IN LINE 90 OF OS.H: macro 'ByteRate_80k': invalid redefinition
*** WARNING 317 IN LINE 91 OF OS.H: macro 'ByteRate_100k': invalid redefinition
*** WARNING 317 IN LINE 92 OF OS.H: macro 'ByteRate_125k': invalid redefinition
*** WARNING 317 IN LINE 93 OF OS.H: macro 'ByteRate_200k': invalid redefinition
*** WARNING 317 IN LINE 94 OF OS.H: macro 'ByteRate_250k': invalid redefinition
*** WARNING 317 IN LINE 95 OF OS.H: macro 'ByteRate_400k': invalid redefinition
*** WARNING 317 IN LINE 96 OF OS.H: macro 'ByteRate_500k': invalid redefinition
*** WARNING 317 IN LINE 97 OF OS.H: macro 'ByteRate_666k': invalid redefinition
*** WARNING 317 IN LINE 98 OF OS.H: macro 'ByteRate_800k': invalid redefinition
*** WARNING 317 IN LINE 99 OF OS.H: macro 'ByteRate_1000k': invalid redefinition
3 #include "reg52.h"
4 #include "REG.h"
5 #include "IO.h"
6
7 sbit RST_SJA1000 = P1^6; //SJA1000硬件复位
8
9 //#ifdef _GLOBAL_SJA1000_PELI_
10 //extern unsigned char xdata CAN_SJA_BaseAdr; //定义SJA1000的片选基址
11 //extern unsigned char xdata *SJA_CS_Point;
12 //#else
13 //unsigned char xdata CAN_SJA_BaseAdr _at_ 0x7F00; //定义SJA1000的片选基址
14 //unsigned char xdata *SJA_CS_Point; //指针指向空
15 //#endif
16
17 unsigned char CAN_Baudrate_Filter_Buffer[9]={3,0,0,0,0,0xff,0xff,0xff,0xff};//3为发送的波特率(40kbs) 存
-放设置波特率和滤波器的数据
18 // 从机地址为0x02 其中的8为CANPC规定的
19 unsigned char Send_CAN_Info_ID[1]={0x82};
20 // 0x31~~~0x38是要发送的数据 CANPC规定发送必须为ASCII 格式 与CANPC通讯用 0x01为CANPC地址
21 unsigned char Send_CAN_Data[8]={0x01,0x31,0x33,0x34,0x35,0x36,0x37,0x38};//存放数据帧的数据
22
23 unsigned char ss[1]={0x08} ;
24
25 /****************************************************
26 单片机初始化
27 ****************************************************/
28 void InitCPU(void)
29 {
30 1 EA =1;
31 1 IT0 =1;
32 1 EX0 =1;
33 1 PX0 =1;
34 1 }
35
36 /*---------------------------------------------------------------------------------------------------
37 ** 函数原型: void Delay_ms(unsigned char j)
38 ** 功能描述: 该函数用于不精确的延时。在12M,6CLK下,大约延时j*1ms
39 ** 参数说明: 0-255
40 ** 返回值: 无
41 /*------------------------------------------------------------------------------------------------*/
C51 COMPILER V3.96, SN-83203013 MAIN 05/29/07 15:22:24 PAGE 2
42 void Delay_ms(unsigned char j)
43 {
44 1 unsigned char m,n;
45 1 for(n=0;n<=j;n++)
46 1 {
47 2 for(m=0;m<=250;m++)
48 2 {
49 3 ;
50 3 }
51 2 }
52 1 }
53
54 /**************************************************
55
56 函数功能:初始化 SJA1000
57
58 **************************************************/
59 SJA1000_Config_Normal()
60 {
61 1 unsigned char BTR0;
62 1 unsigned char BTR1;
63 1 unsigned char tuichu;
64 1 unsigned char mode;
65 1 unsigned char n;
66 1 BTR0=0x00;
67 1 BTR1=0x14; //设置为1M波特率通信
68 1 SJA_CS_Point=&CAN_SJA_BaseAdr;
69 1 // WriteSJAReg(REG_CAN_MOD,0x00);
70 1
71 1 SJAEntryResetMode_BCan(); //进入复位模式
*** WARNING 206 IN LINE 71 OF D:\CC\MAIN.C: 'SJAEntryResetMode_BCan': missing function-prototype
72 1 mode = SJAEntryResetMode_BCan();
73 1 while(mode != 0); //SJAEntryResetMode()=0则成功进入复位模式
74 1 n = ReadSJAReg(REG_CR);
75 1 // WriteSJAReg(REG_CAN_MOD,0x01); //配置模式寄存器,选择双滤波、自发自收模式
76 1 // WriteSJAReg(REG_CAN_CR,0x06);
77 1 WriteSJAReg(REG_CDR,0x48); //配置时钟分频寄存器,选择PeliCAN模式
78 1 n = ReadSJAReg(REG_CDR);
79 1
80 1 // mode = ReadSJAReg(REG_CAN_MOD);
81 1 // WriteSJARegBlock(16,&CAN_Baudrate_Filter_Buffer[1],8); //配置验收代码/屏蔽寄存器
82 1 WriteSJAReg(REG_ACR,0x00);
83 1 WriteSJAReg(REG_AMR,0xff);
84 1 // WriteSJAReg(REG_CAN_BTR0,BTR0); //配置总线定时器0x00
85 1
86 1 // WriteSJAReg(REG_CAN_BTR1,BTR1); //配置总线定时器0x14
87 1 // n = ReadSJAReg(REG_CAN_BTR1);
88 1 SJASetBandRateStandard(CAN_Baudrate_Filter_Buffer[0]);
89 1 WriteSJAReg(REG_OCR,0x1a); //配置输出管脚,推挽输出
90 1 // P1=0;
91 1 SJAQuitResetMode_BCan();
*** WARNING 206 IN LINE 91 OF D:\CC\MAIN.C: 'SJAQuitResetMode_BCan': missing function-prototype
92 1 tuichu=SJAQuitResetMode_BCan(); //退出复位模式,进入工作模式
93 1 while(tuichu!=0); //SJAQuitResetMode()=0退出复位模式,进入工作模式
94 1 // WriteSJAReg(REG_CAN_MOD,0x00);
95 1 mode = ReadSJAReg(REG_CR);
96 1
97 1 }
98
99 main()
100 {
101 1 unsigned char i;
C51 COMPILER V3.96, SN-83203013 MAIN 05/29/07 15:22:24 PAGE 3
102 1 unsigned char temp_data ;
103 1 unsigned char canstatus;
104 1 unsigned char fuwei;
105 1 unsigned char Receive_CAN[11];
106 1 unsigned char Receive_CAN_ID[5];
107 1 unsigned char Receive_CAN_Data[8];
108 1 // P2=0;
109 1 InitCPU();
110 1 // for(i=0;i<128;i++)
111 1 // {
112 1 // WriteSJARegBlock((0+i),huanchong,1);
113 1 // }
114 1
115 1 Delay_ms(100);
116 1 P1=0;
117 1 Delay_ms(100);
118 1 P1=1;
119 1 Delay_ms(100);
120 1
121 1
122 1 SJA_CS_Point=&CAN_SJA_BaseAdr;
123 1 // SJATestInterface(0xaa);
124 1 // Sja1000HardwareRst(); //SJA1000硬件复位
125 1
126 1 if(SJATestInterface(0xaa)==0)
127 1 {
128 2 SJA1000_Config_Normal(); // SJA1000 进入正常模式配置
129 2 }
130 1 // fuwei = ReadSJAReg(REG_CAN_MOD);
131 1 WriteSJAReg(REG_CR,0x0E); //使能SJA1000发送中断位
132 1 // WriteSJARegBlock(16,Send_CAN_Info_ID,5); //扩展帧,向发送缓冲区写入5个数据
133 1 // WriteSJARegBlock(21,Send_CAN_Data,8); //扩展帧,向发送缓冲区写入8个数据
134 1 while(1)
135 1 {
136 2 // canstatus = ReadSJAReg(REG_CAN_IER);
137 2
138 2 // if( (canstatus& 0x01)==0x01)
139 2 // {
140 2 // ReadSJARegBlock(16,Receive_CAN,13);
141 2 // }
142 2 // i=ReadSJAReg(REG_CAN_IR);
143 2 // while(ReadSJAReg(REG_CAN_IR)!=0x03)
144 2 // {
145 2 // i=ReadSJAReg(REG_CAN_IR);
146 2 // }
147 2 /*******************************************************************************************************
148 2 发送数据
149 2 *******************************************************************************************************/
150 2 temp_data =ReadSJAReg(REG_SR);
151 2
152 2 while((temp_data & 0x04) != 0x04) //有接收数据 SR.0=1 =>RXFIFO存在完整有效报文
153 2 {
154 3 temp_data =ReadSJAReg(REG_SR);
155 3 // ReadSJARegBlock(20,Receive_CAN,11); //读出接收寄存器中的数据
156 3 }
157 2
158 2 WriteSJARegBlock(10,Send_CAN_Info_ID,1);
159 2 WriteSJARegBlock(11,ss,1);
160 2 WriteSJARegBlock(12,Send_CAN_Data,8);
161 2 WriteSJAReg(REG_CMR,0x01);
162 2 /*************************************************************************************************
163 2
C51 COMPILER V3.96, SN-83203013 MAIN 05/29/07 15:22:24 PAGE 4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -