?? d12ci.lst
字號:
C51 COMPILER V7.50 D12CI 12/29/2005 19:52:58 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE D12CI
OBJECT MODULE PLACED IN D12CI.OBJ
COMPILER INVOKED BY: C:\Program Files\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 <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.50 D12CI 12/29/2005 19:52:58 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.50 D12CI 12/29/2005 19:52:58 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.50 D12CI 12/29/2005 19:52:58 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); //讀取端點狀態
if(bEPPflags.bits.in_isr == 0)
ENABLE();
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -