📄 main.lst
字号:
C51 COMPILER V7.50 MAIN 04/23/2009 16:56:45 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c OPTIMIZE(0,SPEED) BROWSE DEBUG OBJECTEXTEND
line level source
1 /*------------------------------------------------------------------------------
2 ;CAN总线大坝监测系统
3 ;底层节点
4 ;文件名称: main.c
5 ;函数功能:接收上层命令,采集返回数据
6 ;MCU支持: C8051F040
7 ;上海富方软件合肥自动化分公司
8 ;-----------------------------------------------------------------------------*/
9
10 #include "c8051F040.h"
11 #include "wdt_port_clk_init.h"
12 #include "can.h"
13
14
15
16 ////////////////////////////////////////////////////////////////////////////////
17 // 变量定义
18 ////////////////////////////////////////////////////////////////////////////////
19 unsigned char SFRPAGE_SAVE; // SFR页面保存
20
21 unsigned char Wang_Data[6] = {0xc1,0xc2,0xc3,0xc4,0xc5,0xc6}; // 下层测量数据
22
23 unsigned char Can_sdata[8]; // CAN发送数组
24 unsigned char Can_rdata[8]; // CAN接收数组
25
26 unsigned char Answer_Data[6] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}; // 底层应答数组
27
28 bit Rec_From_CAN; // 标志从CAN收到命令
29
30
31
32 ////////////////////////////////////////////////////////////////////////////////
33 //主函数
34 ////////////////////////////////////////////////////////////////////////////////
35 void main(){
36 1 /* 关看门狗,端口及时钟初始化 */
37 1 Watchdog_Close ();
38 1 Port_Config ();
39 1 Sysclk_Init ();
40 1 /* CAN消息块初始化 */
41 1 Can_Msg_Init();
42 1 /* 开中断 */
43 1 EA = 1;
44 1 /* 正常运行 */
45 1 while(1){
46 2 Rec_From_CAN = 0;
47 2 while(!Rec_From_CAN);
48 2
49 2 /* 如果是所有模块复位 */
50 2 if( (Can_rdata[0]&0xE0) == 0x60 ){
51 3 SFRPAGE = LEGACY_PAGE; // 跳至复位寄存器页0x00
52 3 RSTSRC |= 0x10; // 软件复位
53 3 }
54 2
55 2 /* 如果是全体测量 */
C51 COMPILER V7.50 MAIN 04/23/2009 16:56:45 PAGE 2
56 2 else if( (Can_rdata[0]&0xE0) == 0xE0 ){
57 3 /*以下为实际测量操作
58 3
59 3 */
60 3 }
61 2
62 2 /* 如果是单个模块复位 */
63 2 else if( (Can_rdata[0]&0xE0) == 0x80){
64 3 SFRPAGE = CAN0_PAGE;
65 3 CAN0STA &= 0xf7; // TxOk置零,未传送完报文
66 3
67 3 Can_Tx_Back(Answer_Data); // 应答
68 3 while( ! (CAN0STA & 0x08) );
69 3
70 3 SFRPAGE = LEGACY_PAGE; // 跳至复位寄存器页0x00
71 3 RSTSRC |= 0x10; // 软件复位
72 3 }
73 2
74 2 /* 如果是单个模块测量 */
75 2 else if( (Can_rdata[0]&0xE0) == 0xC0 ){
76 3 Can_Tx_Back(Answer_Data); // 应答
77 3 /*以下为实际测量操作
78 3
79 3 */
80 3 }
81 2
82 2 /* 如果是单个模块取数 */
83 2 else if( (Can_rdata[0]&0xE0) == 0xA0 ){
84 3 /*此处应修改为实际数据 */
85 3 Can_Tx_Back(Wang_Data); // 应答
86 3 }
87 2 }
88 1 }
89
90
91
92
93
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 124 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 29 ----
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 + -