📄 d12ci.lst
字号:
C51 COMPILER V7.20 D12CI 11/16/2007 15:11:12 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE D12CI
OBJECT MODULE PLACED IN D12CI.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE D12CI.c BROWSE DEBUG OBJECTEXTEND
line 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 <reg922.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 /************************************************************
50 ** 函数名称: D12_SetAddressEnable()
51 ** 功能描述: 设置地址/使能
52 ** 输 入: INT8U bAddress: 地址
53 INT8U bEnable : 0 --- 禁止
54 1 --- 使能
C51 COMPILER V7.20 D12CI 11/16/2007 15:11:12 PAGE 2
55 ** 输 出: 无
56 ************************************************************/
57 void D12_SetAddressEnable(INT8U bAddress, INT8U bEnable)
58 {
59 1 if(bEPPflags.bits.in_isr == 0)
60 1 DISABLE();
61 1
62 1 outportb(D12_COMMAND, 0xD0); //输出设置地址/使能指令
63 1 if(bEnable)
64 1 bAddress |= 0x80; //bit7置1,使能
65 1 outportb(D12_DATA, bAddress); //输出设置值
66 1
67 1 if(bEPPflags.bits.in_isr == 0)
68 1 ENABLE();
69 1 }
70
71
72 /************************************************************
73 ** 函数名称: D12_SetEndpointEnable()
74 ** 功能描述: 设置端点使能
75 ** 输 入: INT8U bEnable : 0 --- 禁止
76 1 --- 允许
77 ** 输 出: 无
78 ************************************************************/
79 void D12_SetEndpointEnable(INT8U bEnable)
80 {
81 1 if(bEPPflags.bits.in_isr == 0)
82 1 DISABLE();
83 1
84 1 outportb(D12_COMMAND, 0xD8); //输出设置端点使能指令
85 1 if(bEnable)
86 1 outportb(D12_DATA, 1); //设置端点允许
87 1 else
88 1 outportb(D12_DATA, 0); //设置端点禁止
89 1
90 1 if(bEPPflags.bits.in_isr == 0)
91 1 ENABLE();
92 1 }
93
94 /************************************************************
95 ** 函数名称: void D12_SetMode()
96 ** 功能描述: 模式设置
97 ** 输 入: INT8U bConfig: 配置字节信息
98 INT8U bClkDiv: 分频系数
99 ** 输 出: 无
100 ************************************************************/
101 void D12_SetMode(INT8U bConfig,INT8U bClkDiv)
102 {
103 1 if(bEPPflags.bits.in_isr == 0)
104 1 DISABLE();
105 1
106 1 outportb(D12_COMMAND, 0xF3); //输出设置模式指令
107 1 outportb(D12_DATA, bConfig); //输出配置字节信息
108 1 outportb(D12_DATA, bClkDiv); //输出时钟分频因数字节
109 1
110 1 if(bEPPflags.bits.in_isr == 0)
111 1 ENABLE();
112 1 }
113
114 /************************************************************
115 ** 函数名称: void D12_SetDMA()
116 ** 功能描述: 设置DMA工作方式设置
C51 COMPILER V7.20 D12CI 11/16/2007 15:11:12 PAGE 3
117 ** 输 入: INT8U bMode: 设置值
118 ** 输 出: 无
119 ************************************************************/
120 void D12_SetDMA(INT8U bMode)
121 {
122 1 if(bEPPflags.bits.in_isr == 0)
123 1 DISABLE();
124 1
125 1 outportb(D12_COMMAND, 0xFB); //设置DMA工作方命令
126 1 outportb(D12_DATA, bMode); //输出设置值
127 1
128 1 if(bEPPflags.bits.in_isr == 0)
129 1 ENABLE();
130 1 }
131
132 /************************************************************
133 ** 函数名称: D12_ReadInterruptRegister()
134 ** 功能描述: 读取中断寄存器值
135 ** 输 入: 无
136 ** 输 出: 中断寄存器值
137 ************************************************************/
138 INT16U D12_ReadInterruptRegister(void)
139 {
140 1 INT8U b1;
141 1 INT16U j;
142 1
143 1 outportb(D12_COMMAND, 0xF4); //读取中断寄存器命令
144 1 b1 = inportb(D12_DATA); //读取低8位字节
145 1 j = inportb(D12_DATA); //读取高8位字节
146 1
147 1 j <<= 8;
148 1 j += b1; //组合为16位
149 1
150 1 return j;
151 1 }
152
153 /************************************************************
154 ** 函数名称: D12_SelectEndpoint()
155 ** 功能描述: 端点选择,将内部指针初始化到选择的缓冲区起始位置
156 ** 输 入: INT8U bEndp: 端点索引号,取值0 ~ 5
157 ** 输 出: 读出的字节
158 ************************************************************/
159 INT8U D12_SelectEndpoint(INT8U bEndp)
160 {
161 1 INT8U c;
162 1
163 1 if(bEPPflags.bits.in_isr == 0)
164 1 DISABLE();
165 1
166 1 outportb(D12_COMMAND, bEndp); //端点选择
167 1 c = inportb(D12_DATA); //读出一个字节
168 1
169 1 if(bEPPflags.bits.in_isr == 0)
170 1 ENABLE();
171 1
172 1 return c;
173 1 }
174
175 /************************************************************
176 ** 函数名称: D12_ReadEndpointStatus()
177 ** 功能描述: 读取端点状态
178 ** 输 入: INT8U bEndp: 端点索引号,取值0 ~ 5
C51 COMPILER V7.20 D12CI 11/16/2007 15:11:12 PAGE 4
179 ** 输 出: 端点状态
180 ************************************************************/
181 #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 + -