📄 comm.lst
字号:
C51 COMPILER V4.01, COMM 19/08/04 14:33:25 PAGE 1
DOS C51 COMPILER V4.01, COMPILATION OF MODULE COMM
OBJECT MODULE PLACED IN D:\13505B\105B\COMM.OBJ
COMPILER INVOKED BY: C:\COMP51\C51.EXE D:\13505B\105B\COMM.C DB SB OE
stmt level source
1
2 #include <absacc.h>
3 #include <string.h>
4 #include "HardWare.h"
5 void SendMessage();
6 void SendResponse(uchar status,uchar len,uchar *datapr);
7 extern uchar xdata ComBuffer[MAXLEN];
8 extern void W_DOG(void);
9 extern idata uchar PCB;
10 /********************************************************************
11 * Function: SetBaud *
12 * *
13 * input: smode *
14 * output: -- *
15 ********************************************************************/
16 void SetBaud(uchar smode)
17 {
18 1 /* fosc=22.11845M,default Baudrate=115200bit/s */
19 1
20 1 T2CON=0x30; /* T2 in mode 1*/
21 1 W_DOG();
22 1 switch(smode)
23 1 {
24 2 case Baud9600:
25 2 RCAP2L =0x0b8;
26 2 break;
27 2 case Baud19200:
28 2 RCAP2L =0x0dc;
29 2 break;
30 2 case Baud38400:
31 2 RCAP2L =0xee;
32 2 break;
33 2 default: /* Baudrate=115200bit/s */
34 2 RCAP2L =0xfa;
35 2 }
36 1 RCAP2H =0xff;
37 1 SCON=0x50;
38 1 TR2=1;
39 1 }
40
41 /********************************************************************
42 * Function: CheckCRC *
43 * *
44 * input: -- *
45 * output: CrcOK or CrcError *
46 ********************************************************************/
47 uchar CheckCRC(void)
48 {
49 1 uchar i,ch=0;
50 1 W_DOG();
51 1
52 1 for(i=0;i<=ComBuffer[1]+1;i++)
53 1 {
54 2 ch=ch^ComBuffer[i];
55 2 }
56 1 if(ch==ComBuffer[i]) return CrcOK;
57 1
58 1 return CrcError;
59 1 }
C51 COMPILER V4.01, COMM 19/08/04 14:33:25 PAGE 2
60
61 /********************************************************************
62 * Function: CalculateCRC
63 * *
64 * input: data_len *
65 * output: ch *
66 ********************************************************************/
67 /*uchar CalculateCRC(uchar data_len)
68 {
69 uchar i,ch=0;
70 ch=ch^0x12;
71 ch=ch^PCB;
72 ch=ch^data_len;
73 W_DOG();
74 for(i=3;i<3+data_len;i++)
75 {
76 ch=ch^ComBuffer[i];
77 }
78
79
80 return ch;
81 }
82 /********************************************************************
83 * Function: SendMsError *
84 * *
85 * input: -- *
86 * output: -- *
87 ********************************************************************/
88 void SendMsError(void)
89 {
90 1 ComBuffer[4+2]=0x60;
91 1 ComBuffer[5+2]=0x01;
92 1 ComBuffer[6+2]=0xe0;
93 1 SendMessage();
94 1 }
95
96 /********************************************************************
97 * Function: SendResponse *
98 * *
99 * input: status,len,&data *
100 * output: -- *
101 ********************************************************************/
102 void SendResponse(uchar status,uchar len,uchar *datapr)
103 {
104 1 ComBuffer[4+2]=0x60;
105 1 ComBuffer[6+2]=status;
106 1 if (len>17)
107 1 { /* state 1 */
108 2 len-=17;
109 2 ComBuffer[5+2]=len;
110 2 }
111 1 else
112 1 { /* state 2 */
113 2 ComBuffer[5+2]=len;
114 2 if(len>1)
115 2 {
116 3 memcpy(ComBuffer+(7+2),datapr,len-1);
117 3 }
118 2 }
119 1 SendMessage();
120 1 }
121
122 /********************************************************************
123 * Function: SendMessage *
124 * *
125 * input: len *
C51 COMPILER V4.01, COMM 19/08/04 14:33:25 PAGE 3
126 * output: -- *
127 ********************************************************************/
128 void SendMessage(void)
129 {
130 1 uchar i,ch=0x00,len;
131 1
132 1 len=ComBuffer[5+2];
133 1 TR2=1;
134 1 TI=0;
135 1
136 1 for(i=0;i<=len+1;i++)
137 1 { /*send data*/
138 2
139 2 W_DOG();
140 2
141 2 ch=ch^ComBuffer[4+2+i];
142 2 SBUF=ComBuffer[4+2+i];
143 2 while(TI==0);
144 2 TI=0;
145 2 }
146 1 SBUF=ch;
147 1 while(TI==0);
148 1 TI=0;
149 1 SBUF=0x03;
150 1 while(TI==0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -