📄 usb.lst
字号:
C51 COMPILER V8.02 USB 05/24/2009 23:44:36 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE USB
OBJECT MODULE PLACED IN USB.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE USB.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<AT89X51.h>
2
3 /*
4
5 char *xdata a;
6 char xdata *a;
7 char data *xdata a;
8 上面3个指针,我概念比较混乱,看了书后也不是特别明白。还请高手帮忙给通俗地解释解释。谢谢!
9
10 xdata: 存储在外部RAM
11 data:存储在内部RAM
12 要存储的内容:
13 1.指针char *a指向的Byte串,2.指针本身,一般要3Byte
14 如果没有指定存储的地方(哪种RAM),按编译模式设定,一般是存储在data (small模式)。这样
15 char *xdata a
16 char data *xdata a
17 是相同的,都是表示指针本身存储在外部RAM,指针指向的数据存储在内部RAM
18 char xdata *a指指针本身3Byte存储在内部RAM,指针指向的Byte串存储在外部RAM XDATA。
19 一般尽量用内部RAM,data 数组的数据大,内部RAM放不下,用外部RAM保持数组内容
20 char xdata *a
21 这时指针本身的3Byte还是在内部RAM中;内部RAM不够用,可以把这3Byte也放倒外部RAM
22 char xdata *xdata a
23
24 */
25
26
27 #define CH371_PAGE 0
28 #define CH371_SYSTEM (unsigned char xdata *)2
29 #define CH371_CONFIG (unsigned char xdata *)2
30 #define CH371_INT_SET (unsigned char xdata*)6
31 #define CH371_STATUS (unsigned char xdata*)6
32 #define CH371_LENGTH (unsigned char xdata*)7
33 #define CH371_BUFFER (unsigned char xdata*)8
34
35 unsigned char save_status;
36 unsigned char save_length;
37 unsigned char save_buffer[8]={0};
38 unsigned char *temp;
39 unsigned char counter;
40 bit ReceiveFlag;
41 void Init(void)
42 {
43 1 *CH371_LENGTH=15;
44 1 save_length=0;
45 1 IT0=1;
46 1 IE0=0;
47 1 PX0=1;
48 1 EX0=1;
49 1 EA=1;
50 1
51 1 }
52
53 void UpLoad(unsigned char *pBuffer,unsigned len)
54 {
55 1 temp=CH371_BUFFER;
C51 COMPILER V8.02 USB 05/24/2009 23:44:36 PAGE 2
56 1 for(counter=0;counter<len;counter++)
57 1 {
58 2 *temp++=*pBuffer++;
59 2
60 2 }
61 1
62 1 *CH371_LENGTH=len;
63 1
64 1 }
65
66 void ExtInt0() interrupt 0
67 {
68 1 save_status=*CH371_STATUS;
69 1 if(save_status&0x01)
70 1 {
71 2 *CH371_LENGTH=15;
72 2 }
73 1 else{
74 2
75 2 P1=0xff;
76 2 temp=CH371_BUFFER;
77 2 save_length=*CH371_LENGTH;
78 2 for(counter=0;counter<save_length;counter++)
79 2 {save_buffer[counter]=*temp++;
80 3 ReceiveFlag=1;
81 3 }
82 2
83 2 }
84 1
85 1 }
86
87 void main(){
88 1
89 1 temp=0;
90 1 counter=0;
91 1 ReceiveFlag=0;
92 1 P1=0;
93 1 Init();
94 1
95 1 while(1)
96 1 {
97 2 if(ReceiveFlag==1)
98 2 {
99 3 if(save_buffer[0]==0x90)
100 3 {
101 4 save_buffer[0]=~save_buffer[0];
102 4 save_buffer[1]=~save_buffer[1];
103 4 save_buffer[2]=~save_buffer[2];
104 4 UpLoad(save_buffer,8);
105 4
106 4 }
107 3 ReceiveFlag=0;
108 3
109 3 }
110 2
111 2 }
112 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 261 ----
CONSTANT SIZE = ---- ----
C51 COMPILER V8.02 USB 05/24/2009 23:44:36 PAGE 3
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 14 3
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -