📄 led.lst
字号:
C51 COMPILER V7.09 LED 09/25/2008 11:56:21 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE LED
OBJECT MODULE PLACED IN .\output\bin\led.obj
COMPILER INVOKED BY: C:\Keil709\C51\BIN\C51.EXE extendUART\led.c LARGE BROWSE INCDIR(audio\;eeprom\;extendUART\;flash\;g
-ps\;inter\;key\;mcu\;menu\;usb\;gprs\;main\;1wire\) DEBUG OBJECTEXTEND PRINT(.\output\led.lst) OBJECT(.\output\bin\led.o
-bj)
line level source
1 #include <string.h>
2 #include "typedef.h"
3 #include "16c554.h"
4 #include "led.h"
5
6 //#include "Trans_process.h"
7 #include "nf_file.h"
8 //#include "commoninterface.h"
9 //#include "display.h"
10 char gLedBuf[300];
11 char gLedReSendBuf[300];
12 unsigned char gLedSendFlag = 0;
13 #define DEFAULT_PARAM 3
14 #define DEFAULT_DELAY 0
15
16 #define LED_QUERY_NOTICE 0xa2
17 #define LED_QUERY_ADVERTISE 0x81
18 char gLedMsgID[4];
19 unsigned char gLedQueryType=0;
20 unsigned char gLedQuerySeq=0;
21 unsigned char gLedSetType=0;
22 #define LED_CLOCK_TIMER 10
23 unsigned char gLedClock = LED_CLOCK_TIMER;
24 //该进程处理LED接收的问题
25 /**注意该接口也可以做更新程序的接口,在用做更新程序使用时,需要屏蔽掉LED功能*/
26 #define LED_UPDATE_TIMEOUT 200
27 #define LED_UPDATEPROGRAM 2
28 #define LED_NORMALSTATUE 1
29 unsigned char gLedInterfaceStatus = LED_NORMALSTATUE;
30 Uint32 gLedUpdateOffset = 0;
31 Uint16 gLedUpdateLastNum = 0;
32 void led_process()
33 {
34 1 char* tmpBuf;
35 1 Byte recieveLen;
36 1 //处理接收
37 1 recieveLen = sioc_receive(&tmpBuf);
38 1 if (recieveLen > 0)
39 1 {
40 2 if ((tmpBuf[0] == '*') && (tmpBuf[recieveLen-1] == '#'))
41 2 {
42 3 //为更新程序的
43 3 gLedInterfaceStatus = LED_UPDATEPROGRAM;
44 3 led_updateprogram(tmpBuf, recieveLen);
45 3 }
46 2 sioc_start_receive();
47 2
48 2 }
49 1 }
50
51 #define SOH 1 /*数据正在传输*/
52 #define EOT 4 /*数据传输结束*/
53 #define QUIT 5 /*放弃前面传输的数据*/
C51 COMPILER V7.09 LED 09/25/2008 11:56:21 PAGE 2
54
55 #define RESPONSE_ACK 0//应答成功
56 #define RESPONSE_NAK 1//应答失败
57 /******以下程序是LED接口用作更新程序时使用*********/
58 /****返回应答信息******/
59 void encapsulate_response_update(Uint8 ProcessResult, Uint8 TransferStatus, Uint16 BlockSequence)
60 {
61 1 Byte len;
62 1 if(TransferStatus == SOH)
63 1 {
64 2 len = 8;
65 2 gLedBuf[7] = '#';
66 2 gLedBuf[0] = '*';
67 2 gLedBuf[1] = 0;
68 2 gLedBuf[2] = 8;
69 2 gLedBuf[3] = 0xa5;
70 2 gLedBuf[4] = ProcessResult;
71 2 gLedBuf[5] = High(BlockSequence);
72 2 gLedBuf[6] = Low(BlockSequence);
73 2 }
74 1 else
75 1 {
76 2 len = 6;
77 2 gLedBuf[5] = '#';
78 2 gLedBuf[0] = '*';
79 2 gLedBuf[1] = 0;
80 2 gLedBuf[2] = 6;
81 2 gLedBuf[3] = 0xa5;
82 2 gLedBuf[4] = ProcessResult;
83 2 }
84 1 sioc_send(gLedBuf, len);//sioc_send
85 1 // sioc_send(gLedBuf, len);
86 1 }
87
88 void led_updateprogram(Byte* pBuf, Byte nLen)
89 {
90 1 Uint16 blocksequence, chsum;
91 1 Byte i;
92 1 if (nLen == pBuf[2])
93 1 {
94 2 if (pBuf[5] == SOH)
95 2 {
96 3 if (0 == pBuf[4])
97 3 {
98 4 blocksequence = *(pBuf + 6);
99 4 blocksequence <<= 8;
100 4 blocksequence += *(pBuf + 7);
101 4
102 4 chsum = 0;
103 4 for(i=0; i<128; i++)//计算累加校验和
104 4 {
105 5 chsum += *(pBuf + 8 + i);
106 5 chsum &= 0x00ff;
107 5 }
108 4 if((blocksequence == gLedUpdateLastNum+1) && (chsum == *(pBuf + 136)))//数据块号校验和累加
-校验
109 4 {
110 5 gLedUpdateLastNum = blocksequence;
111 5 if (1 == blocksequence)
112 5 {
113 6 gLedUpdateOffset = 0;
114 6 init_serialupdateprogram(SERIAL_FIRSTUPDATE);
C51 COMPILER V7.09 LED 09/25/2008 11:56:21 PAGE 3
115 6 }
116 5 else
117 5 init_serialupdateprogram(SERIAL_FOLLOWUPDATE);
118 5 if (OK == write_programtoFlash(pBuf+8, 128, gLedUpdateOffset, NFUPDATE_SERIAL))
119 5 {
120 6 gLedUpdateOffset += 128;
121 6 encapsulate_response_update(RESPONSE_ACK, SOH, blocksequence);
122 6 }
123 5 }
124 4 else
125 4 encapsulate_response_update (RESPONSE_NAK, SOH, gLedUpdateLastNum);
126 4 }
127 3
128 3 }
129 2 else if ((pBuf[5] == EOT) && (0 != gLedUpdateLastNum))
130 2 {
131 3 //传输结束
132 3 //进行更新
133 3 gLedInterfaceStatus = LED_NORMALSTATUE;
134 3 encapsulate_response_update (RESPONSE_ACK, EOT, 0);
135 3 gLedUpdateLastNum = 0;
136 3 gLedUpdateOffset = 0;
137 3 switch_ld_ap();
138 3 }
139 2 }
140 1 }
141
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 605 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 616 11
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -