📄 main.lst
字号:
C51 COMPILER V8.08 MAIN 01/04/2009 14:39:12 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\main.obj
COMPILER INVOKED BY: C:\Program Files\keil\C51\BIN\C51.EXE ..\UE\main.c BROWSE INCDIR(..\..\CAN-232互发;C:\Keil\C51\INC)
- DEBUG OBJECTEXTEND PRINT(.\main.lst) OBJECT(.\main.obj)
line level source
1
2 /*
3 *********************************************************************************************************
4 * Copyright (c) 2003, 凌宝设计中心
5 * All rights reserved.
6 *
7 * 文件名称:cancom.c
8 * 文件标识:无
9 * 摘 要:
10 *
11 * 以前版本:1.0
12 * 作 者:王黎
13 * 完成日期:2003年9月9日
14 *
15 *当前版本:2.0
16 *作 者: WWW.ZHTIANTAN.COM
17 *完成日期:08年11月
18 *********************************************************************************************************
19 * 包含头文件
20 *
21 *********************************************************************************************************
22 */
23 #include "cancom.h"
24
25 /*
26 *********************************************************************************************************
27 *
28 * 全局变量定义
29 *
30 *********************************************************************************************************
31 */
32
33
34 /**************************CAN**************************************/
35 static code BYTE CANID[] = { 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
36 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
37 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
38 150, 151, 152, 153, 154, 155, }; // 1~36路CAN的ID号
39 static code BYTE MYID=0X55;
40 BYTE idata ucCircle = 0; // 标志1~36路的某路
41 BOOL idata bSjaReceived; // 标识CAN数据是否有效
42 unsigned char xdata Candata_R[BadLenght_can][13]; //存放CAN接收数据
43 unsigned char TCandata[13];
44 unsigned char BagCount_R_CAN; //CAN接收数据包数计数
45 unsigned char Bagcount_T_CAN; //CAN发送数据包数计数
46 unsigned int RCount_CAN=0;
47 unsigned int TCount_CAN=0;
48
49
50 /**************************RS232**************************************/
51
52 BOOL idata int_flag_232;//232发送完一包数据标志位
53 BOOL idata rx_flag_232;//232接收完一包数据标志位
54 BOOL idata int_232;//232发送一字节完成标志
C51 COMPILER V8.08 MAIN 01/04/2009 14:39:12 PAGE 2
55 BOOL idata rx_232; //232接收完一字节完成标志
56 unsigned char *send_232; //232发送指针
57 unsigned char xdata rec_232_R[BadLenght][13];//定义10包232的接收级冲区
58 unsigned char length_232=0; //标识232发送长度
59 unsigned char length_232_R=0; //标识232接收长度
60 unsigned char BagCount_T_232=0; //232发送数据包数计数
61 unsigned char BagCount_R_232=0; //232读取数据包数计数
62 unsigned int TCount_232=0; //发送计数
63 unsigned int RCount_232=0;//接收计数
64
65
66
67 /**************************485**************************************/
68 BOOL idata rx_flag_485;//485接收完成标志
69 BOOL idata int_flag_485; //485发送完成标志
70 BOOL idata int_485;//485发送一字节完成标志
71 BOOL idata rx_485; //485接收完一字节完成标志
72 unsigned char *send_485; //485发送指针
73 unsigned char xdata rec_485_R[BadLenght][13];//定义10包485的接收级冲区
74 unsigned char length_485=0; //485发送长度
75 unsigned char length_485_R=0; //485接收长度
76 unsigned char BagCount_T_485=0; //485发送数据包数计数
77 unsigned char BagCount_R_485=0; //485读取数据包数计数
78 unsigned int TCount_485=0; //发送计数
79 unsigned int RCount_485=0; //接收计数
80
81
82 sbit LED = P1^0;
83 sbit Control485=P1^1;
84 /*
85 *********************************************************************************************************
86 *
87 * 函数名称:CpuInit
88 *
89 * 输入变量:无
90 *
91 * 输出变量:无
92 *
93 * 功能描述:初始化51各个CPU寄存器
94 *
95 *********************************************************************************************************
96 */
97 void CpuInit(void)
98 {
99 1
100 1 SCON = 0x50; // 串口0设置为:8bits,无校验位,一位停止位
101 1 SCON1= 0x50; // 串口1设置为:8bits,无校验位,一位停止位
102 1 PCON = 0xc0; //波特率加倍
103 1 TMOD = 0x21; //定时器使用方式2
104 1 TH1 = 0xFD; // 设置波特率为9600bps
105 1 TL1 = 0xFD;
106 1 TR1 = 1;
107 1 ES = 1; // 开串行0中断
108 1 ES1 = 1; // 开串行1中断
109 1 EX0 = 1; // 开外部中断
110 1 IT0 = 0; // 外部中断1通过INT1脚的低电平触发
111 1 TH0 = 0Xdc; //10MS定时,
112 1 TL0 = 0X00;
113 1 ET0 = 1; // 定时器0中断
114 1 TR0 = 0; // 关定时器0;
115 1 }
116
C51 COMPILER V8.08 MAIN 01/04/2009 14:39:12 PAGE 3
117 /*
118 *********************************************************************************************************
119 *
120 * 函数名称:EnalbeInterrupt
121 *
122 * 输入变量:无
123 *
124 * 输出变量:无
125 *
126 * 功能描述:打开中断
127 *
128 *********************************************************************************************************
129 */
130 void EnalbeInterrupt(void)
131 {
132 1 EA = 1;
133 1 }
134
135
136 /*
137 *********************************************************************************************************
138 *
139 * 函数名称:DisableInterrupt
140 *
141 * 输入变量:无
142 *
143 * 输出变量:无
144 *
145 * 功能描述:关闭中断,对各个中断源的中断信号不予响应
146 *
147 *********************************************************************************************************
148 */
149 void DisableInterrupt(void)
150 {
151 1 EA = 0;
152 1 }
153
154
155 /*
156 *********************************************************************************************************
157 *
158 * 函数名称:DisableInterrupt
159 *
160 * 输入变量:无
161 *
162 * 输出变量:无
163 *
164 * 功能描述:定时器中断
165 *
166 *********************************************************************************************************
167 */
168 void time0_intt0(void) interrupt 1
169 {
170 1 EA=0;
171 1 TH0 = 0Xdc; //10MS定时,
172 1 TL0 = 0X00;
173 1 TR0 = 0; //关定时器0
174 1 LED^=1;
175 1 length_485_R=0;
176 1 length_232_R=0;
177 1 EA=1;
178 1
C51 COMPILER V8.08 MAIN 01/04/2009 14:39:12 PAGE 4
179 1 }
180
181 /*
182 *********************************************************************************************************
183 *
184 * 函数名称:SjaInit
185 *
186 * 输入变量:无
187 *
188 * 输出变量:无
189 *
190 * 功能描述:SJA1000初始化函数
191 *
192 *********************************************************************************************************
193 */
194 void SjaInit(void)
195 {
196 1 DisableInterrupt();
197 1 CLKOUT = 0x80; //选择CAN模式为Pelican,中止CAN 输入比较器
198 1 do
199 1 { // 进入复位模式
200 2 MODECTLREG = 0x01;
201 2 }
202 1 while(!(MODECTLREG & 0x01)); // 测试是否进入了复位模式
203 1 CLKOUT = 0xC0; //选择CAN模式为Pelican,中止CAN 输入比较器
204 1 BUFFER0=0;
205 1 BUFFER1 = MYID&0x07;
206 1 BUFFER2 = ((CANID[0]&0x07)|(MYID&0xF8));
207 1 BUFFER3 = (CANID[0]&0xf8); //设置接收识别ID
208 1 BUFFER4 = 0Xff; // 设置接收ID掩码,只对接收地址及本机ID进行识别
209 1 BUFFER5 = 0Xff;
210 1 BUFFER6 = 0Xff;
211 1 BUFFER7 = 0xff;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -