📄 main.lst
字号:
C51 COMPILER V7.10 MAIN 11/09/2006 11:10:16 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE main.c OPTIMIZE(0,SPEED) BROWSE DEBUG OBJECTEXTEND
line level source
1 /*
2 名称:main.c
3 日期:2005.01.12
4 作者:廖志凯
5 功能:解析由上位机(音频控制器)的命令(通过RS232),
6 控制下位机(子控制板)动作。
7 接收下位机的信息并发送给上位机
8 说明:程序使用RTX51实时多任务系统,
9 */
10 #pragma large
11 #include "main.h"
12 /*------------------------------------------------------------------------------*/
13 //定义变量
14 uchar xdata cAddress; //自身地址
15 uchar xdata cDiplayId[2];
16 #define MAX_NAME_ID 48
17 uchar code cNameId[MAX_NAME_ID][17]=
18 {
19 "主: 分局903 ",
20 "主: 分局904 ",
21 "主: 分局939 ",
22 "主: 分局940 ",
23 "主: 市局应急 ",
24 "主: 分局常规01 ",
25 "主: 分局常规02 ",
26 "主: 分局常规04 ",
27 "主:交警总队350M",
28 "主: 市局01 ",
29 "主: 市局04 ",
30 "主: 黄浦01 ",
31 "主: 黄浦02 ",
32 "主: 特警01 ",
33 "主: 黄浦指挥 ",
34 "主:交警总队800M",
35 "主: 空闲组 ",
36 "主: 空闲组 ",
37 "主: 空闲组 ",
38 "主: 空闲组 ",
39 "主: 空闲组 ",
40 "主: 空闲组 ",
41 "主: 空闲组 ",
42 "主: 空闲组 ",
43 "备: 分局903 ",
44 "备: 分局904 ",
45 "备: 分局905 ",
46 "备: 分局939 ",
47 "备: 分局940 ",
48 "备: 分局常规01 ",
49 "备: 分局常规02 ",
50 "备: 分局常规04 ",
51 "备: 市局应急01 ",
52 "备:交警总队350M",
53 "备: 市局01 ",
54 "备: 市局02 ",
55 "备: 市局03 ",
C51 COMPILER V7.10 MAIN 11/09/2006 11:10:16 PAGE 2
56 "备: 市局04 ",
57 "备: 市局05 ",
58 "备: 黄浦01 ",
59 "备: 黄浦02 ",
60 "备: 特警01 ",
61 "备: 黄浦指挥 ",
62 "备: 黄浦应急组 ",
63 "备:交警总队800M",
64 };
65 /*===============================================================
66 功能:初始化
67 参数:
68 返回:
69 说明:获取电台号
70 ===============================================================*/
71 void Init_System()
72 {
73 1 uchar _buff[20];
74 1 WDKEY = 0xAE; //开看门狗
75 1 IP = 0x00;
76 1 XBYTE[CTA] = 0x00; //把PA设置成IO模式
77 1 XBYTE[DCA] = 0x00; //把PA设置成输入模式
78 1 cAddress = XBYTE[DIA]; //读入PA值
79 1
80 1 os_set_slice(ST10MS);
81 1 Init_Serial();
82 1 EN_RS485_RECV();
83 1 //熄灭所以的灯
84 1 LED_RUN = 1;
85 1 CALL_IN1_LED = 1;
86 1 CALL_IN2_LED = 1;
87 1 cDiplayId[0] = 0;
88 1 cDiplayId[1] = 0;
89 1 //AUDIO_C1 = TURN_ON;
90 1 //AUDIO_C2 = TURN_ON;
91 1 AUDIO_C1 = TURN_OFF;
92 1 AUDIO_C2 = TURN_OFF;
93 1
94 1 memset(_buff, 0x00, 20);
95 1 memcpy(_buff, "监听设备", 8);
96 1 Write_Debug_Info(_buff, strlen(_buff));
97 1 memset(_buff, 0x00, 20);
98 1 sprintf(_buff,"%s%bd-%bd","地址:",cAddress,cAddress+1);
99 1 Write_Debug_Info(_buff, strlen(_buff));
100 1 memset(_buff, 0x00, 20);
101 1 sprintf(_buff,"%s;%s",__DATE__,__TIME__);
102 1 Write_Debug_Info(_buff, strlen(_buff));
103 1
104 1 os_wait2(K_TMO, T500MS);
105 1 Init_Vfd_Display();
106 1 Clear_Vfd_Display();
107 1
108 1 Define_Vfd_Userwindow(1, 1, 4, 0, 140, 2);
109 1 Select_Vfd_Window(1);
110 1 Position_Vfd_Home();
111 1 memset(_buff, 0x00, 20);
112 1 sprintf(_buff,"%s%bd", "地址:", cAddress);
113 1 Display_Vfd_Blending(_buff);
114 1 os_wait2(K_TMO, T50MS);
115 1 Define_Vfd_Userwindow(2, 1, 144, 0, 140, 2);
116 1 Select_Vfd_Window(2);
117 1 Position_Vfd_Home();
C51 COMPILER V7.10 MAIN 11/09/2006 11:10:16 PAGE 3
118 1 memset(_buff, 0x00, 20);
119 1 sprintf(_buff,"%s%bd", "地址:", cAddress+1);
120 1 Display_Vfd_Blending(_buff);
121 1
122 1
123 1 }
124
125 /*===============================================================
126 功能:判断上位机的命令是否正确,正确转发
127 参数:
128 返回:
129 说明:邮件的参数是接收数据长度
130 只有一条协议
131 FF 04 ID1 02 01 ID2 00
132 ID1-指监听设备自身地址
133 ID2-指要监听的电台号
134 ===============================================================*/
135 void Command_Task(void) _task_ CMMD_TASK_ID
136 {
137 1 uchar xdata _tmp, _ui;
138 1
139 1 os_wait(K_TMO, T1S, 0x00);
140 1 Set_Vfd_Brightless(1);
141 1
142 1 while(1)
143 1 {
144 2 if( (cRecvBuffCnt != 0x00) && (cRecvBuffPtr < RECV_GRUOP) )
145 2 {//缓冲区内有数据
146 3 if( (cRecvBuff[cRecvBuffPtr][2] == cAddress) || (cRecvBuff[cRecvBuffPtr][2] == (cAddress+1)) )
147 3 {//坐席设备号正确
148 4 if(cRecvBuff[cRecvBuffPtr][3] == 2)
149 4 {//命令类型正确
150 5 if(cRecvBuff[cRecvBuffPtr][4] == 1)
151 5 {//操作类型正确
152 6 if( (cRecvBuff[cRecvBuffPtr][5] >= 1) &&(cRecvBuff[cRecvBuffPtr][5] <= MAX_NAME_ID) )
153 6 {//电台号正确
154 7 //计算和校
155 7 _tmp = cRecvBuff[cRecvBuffPtr][2];
156 7 for(_ui=3; _ui< cRecvBuff[cRecvBuffPtr][1]+2; _ui++)
157 7 {
158 8 _tmp += cRecvBuff[cRecvBuffPtr][_ui];
159 8 }
160 7
161 7 //if(_tmp == cRecvBuff[cRecvBuffPtr][_ui])
162 7 {//和校正确
163 8 if(cRecvBuff[cRecvBuffPtr][2] == cAddress)
164 8 {
165 9 Select_Vfd_Window(1);
166 9 Position_Vfd_Home();
167 9 cDiplayId[0] = cRecvBuff[cRecvBuffPtr][5]-1;
168 9 Display_Vfd_Blending(cNameId[cDiplayId[0]]);
169 9 }
170 8 else if(cRecvBuff[cRecvBuffPtr][2] == (cAddress+1))
171 8 {
172 9 Select_Vfd_Window(2);
173 9 Position_Vfd_Home();
174 9 cDiplayId[1] = cRecvBuff[cRecvBuffPtr][5]-1;
175 9 Display_Vfd_Blending(cNameId[cDiplayId[1]]);
176 9 }
177 8 }
178 7 }
179 6 }
C51 COMPILER V7.10 MAIN 11/09/2006 11:10:16 PAGE 4
180 5 }
181 4 }
182 3 //清除已处理的数据
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -