📄 rate3.lst
字号:
C51 COMPILER V7.06 RATE3 01/18/2006 10:41:17 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE RATE3
OBJECT MODULE PLACED IN RATE3.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE RATE3.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 bdata flag_init;
9 unsigned int data m=0,n=0,i=0,countnum=0,k1=0,k2=0;
10 unsigned int sec_data;
11 unsigned long subn=0;
12 unsigned long rate=0;
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(); //初始化定时器2
19 1 Init_Cpu(); //初始化单片机
20 1 flag_init=0x00;
21 1 while(1)
22 1 {
23 2 if(rcv_flag)
24 2 {
25 3 rcv_flag=0; //有接收中断,则单片机进行处理
26 3 BCAN_DATA_RECEIVE(rcv_data);
27 3 BCAN_CMD_PRG(0X04); //清空缓冲区
28 3 }
29 2 if(err_flag) //err-flag=1表示错误中断
30 2 {
31 3 err_flag=0;
32 3 Sja_1000_Init();
33 3 }
34 2 }
35 1 }
36
37 void ex0_int(void) interrupt 0 using 1 //外部中断0服务子程序
38 {
39 1 SJA_BCANAdr=REG_INTERRUPT;
40 1 flag_init=*SJA_BCANAdr; //查看保存中断源
41 1 }
42
43 void Int_T0(void) interrupt 1 using 2 //定时器0中断服务子程序
44 {
45 1 countnum++;
46 1 // sec_data--;
47 1 if(countnum==70) //1s到了吗?
48 1 {
49 2 // sec_data=70; //是,则发送处理
50 2 send_data[0]=0xaa;
51 2 send_data[1]=0x02;
52 2 send_data[2]=0x00;
53 2 send_data[3]=0x00;
54 2 BCAN_DATA_WRITE(send_data);
55 2 BCAN_CMD_PRG(0x01); //调发送请求
C51 COMPILER V7.06 RATE3 01/18/2006 10:41:17 PAGE 2
56 2 countnum=0;
57 2 }
58 1 TH0=0x00; //计数初值为0
59 1 TL0=0x00;
60 1 TR0=1;
61 1 }
62
63 void Int1(void) interrupt 2 using 3 //外部中断1服务子程序
64 {
65 1 i++;
66 1 if(i==1) TR0=1;
67 1 if(i==11)
68 1 {
69 2 TR0=0;
70 2 m=TH0;
71 2 n=TL0;
72 2 subn=countnum*65536+m*256+n;
73 2 rate=552960000/subn;
74 2 k1=rate/256;
75 2 k2=rate%256;
76 2 send_data[0]=0xaa;
77 2 send_data[1]=0x02;
78 2 send_data[2]=k1;
79 2 send_data[3]=k2;
80 2 BCAN_DATA_WRITE(send_data);
81 2 BCAN_CMD_PRG(0x01); //调发送请求
82 2 countnum=0;
83 2 TH0=0x00;
84 2 TL0=0x00;
85 2 i=0;
86 2 }
87 1 }
88
89 void Init_Cpu(void) //开中断
90 {
91 1 EA=1;
92 1 EX0=1;
93 1 ET0=1;
94 1 EX1=1;
95 1 IT1=1;
96 1 }
97
98 void Init_T0(void) //初始化定时器0
99 {
100 1 TMOD=0x01; //定时器0,方式1
101 1 TH0=0x00; //计数初值为0
102 1 TL0=0x00;
103 1 sec_data=70;
104 1 }
105
106 void Sja_1000_Init(void) //CAN控制器初始化子程序
107 {
108 1 BCAN_ENTER_RETMODEL(); //申请进入复位状态
109 1 BCAN_SET_BANDRATE(0x0e); //设置波特率为1000Kb/s
110 1 BCAN_SET_OBJECT(0xaa,0xff); //设置ACR AMR
111 1 BCAN_SET_OUTCLK(0xaa,0x48); //设置输出方式禁止clkout
112 1 BCAN_QUIT_RETMODEL(); //退出复位状态
113 1 SJA_BCANAdr=REG_CONTROL; //送控制寄存器地址
114 1 *SJA_BCANAdr|=0x1e; //开放错误中断和接收中断
115 1 }
116
C51 COMPILER V7.06 RATE3 01/18/2006 10:41:17 PAGE 3
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 864 ----
CONSTANT SIZE = 30 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 45 5
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -