📄 d12ci.lst
字号:
C51 COMPILER V7.06 D12CI 01/03/2007 10:44:28 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE D12CI
OBJECT MODULE PLACED IN D12CI.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE D12CI.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /****************************************Copyright (c)**************************************************
2 ** 广州周立功单片机发展有限公司
3 ** 研 究 所
4 ** 产品一部
5 **
6 ** http://www.zlgmcu.com
7 **
8 ** 文 件 名: D12CI.c
9 ** 最后修改日期: 2004年11月15日
10 ** 描 述: USB驱动程序软件包: PDIUSBD12 设备端驱动程序 接口控制驱动层
11 ** 版 本: V5.0
12 **********************************************************************************************************
-/
13
14 #include <reg52.h>
15 #include "D12Config.h"
16 #include "D12HAL.h"
17 #include "D12CI.h"
18 #include "Chap_9.h"
19
20 /*****************************************
21 与CPU 无关, 与 USB相关的函数
22 *****************************************/
23
24 /************************************************************
25 ** 函数名称: D12_ReadChipID()
26 ** 功能描述: 读取芯片ID
27 ** 输 入: 无
28 ** 输 出: 芯片的ID号
29 ************************************************************/
30 INT16U D12_ReadChipID(void)
31 {
32 1 INT16U i,j;
33 1
34 1 if(bEPPflags.bits.in_isr == 0)
35 1 DISABLE();
36 1
37 1 outportb(D12_COMMAND, 0xFD); //发送读PDIUSBD12芯片ID号命令
38 1 i=inportb(D12_DATA); //读取ID号低字节
39 1 j=inportb(D12_DATA); //读取ID号高位字节
40 1 i += (j<<8); //组成16位的PDIUSBD12芯片ID号
41 1
42 1 if(bEPPflags.bits.in_isr == 0)
43 1 ENABLE();
44 1
45 1 return i;
46 1 }
47
48 /************************************************************
49 ** 函数名称: D12_SetAddressEnable()
50 ** 功能描述: 设置地址/使能
51 ** 输 入: INT8U bAddress: 地址
52 INT8U bEnable : 0 --- 禁止
53 1 --- 使能
54 ** 输 出: 无
C51 COMPILER V7.06 D12CI 01/03/2007 10:44:28 PAGE 2
55 ************************************************************/
56 void D12_SetAddressEnable(INT8U bAddress, INT8U bEnable)
57 {
58 1 if(bEPPflags.bits.in_isr == 0)
59 1 DISABLE();
60 1
61 1 outportb(D12_COMMAND, 0xD0); //输出设置地址/使能指令
62 1 if(bEnable)
63 1 bAddress |= 0x80; //bit7置1,使能
64 1 outportb(D12_DATA, bAddress); //输出设置值
65 1
66 1 if(bEPPflags.bits.in_isr == 0)
67 1 ENABLE();
68 1 }
69
70
71 /************************************************************
72 ** 函数名称: D12_SetEndpointEnable()
73 ** 功能描述: 设置端点使能
74 ** 输 入: INT8U bEnable : 0 --- 禁止
75 1 --- 允许
76 ** 输 出: 无
77 ************************************************************/
78 void D12_SetEndpointEnable(INT8U bEnable)
79 {
80 1 if(bEPPflags.bits.in_isr == 0)
81 1 DISABLE();
82 1
83 1 outportb(D12_COMMAND, 0xD8); //输出设置端点使能指令
84 1 if(bEnable)
85 1 outportb(D12_DATA, 1); //设置端点允许
86 1 else
87 1 outportb(D12_DATA, 0); //设置端点禁止
88 1
89 1 if(bEPPflags.bits.in_isr == 0)
90 1 ENABLE();
91 1 }
92
93 /************************************************************
94 ** 函数名称: void D12_SetMode()
95 ** 功能描述: 模式设置
96 ** 输 入: INT8U bConfig: 配置字节信息
97 INT8U bClkDiv: 分频系数
98 ** 输 出: 无
99 ************************************************************/
100 void D12_SetMode(INT8U bConfig,INT8U bClkDiv)
101 {
102 1 if(bEPPflags.bits.in_isr == 0)
103 1 DISABLE();
104 1
105 1 outportb(D12_COMMAND, 0xF3); //输出设置模式指令
106 1 outportb(D12_DATA, bConfig); //输出配置字节信息
107 1 outportb(D12_DATA, bClkDiv); //输出时钟分频因数字节
108 1
109 1 if(bEPPflags.bits.in_isr == 0)
110 1 ENABLE();
111 1 }
112
113 /************************************************************
114 ** 函数名称: void D12_SetDMA()
115 ** 功能描述: 设置DMA工作方式设置
116 ** 输 入: INT8U bMode: 设置值
C51 COMPILER V7.06 D12CI 01/03/2007 10:44:28 PAGE 3
117 ** 输 出: 无
118 ************************************************************/
119 void D12_SetDMA(INT8U bMode)
120 {
121 1 if(bEPPflags.bits.in_isr == 0)
122 1 DISABLE();
123 1
124 1 outportb(D12_COMMAND, 0xFB); //设置DMA工作方命令
125 1 outportb(D12_DATA, bMode); //输出设置值
126 1
127 1 if(bEPPflags.bits.in_isr == 0)
128 1 ENABLE();
129 1 }
130
131 /************************************************************
132 ** 函数名称: D12_ReadInterruptRegister()
133 ** 功能描述: 读取中断寄存器值
134 ** 输 入: 无
135 ** 输 出: 中断寄存器值
136 ************************************************************/
137 INT16U D12_ReadInterruptRegister(void)
138 {
139 1 INT8U b1;
140 1 INT16U j;
141 1
142 1 outportb(D12_COMMAND, 0xF4); //读取中断寄存器命令
143 1 b1 = inportb(D12_DATA); //读取低8位字节
144 1 j = inportb(D12_DATA); //读取高8位字节
145 1
146 1 j <<= 8;
147 1 j += b1; //组合为16位
148 1
149 1 return j;
150 1 }
151
152 /************************************************************
153 ** 函数名称: D12_SelectEndpoint()
154 ** 功能描述: 端点选择,将内部指针初始化到选择的缓冲区起始位置
155 ** 输 入: INT8U bEndp: 端点索引号,取值0 ~ 5
156 ** 输 出: 读出的字节
157 ************************************************************/
158 INT8U D12_SelectEndpoint(INT8U bEndp)
159 {
160 1 INT8U c;
161 1
162 1 if(bEPPflags.bits.in_isr == 0)
163 1 DISABLE();
164 1
165 1 outportb(D12_COMMAND, bEndp); //端点选择
166 1 c = inportb(D12_DATA); //读出一个字节
167 1
168 1 if(bEPPflags.bits.in_isr == 0)
169 1 ENABLE();
170 1
171 1 return c;
172 1 }
173
174 /************************************************************
175 ** 函数名称: D12_ReadEndpointStatus()
176 ** 功能描述: 读取端点状态
177 ** 输 入: INT8U bEndp: 端点索引号,取值0 ~ 5
178 ** 输 出: 端点状态
C51 COMPILER V7.06 D12CI 01/03/2007 10:44:28 PAGE 4
179 ************************************************************/
180 #if D12_ReadEndpointStatus_EN
INT8U D12_ReadEndpointStatus(INT8U bEndp)
{
INT8U c;
if(bEPPflags.bits.in_isr == 0)
DISABLE();
outportb(D12_COMMAND, 0x80 + bEndp); //读取端点状态命令
c = inportb(D12_DATA); //读取端点状态
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -