?? main.lst
字號(hào):
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 功能:解析由上位機(jī)(音頻控制器)的命令(通過RS232),
6 控制下位機(jī)(子控制板)動(dòng)作。
7 接收下位機(jī)的信息并發(fā)送給上位機(jī)
8 說明:程序使用RTX51實(shí)時(shí)多任務(wù)系統(tǒng),
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 "主: 市局應(yīng)急 ",
24 "主: 分局常規(guī)01 ",
25 "主: 分局常規(guī)02 ",
26 "主: 分局常規(guī)04 ",
27 "主:交警總隊(duì)350M",
28 "主: 市局01 ",
29 "主: 市局04 ",
30 "主: 黃浦01 ",
31 "主: 黃浦02 ",
32 "主: 特警01 ",
33 "主: 黃浦指揮 ",
34 "主:交警總隊(duì)800M",
35 "主: 空閑組 ",
36 "主: 空閑組 ",
37 "主: 空閑組 ",
38 "主: 空閑組 ",
39 "主: 空閑組 ",
40 "主: 空閑組 ",
41 "主: 空閑組 ",
42 "主: 空閑組 ",
43 "備: 分局903 ",
44 "備: 分局904 ",
45 "備: 分局905 ",
46 "備: 分局939 ",
47 "備: 分局940 ",
48 "備: 分局常規(guī)01 ",
49 "備: 分局常規(guī)02 ",
50 "備: 分局常規(guī)04 ",
51 "備: 市局應(yīng)急01 ",
52 "備:交警總隊(duì)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 "備: 黃浦應(yīng)急組 ",
63 "備:交警總隊(duì)800M",
64 };
65 /*===============================================================
66 功能:初始化
67 參數(shù):
68 返回:
69 說明:獲取電臺(tái)號(hào)
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設(shè)置成IO模式
77 1 XBYTE[DCA] = 0x00; //把PA設(shè)置成輸入模式
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, "監(jiān)聽設(shè)備", 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 功能:判斷上位機(jī)的命令是否正確,正確轉(zhuǎn)發(fā)
127 參數(shù):
128 返回:
129 說明:郵件的參數(shù)是接收數(shù)據(jù)長(zhǎng)度
130 只有一條協(xié)議
131 FF 04 ID1 02 01 ID2 00
132 ID1-指監(jiān)聽設(shè)備自身地址
133 ID2-指要監(jiān)聽的電臺(tái)號(hào)
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 {//緩沖區(qū)內(nèi)有數(shù)據(jù)
146 3 if( (cRecvBuff[cRecvBuffPtr][2] == cAddress) || (cRecvBuff[cRecvBuffPtr][2] == (cAddress+1)) )
147 3 {//坐席設(shè)備號(hào)正確
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 {//電臺(tái)號(hào)正確
154 7 //計(jì)算和校
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 //清除已處理的數(shù)據(jù)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -