📄 main.lst
字号:
C51 COMPILER V7.06 MAIN 12/03/2004 14:35:27 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN Main.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE Main.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /****************************************Copyright (c)**************************************************
2 ** 广州周立功单片机发展有限公司
3 ** 研 究 所
4 ** 产品一部
5 **
6 ** http://www.zlgmcu.com
7 **
8 ** 文 件 名: main.c
9 ** 最后修改日期: 2004年11月15日
10 ** 描 述: 用户应用程序
11 ** 版 本: V5.0
12 **********************************************************************************************************
-/
13
14 #include <reg52.h>
15 #include "D12Config.h"
16 #include "Descriptor.h"
17 #include "Chap_9.h"
18 #include "D12Driver.h"
19 #include "string.h"
20
21
22 /***********************************************************
23 主函数 Main Function
24 ************************************************************/
25
26 #define CMD_RECEIVE 0x01 /* 接收命令 */
27 #define CMD_TRANSMIT 0x02 /* 发送命令 */
28
29 INT8U xdata RecBuf[1024]; /* 缓冲区 */
30
31 void RxServe(void);
32
33 sfr AUXR = 0x8E; /* 只用于TKS668 仿真器 */
34
35
36 /****************************************************************************
37 ** 函数名称: void Init_Interrupt(void)
38 ** 功能描述: 初始化MCU相关中断
39 *****************************************************************************/
40 void Init_Interrupt(void)
41 {
42 1 EX0 = 1; /* 开外部中断0 */
43 1 PX0 = 0; /* 设置外部中断0中断优先级 */
44 1 EA = 1; /* 开80C51总中断 */
45 1
46 1 AUXR = 0; /* 使能668芯片内部xdata */
47 1 }
48
49 /****************************************************************************
50 ** 函数名称: main()
51 ** 功能描述: 主函数
52 *****************************************************************************/
53 main()
54 {
C51 COMPILER V7.06 MAIN 12/03/2004 14:35:27 PAGE 2
55 1 if (Init_D12()!=0) /* 初始化D12 */
56 1 return; /* 如果初始化不成功,返回 */
57 1
58 1 Init_Interrupt(); /* 实始化D12以后,才能使能相关中断 */
59 1
60 1 while(1)
61 1 {
62 2 usbserve(); /* 处理USB事件 */
63 2
64 2 if (bEPPflags.bits.ep2_rxdone == 1)
65 2 { /* 从端点2收到数据 */
66 3 RxServe(); /* 数据处理 */
67 3
68 3 DISABLE();
69 3 bEPPflags.bits.ep2_rxdone = 0; /* 清空端点2收到数据标志 */
70 3 ENABLE();
71 3 }
72 2
73 2 }
74 1
75 1 }
76
77 /****************************************************************************
78 ** 函数名称: void RxServe(void)
79 ** 功能描述: 对接收到的数据进行处理,并发送数据到PC机
80 *****************************************************************************/
81 void RxServe(void)
82 {
83 1 INT8U ack = 0x01; /* 应答字 */
84 1 INT8U command,len;
85 1 INT16 offset;
86 1
87 1 command = EpBuf[0]; //命令字
88 1 offset = (INT16U)(EpBuf[1] << 8) + EpBuf[2]; //接收/发送 缓冲区地址
89 1 len = EpBuf[3]; //接收/发送 长度
90 1
91 1 //接收数据命令
92 1 if (command == CMD_RECEIVE)
93 1 {
94 2 memcpy(RecBuf + offset,&EpBuf[4],len);
95 2 D12_WriteEndpoint(5,1,&ack); //应答PC机:我已收到你发来的数据!
96 2 }
97 1
98 1 //发送数据命令
99 1 if (command == CMD_TRANSMIT)
100 1 {
101 2 if (len > 64)
102 2 { //要求发送数据大于64字节
103 3 D12_WriteEndpoint(5,64,RecBuf + offset); //写第一个发送缓冲区
104 3 D12_WriteEndpoint(5,len - 64,RecBuf + offset + 64); //写第二个发送缓冲区
105 3 }
106 2 else
107 2 D12_WriteEndpoint(5,len,RecBuf + offset); //只写第一个发送缓冲区
108 2 }
109 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 190 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 1024 ----
PDATA SIZE = ---- ----
C51 COMPILER V7.06 MAIN 12/03/2004 14:35:27 PAGE 3
DATA SIZE = ---- 5
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 + -