📄 d12ci.lst
字号:
C51 COMPILER V6.12 D12CI 07/30/2003 21:27:45 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE D12CI
OBJECT MODULE PLACED IN .\D12CI.OBJ
COMPILER INVOKED BY: f:\Keil\C51\BIN\C51.EXE .\D12CI.C LARGE DEBUG OBJECTEXTEND
stmt level source
1 //D12CI.c
2 #include "common.h"
3 #include "D12CI.h"
4 #include "mainloop.h"
5
6 extern EPPFLAGS bEPPflags;
7
8 void outportb(unsigned int Addr,unsigned char Data)
9 {
10 1 *((unsigned char xdata *)Addr) = Data;
11 1 }
12
13 unsigned char inportb(unsigned int Addr)
14 {
15 1 return *((unsigned char xdata *)Addr);
16 1 }
17
18 void D12_SetAddressEnable(uchar bAddress,uchar bEnable)
19 {
20 1 outportb(D12_COMMAND,0xd0);
21 1 if(bEnable)
22 1 bAddress |= 0x80;
23 1 outportb(D12_DATA,bAddress);
24 1 }
25
26 void D12_SetEndpointEnable(uchar bEnable)
27 {
28 1 outportb(D12_COMMAND,0xd8);
29 1 if(bEnable)
30 1 outportb(D12_DATA,1);
31 1 else
32 1 outportb(D12_DATA,0);
33 1 }
34
35 void D12_SetMode(uchar bConfig,uchar bClkDiv)
36 {
37 1 outportb(D12_COMMAND,0xf3);
38 1 outportb(D12_DATA,bConfig);
39 1 outportb(D12_DATA,bClkDiv);
40 1 }
41
42 void D12_SetDMA(uchar bMode)
43 {
44 1 outportb(D12_COMMAND,0xfb);
45 1 outportb(D12_DATA,bMode);
46 1 }
47
48 ushort D12_ReadInterruptRegister(void)
49 {
50 1 uchar b1;
51 1 uint j;
52 1 outportb(D12_COMMAND,0xf4);
53 1 b1 = inportb(D12_DATA);
54 1 j = inportb(D12_DATA);
55 1 j <<= 8;
C51 COMPILER V6.12 D12CI 07/30/2003 21:27:45 PAGE 2
56 1 j += b1;
57 1 return j;
58 1 }
59
60 uchar D12_SelectEndpoint(uchar bEndp)
61 {
62 1 uchar c;
63 1 outportb(D12_COMMAND,bEndp);
64 1 c = inportb(D12_DATA);
65 1 return c;
66 1 }
67
68 uchar D12_ReadLastTransactionStatus(uchar bEndp)
69 {
70 1 outportb(D12_COMMAND,0x40+bEndp);
71 1 return inportb(D12_DATA);
72 1 }
73
74 void D12_SetEndpointStatus(uchar bEndp,uchar bStalled)
75 {
76 1 outportb(D12_COMMAND,0x40+bEndp);
77 1 outportb(D12_DATA,bStalled);
78 1 }
79
80 uchar D12_ReadEndpointStatus(uchar bEndp)
81 {
82 1 outportb(D12_COMMAND,0x80+bEndp);
83 1 return inportb(D12_DATA);
84 1 }
85
86 void D12_SendResume(void)
87 {
88 1 outportb(D12_COMMAND,0xf6);
89 1 }
90
91 ushort D12_ReadCurrentFrameNumber(void)
92 {
93 1 ushort i,j;
94 1 outportb(D12_COMMAND,0xf5);
95 1 i = inportb(D12_DATA);
96 1 j = inportb(D12_DATA);
97 1 i += (j<<8);
98 1 return i;
99 1 }
100
101 uchar D12_ReadEndpoint(uchar endp,uchar len,uchar * buf)
102 {
103 1 uchar i,j;
104 1 outportb(D12_COMMAND,endp);
105 1 if((inportb(D12_DATA)&0x01)==0)
106 1 return 0;
107 1 outportb(D12_COMMAND,0x80+endp);
108 1 i = inportb(D12_DATA);
109 1 i = i&0x60;
110 1 if(endp == 2)
111 1 {
112 2 if(i==0x60)
113 2 bEPPflags.bits.ep1buf_full = 1;
114 2 else
115 2 bEPPflags.bits.ep1buf_full = 0;
116 2 }
117 1 if(endp ==4)
C51 COMPILER V6.12 D12CI 07/30/2003 21:27:45 PAGE 3
118 1 {
119 2 if(i==0x60)
120 2 bEPPflags.bits.ep2buf_full = 1;
121 2 else
122 2 bEPPflags.bits.ep2buf_full = 0;
123 2 }
124 1 outportb(D12_COMMAND,0xF0);
125 1 j = inportb(D12_DATA);
126 1 j = inportb(D12_DATA);
127 1 if(j>len)
128 1 j = len;
129 1 for(i = 0;i<j;i++)
130 1 *(buf+i) = inportb(D12_DATA);
131 1 outportb(D12_COMMAND,0xf2);
132 1 return j;
133 1 }
134
135 uchar D12_WriteEndpoint(uchar endp,uchar len ,uchar * buf)
136 {
137 1 uchar i;
138 1 outportb(D12_COMMAND,endp);
139 1 inportb(D12_DATA);
140 1 outportb(D12_COMMAND,0xf0);
141 1 outportb(D12_DATA,0);
142 1 outportb(D12_DATA,len);
143 1 for(i = 0;i<len;i++)
144 1 outportb(D12_DATA,*(buf+i));
145 1 outportb(D12_COMMAND,0xfa);
146 1 return len;
147 1 }
148
149 void D12_AcknowledgeEnppoint(uchar endp)
150 {
151 1 outportb(D12_COMMAND,endp);
152 1 outportb(D12_COMMAND,0xf1);
153 1 if(endp == 0)
154 1 outportb(D12_COMMAND,0xf2);
155 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 545 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- 10
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -