📄 lin_main.lst
字号:
C51 COMPILER V8.08 LIN_MAIN 04/19/2009 00:03:15 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE LIN_MAIN
OBJECT MODULE PLACED IN LIN_MAIN.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE LIN_MAIN.C BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "INCLUDE.H"
2 //#include <reg52.h>
3 //#include "LIN_HARDWARE.C"
4 //#include "LIN_LLC.C"
5 //#include "LIN_MANAGE.C"
6 //#include "LIN_API.C"
7 /* Private typedef ----------定义主机和从机的状态机-------------------------------------------
8 typedef enum
9 {
10 Idle,
11 send_break,
12 // VerifyBreak,
13 send_synch,
14 // VerifSynch,
15 send_ID,
16 } LIN_MASTER_state; */
17
18 typedef enum
19 {
20 Init,
21 send_data,
22 rece_data
23 } LIN_SLAVE_state;
24
25 LIN_SLAVE_state LIN_SLAVE = Init;
26
27 typedef enum
28 {
29 task1,
30 task2,
31 task3
32 } TASK_schedule_state;
33
34
35 TASK_schedule_state TASK_schedule=task1;
36 /*******************************************************************************/
37
38 //定义是否可以执行从机程序
39 bit lin_en=0;
40 bit task_en=0;
41
42 uchar i;
43 void LIN_Init()
44 {
45 1 task_en=1;
46 1 }
47
48 void main()
49 {
50 1 LIN_Init();
51 1 while(1)
52 1 { //任务调度
53 2 if(task_en)
54 2 {
55 3 delay_ms(100);
C51 COMPILER V8.08 LIN_MAIN 04/19/2009 00:03:15 PAGE 2
56 3 switch(TASK_schedule)
57 3 {
58 4 case task1:
59 4 ID=SLAVE1_ID;
60 4 LIN_SLAVE = rece_data;
61 4 TASK_schedule=task2;
62 4 lin_en=1;
63 4 break;
64 4
65 4 case task2:
66 4 ID=SLAVE2_ID;
67 4 LIN_SLAVE = send_data;
68 4 TASK_schedule=task3;
69 4 lin_en=1;
70 4 break;
71 4
72 4 case task3:
73 4 ID=SLAVE3_ID;
74 4 LIN_SLAVE = send_data;
75 4 TASK_schedule=task1;
76 4 lin_en=1;
77 4 break;
78 4
79 4 }
80 3 task_en=0;
81 3 }
82 2
83 2
84 2 if(lin_en)
85 2 {
86 3 SendSynchBreak(); //主机任务
87 3 SendSynch();
88 3 SendID(ID);
89 3 num=JudgeLength(ID);
90 3
91 3 switch(LIN_SLAVE) //从机任务
92 3 {
93 4 case Init:
94 4 LIN_SLAVE = Init;
95 4 break;
96 4
97 4 case send_data: //发送数据
98 4 SendData(send_datas,num);
99 4 check_sum=checksum(send_datas,num);
100 4 SendChecksum(check_sum);
101 4 LIN_SLAVE = Init;
102 4 lin_en=0;
103 4 task_en=1;
104 4 break;
105 4
106 4 case rece_data: //接收数据
107 4 overtime_flag=0;
108 4 SetTime(5000);
109 4 ReceiveData(rece_datas,num);
110 4 check_sum=ReceChecksum();
111 4 error_flag=JudgeChecksum(rece_datas,num);
112 4
113 4 if(overtime_flag|error_flag)
114 4 {
115 5 ErrorCounter+=8;
116 5 UartSend(0x01);
117 5 error_flag=0;
C51 COMPILER V8.08 LIN_MAIN 04/19/2009 00:03:15 PAGE 3
118 5 overtime_flag=0;
119 5 if(ErrorCounter>=64);
120 5 }
121 4 else
122 4 {
123 5 ErrorCounter-=1;
124 5 }
125 4 lin_en=0;
126 4 task_en=1;
127 4 ET0=0;
128 4 time_n=0;
129 4 break;
130 4 }
131 3 }
132 2 }
133 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 636 ----
CONSTANT SIZE = 1 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 24 1
IDATA SIZE = ---- ----
BIT SIZE = 4 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -