📄 testcan.lst
字号:
C51 COMPILER V7.06 TESTCAN 01/17/2006 20:32:17 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE TESTCAN
OBJECT MODULE PLACED IN testcan.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE testcan.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include<AT89X52.H> //加载头文件
2 #include<SJA_BCANCONF.H> //加载变量定义模块
3 #include"SJA_BCANFUNC.C" //加载子程序模块文件
4 void Init_Cpu(void);
5 //void Init_T0(void);
6 void Sja_1000_Init(void);
7 unsigned char data send_data[10],rcv_data[10]; //定义变量
8 unsigned char databuf;
9 unsigned char data Tmod_data;
10 unsigned char bdata flag_init=0;
11 bit flag_sec;
12 sbit rcv_flag=flag_init^0;
13 sbit err_flag=flag_init^2;
14 void main(void)
15 {
16 1 Sja_1000_Init(); //初始化CAN控制器SJA1000
17 1 // Init_T0(); //初始化定时器0
18 1 Init_Cpu(); //初始化单片机
19 1 while(1)
20 1 {
21 2 if(rcv_flag)
22 2 {
23 3 rcv_flag=0; //有接收中断,则单片机进行处理
24 3 BCAN_DATA_RECEIVE(rcv_data);
25 3 BCAN_CMD_PRG(0x04); //清空缓冲区
26 3 }
27 2 if(rcv_data[2]==0x11)
28 2 {
29 3 P1_7=1;
30 3 }
31 2 else if(rcv_data[2]==0xff)
32 2 {
33 3 P1_7=0;
34 3 }
35 2 if(err_flag) //有总线错误
36 2 {
37 3 err_flag=0; //处理
38 3 Sja_1000_Init();
39 3 }
40 2 }
41 1 }
42
43 void ex0_int(void) interrupt 0 using 1 //外部中断0服务子程序
44 {
45 1 SJA_BCANAdr=REG_INTERRUPT;
46 1 flag_init=*SJA_BCANAdr; //查看保存中断源
47 1 }
48
49 /*void T0_int(void) interrupt 1 using 2 //定时器0中断服务程序
50 {
51 TR0=0; //0.1ms时间到则停止计数
52 if(P1_7==1) //红外传感器接通则发送“11”
53 {
54 send_data[0]=0xaa;
55 send_data[1]=0x01;
C51 COMPILER V7.06 TESTCAN 01/17/2006 20:32:17 PAGE 2
56 send_data[2]=0x11;
57 BCAN_DATA_WRITE(send_data);
58 BCAN_CMD_PRG(0x01); //调发送请求
59 }
60 else //红外传感器被遮断则发送“ff”
61 {
62 send_data[0]=0xaa;
63 send_data[1]=0x01;
64 send_data[2]=0xff;
65 BCAN_DATA_WRITE(send_data);
66 BCAN_CMD_PRG(0x01); //调发送请求
67 }
68 TH0=0xa4;
69 TL0=0xa4;
70 TR0=1;
71 } */
72
73 void Init_Cpu(void) //CPU初始化程序
74 {
75 1 PX0=1; //设置中断优先级并开中断
76 1 IT0=1;
77 1 IT1=1;
78 1 EX0=1;
79 1 ET0=1;
80 1 ET1=1;
81 1 EA=1;
82 1 }
83
84 /*void Init_T0(void) //初始化定时器0
85 {
86 Tmod_data=TMOD;
87 Tmod_data&=0xf0;
88 Tmod_data|=0x02;
89 TMOD=Tmod_data;
90 TH0=0xa4;
91 TL0=0xa4;
92 TR0=1;
93 } */
94
95 void Sja_1000_Init(void) //CAN控制器初始化子程序
96 {
97 1 BCAN_ENTER_RETMODEL(); //申请进入复位状态
98 1 BCAN_SET_BANDRATE(0x0e); //设置波特率为100Kb/s
99 1 BCAN_SET_OBJECT(0xaa,0xff); //设置ACR AMR
100 1 BCAN_SET_OUTCLK(0xaa,0x48); //设置输出方式禁止clkout
101 1 BCAN_QUIT_RETMODEL();
102 1 SJA_BCANAdr=REG_CONTROL; //开放错误中断、接收和发送中断
103 1 *SJA_BCANAdr|=0x1e;
104 1 }
105
106
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 577 ----
CONSTANT SIZE = 30 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 25 5
IDATA SIZE = ---- ----
BIT SIZE = 1 1
END OF MODULE INFORMATION.
C51 COMPILER V7.06 TESTCAN 01/17/2006 20:32:17 PAGE 3
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -