📄 sendfunction.lst
字号:
C51 COMPILER V8.02 SENDFUNCTION 06/04/2008 14:10:18 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE SENDFUNCTION
OBJECT MODULE PLACED IN D:\UART1\SENDFUNCTION.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE D:\UART1\SENDFUNCTION.C DB SB OE
line level source
1 #include <stdio.h>
2 #include <reg51.h>
3
4 extern void delay(int i); //延时子程序
5
6 extern bit SendOver;
7
8 void SendFunction(unsigned char *p)
9 {
10 1 unsigned char n=0;
11 1 unsigned char packetBuff[20]={0xEF,0x01,0xFF,0xFF,0xFF,0xFF,0,0,0,0,0,0,0,0,0,0,0,0};
12 1 unsigned int checkSum1=0;
13 1 unsigned char packetLength=0;
14 1 unsigned char SendNum=0;
15 1 unsigned char Length;
16 1 unsigned char buff;
17 1
18 1 ES=0 ;
19 1 Length=*p;
20 1 if(*p<=0x03) //只有指令没有参数的包
21 1 {
22 2 for(n=6;n<=6+*p;n++) //整个包长度为 9+*p
23 2 {
24 3 if(n==6)
25 3 {
26 4 packetBuff[n]=0x01; //包标识 0x01H
27 4 checkSum1+=(int)(packetBuff[n]);
28 4 }
29 3 if(n==7)
30 3 {
31 4 packetBuff[n]=0x00; //包长度 的 高字节 0x00H
32 4 //包长度不会超过256字节,因此高字节恒为0x00H
33 4 checkSum1+=(int)(packetBuff[n]);
34 4 }
35 3 if(n==8)
36 3 {
37 4 buff=*p;
38 4 packetBuff[n]=buff; //包长度的低字节
39 4 checkSum1+=(int)(packetBuff[n]);
40 4 }
41 3 if(n==9)
42 3 {
43 4 buff= *(p+1);
44 4 packetBuff[n]=buff; // 指令码
45 4 checkSum1+=(int)(packetBuff[n]);
46 4 }
47 3 }
48 2 }
49 1 if(*p>=0x04) //有指令也有参数的包
50 1 {
51 2 for(n=6;n<=6+*p;n++)
52 2 {
53 3 if(n==6)
54 3 {
55 4 packetBuff[n]=0x01; //包标识
C51 COMPILER V8.02 SENDFUNCTION 06/04/2008 14:10:18 PAGE 2
56 4 checkSum1+=(int)packetBuff[n];
57 4 }
58 3 if(n==7)
59 3 {
60 4 packetBuff[n]=0x00; //包长度 的 高字节 0x00H
61 4 //包长度不会超过256字节,因此高字节恒为0x00H
62 4 checkSum1+=(int)packetBuff[n];
63 4 }
64 3 if(n==8)
65 3 {
66 4 buff=*p;
67 4 packetBuff[n]=buff; //包长度 的 低字节
68 4 checkSum1+=(int)packetBuff[n];
69 4 }
70 3 if(n==9)
71 3 {
72 4 buff=*(p+1);
73 4 packetBuff[n]=buff; //指令字节
74 4 checkSum1+=(int)packetBuff[n];
75 4 }
76 3 if(n>=10 && n<9+*p-2)
77 3 {
78 4 buff=*(p+n-8);
79 4 packetBuff[n]=buff; // 指令参数
80 4 checkSum1+=(int)packetBuff[n];
81 4 }
82 3 }
83 2 }
84 1
85 1 packetBuff[n]=checkSum1/256; //加效验位的高字节
86 1 packetBuff[n+1]=checkSum1%256; //加效验位低字节
87 1 packetLength=*p+9 ;
88 1 SendNum=0;
89 1 TI=1;
90 1
91 1 while(SendNum<packetLength)
92 1 {
93 2 if(TI==1)
94 2 {
95 3 TI=0;
96 3 SBUF=*(packetBuff+SendNum);
97 3 SendNum++;
98 3 }
99 2 }
100 1
101 1 while(TI==0){}
102 1 if(TI==1)
103 1 {
104 2 TI=0;
105 2 RI=0;
106 2 ES=1; //传送完毕开中断进行接收
107 2 }
108 1
109 1 }
C51 COMPILER V8.02 SENDFUNCTION 06/04/2008 14:10:18 PAGE 3
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
size_t . . . . . . . . . . . . . . . . TYPEDEF ----- U_INT ----- 2
ES . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00ACH 1
RI . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0098H 1
TI . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0099H 1
SBUF . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0099H 1
_SendFunction. . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
p. . . . . . . . . . . . . . . . . . AUTO DATA PTR 0000H 3
n. . . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0003H 1
packetBuff . . . . . . . . . . . . . AUTO DATA ARRAY 0004H 20
checkSum1. . . . . . . . . . . . . . AUTO DATA U_INT 0018H 2
packetLength . . . . . . . . . . . . AUTO DATA U_CHAR 001AH 1
SendNum. . . . . . . . . . . . . . . AUTO DATA U_CHAR 001BH 1
Length . . . . . . . . . . . . . . . AUTO DATA U_CHAR 001CH 1
buff . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 001DH 1
_?ix1000 . . . . . . . . . . . . . . . STATIC CODE ARRAY 0000H 20
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 522 ----
CONSTANT SIZE = 20 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 30
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 + -