📄 d12driver.lst
字号:
C51 COMPILER V7.50 D12DRIVER 11/22/2005 21:08:11 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE D12DRIVER
OBJECT MODULE PLACED IN D12Driver.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE D12Driver.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /****************************************Copyright (c)**************************************************
2 ** 广州周立功单片机发展有限公司
3 ** 研 究 所
4 ** 产品一部
5 **
6 ** http://www.zlgmcu.com
7 **
8 ** 文 件 名: D12Driver.c
9 ** 最后修改日期: 2004年11月15日
10 ** 描 述: USB驱动程序软件包: PDIUSBD12 设备端驱动程序 应用层
11 ** 版 本: V5.0
12 **********************************************************************************************************
-/
13
14 #include <reg52.h>
15 #include "D12Config.h"
16 #include "D12CI.h"
17 #include "D12HAL.h"
18 #include "Chap_9.h"
19 #include "Descriptor.h"
20 #include "D12Driver.h"
21 #include "Protozlg.h"
22
23 INT8U idata GenEpBuf[EP1_PACKET_SIZE]; //端点1接收缓冲区
24 INT8U idata EpBuf[EP2_PACKET_SIZE]; //端点2接收缓冲区
25
26 INT16U data D12_DATA; //D12 数据地址变量
27 INT16U data D12_COMMAND; //D12 命令地址变量
28
29 /*********************************************************************
30 ** 函数名称: Init_D12()
31 ** 功能描述: 设置D12与硬件的连接, 初始化D12, 复位D12
32 ** 输 入: 无
33 ** 输 出: 0: 初始化成功 1: 初始化失败
34 **********************************************************************/
35 INT8U Init_D12(void)
36 {
37 1 bEPPflags.value = 0; //初始化USB事件标志变量
38 1
39 1 D12_COMMAND = D12_COMMAND_PORT; //D12 命令地址
40 1 D12_DATA = D12_DATA_PORT; //D12 数据地址
41 1
42 1 Init_D12Port(); //初始化PDIUSBD12与51单片机连接的端口
43 1 Rst_D12(); //复位PDIUSBD12
44 1 reconnect_USB(); //重新连接USB
45 1
46 1 if (D12_ReadChipID() != 0x1012) //读取芯片ID号,如果不为1012H
47 1 return 1; //则复位失败
48 1
49 1 return 0; //初始化成功
50 1 }
51
52 /*******************************************************************
53 ** 函数名称: usbserve()
54 ** 功能描述: USB事件处理函数
C51 COMPILER V7.50 D12DRIVER 11/22/2005 21:08:11 PAGE 2
55 ** 输 入: 无
56 ** 输 出: 无
57 ********************************************************************/
58 void usbserve(void)
59 {
60 1 if (bEPPflags.bits.setup_packet){ //Setup包处理
61 2 DISABLE();
62 2 bEPPflags.bits.setup_packet = 0;
63 2 control_handler(); //调用请求处理子程序
64 2 ENABLE();
65 2 }//if setup_packet
66 1
67 1 if (bEPPflags.bits.bus_reset) { //USB总线复位处理
68 2 DISABLE();
69 2 bEPPflags.bits.bus_reset = 0;
70 2 ENABLE();
71 2 d12_busreset();
72 2 } // if bus reset
73 1
74 1 if (bEPPflags.bits.suspend) { //D12挂起改变处理
75 2 DISABLE();
76 2 bEPPflags.bits.suspend= 0;
77 2 ENABLE();
78 2 d12_suspend();
79 2 } // if suspend change
80 1
81 1 //在此添加其它usb事件处理代码
82 1 }
83
84
85 /*******************************************************************
86 ** 函数名称: d12_busreset()
87 ** 功能描述: USB总线复位处理函数
88 ** 输 入: 无
89 ** 输 出: 无
90 ********************************************************************/
91 void d12_busreset(void)
92 {
93 1 //在此添加总线复位处理代码
94 1 }
95
96 /*******************************************************************
97 ** 函数名称: dma_eot()
98 ** 功能描述: DMA结束处理函数
99 ** 输 入: 无
100 ** 输 出: 无
101 ********************************************************************/
102 void dma_eot(void)
103 {
104 1 //在此添加DMA结束处理代码
105 1 }
106
107 /*******************************************************************
108 ** 函数名称: d12_suspend()
109 ** 功能描述: 总线挂起改变处理函数
110 ** 输 入: 无
111 ** 输 出: 无
112 ********************************************************************/
113 void d12_suspend(void)
114 {
115 1 //在此添加总线挂起改变代码
116 1 }
C51 COMPILER V7.50 D12DRIVER 11/22/2005 21:08:11 PAGE 3
117
118 /*******************************************************************
119 ** 函数名称: ep1_txdone()
120 ** 功能描述: 端点1 IN(发送)处理处理函数
121 ** 输 入: 无
122 ** 输 出: 无
123 ********************************************************************/
124 void ep1_txdone(void)
125 {
126 1 D12_ReadLastTransactionStatus(3); //清中断标志位
127 1 }
128
129 /*******************************************************************
130 ** 函数名称: ep1_txdone()
131 ** 功能描述: 端点1 OUT(接收)处理处理函数
132 ** 输 入: 无
133 ** 输 出: 无
134 ********************************************************************/
135 void ep1_rxdone(void)
136 {
137 1 unsigned char len;
138 1
139 1 D12_ReadLastTransactionStatus(2); //清中断标志位
140 1 len = D12_ReadEndpoint(2,sizeof(GenEpBuf),GenEpBuf); //读取数据
141 1 if(len != 0)
142 1 bEPPflags.bits.ep1_rxdone = 1; //标志接收到数据
143 1 }
144
145 /*******************************************************************
146 ** 函数名称: ep2_txdone()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -