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