📄 d12isr.lst
字号:
C51 COMPILER V7.01 D12ISR 11/14/2003 09:44:52 PAGE 1
C51 COMPILER V7.01, COMPILATION OF MODULE D12ISR
OBJECT MODULE PLACED IN D12ISR.OBJ
COMPILER INVOKED BY: E:\Keil\C51\BIN\c51.exe D12ISR.C DB OE COMPACT ROM(LARGE)
stmt level source
1 //#pragma SYMBOLS
2
3 #include"stdio.h"
4 #include"X52.H"
5 #include"HAL.H"
6 #include"D12CI.H"
7 #include"MAIN.H"
8 #include"usb100.H"
9 //#include"absacc.h"
10 /****************************************************************************
11 * this program mainly handles interrupt generated by pdiusbd12.It retrieves *
12 * data from pdiusbd12's internal FIFO to CPU memory and set up the proper *
13 * event flags to inform main loop program for processing. *
14 *****************************************************************************/
15 unsigned long ClockTicks = 0;
16 unsigned char xdata MainEpBuf[256];
17 unsigned char idata dd[4];
18 unsigned int k;
19 unsigned char idata GenEpBuf[EP1_PACKET_SIZE];
20 unsigned char idata EpBuf[EP2_PACKET_SIZE];
21 //extern unsigned char idata GenEpBuf[EP1_PACKET_SIZE];
22 //extern unsigned char idata EpBuf[EP2_PACKET_SIZE];
23 //extern unsigned char D12_WriteBuffer(unsigned char endp ,unsigned char *buf,unsigned char len);
24 unsigned char ioSize, ioCount;
25 IO_REQUEST idata ioRequest;
26 BOOL bNoRAM;
27 //extern DATA_SAMPLE();
28 //extern unsigned char adc_sam();
29 //extern void D12_SetEndpointStatus(unsigned char bEndp ,unsigned char bStalled) reentrant;
30 //extern unsigned char D12_ReadBuffer(unsigned char endp, unsigned char * buf,unsigned char len);
31 //extern unsigned char D12_WriteBuffer(unsigned char endp, unsigned char * buf,unsigned char len)reentrant
-;
32 extern EPPFLAGS bEPPflags;
33 extern CONTROL_XFER ControlData;
34
35 //void adc_das();
36 void fn_usb_isr();
37 void bus_reset(void);
38 void ep0_rxdone(void);
39 void ep1_rxdone(void);
40 void ep0_txdone(void);
41 void ep1_txdone(void);
42 void main_txdone(void);
43 void main_rxdone(void);
44 void dma_eot(void);
45
46 timer_isr() interrupt 1
47 {
48 1 DISABLE;
49 1 //ClockTicks++;
50 1 bEPPflags.bits.timer = 1;
51 1 ENABLE;
52 1 }
53
54 /* adc_das() interrupt 1
C51 COMPILER V7.01 D12ISR 11/14/2003 09:44:52 PAGE 2
55 {
56
57 UCHAR idata result;
58 result=adc_sam();
59
60
61 }*/
62 //UCHAR i;
63 /*void data_sam(void) interrupt 0
64 {
65 UCHAR tmp;
66 unsigned char i=8; //ADC0809有八个模拟输入通道
67 XBYTE[ADC]=i;
68 WRITE=0; //启动A/D转换
69 //while(i && READ==0 && EOC==0);
70 while(i>=1 && READ==0 ); //等待八个通道A/D转换完毕
71 tmp=XBYTE[ADC]; //读A/D转换结果
72 i--;
73 XBYTE[ADCdata+i]=tmp; //结果存入数据缓冲区
74 XBYTE[ADC]=i; //启动下一个模拟通道的A/D转换
75 }*/
76
77
78 /*timer0() interrupt 1
79 {
80 DISABLE;
81 bEPPflags.bits.suspend= 1; //清除挂起改变标志
82 ENABLE;
83
84
85 }*/
86
87
88 usb_isr() interrupt 0
89 {
90 1 DISABLE;
91 1 fn_usb_isr();
92 1 ENABLE;
93 1 }
94
95 void dma_eot(void)
96 {
97 1 //if(bEPPflags.bits.dma_state==DMA_PENDING)
98 1
99 1 // bEPPflags.bits.setup_dma=1;
100 1 //else
101 1 // bEPPflags.bits.dma_state=DMA_IDLE;
102 1
103 1
104 1 }
105
106 void bus_reset(void)
107 {
108 1
109 1 }
110
111 void fn_usb_isr()
112 {
113 1 unsigned int i_st;
114 1
115 1 bEPPflags.bits.in_isr = 1;
116 1
C51 COMPILER V7.01 D12ISR 11/14/2003 09:44:52 PAGE 3
117 1 i_st = D12_ReadInterruptRegister();
118 1
119 1 if(i_st != 0)
120 1 {
121 2 if(i_st & D12_INT_BUSRESET)
122 2
123 2 {
124 3 bus_reset();
125 3
126 3 bEPPflags.bits.bus_reset = 1;
127 3 }
128 2 // else
129 2 // {
130 2 if(i_st & D12_INT_EOT)
131 2 {
132 3 dma_eot();
133 3 }
134 2
135 2 if(i_st & D12_INT_SUSPENDCHANGE)
136 2
137 2 {
138 3 bEPPflags.bits.suspend = 1;
139 3 }
140 2
141 2 if(i_st & D12_INT_ENDP0OUT)//0x01
142 2 {
143 3 ep0_rxdone();
144 3 }
145 2
146 2 if(i_st & D12_INT_ENDP0IN)//0x02
147 2 {
148 3 ep0_txdone();
149 3 }
150 2
151 2
152 2
153 2 if(i_st & D12_INT_ENDP1IN)
154 2
155 2 { //bEPPflags.bits.ep1_transmit=1;
156 3 ep1_txdone();
157 3 }
158 2 if(i_st & D12_INT_ENDP1OUT)
159 2 {
160 3 ep1_rxdone();
161 3 }
162 2
163 2 if(i_st & D12_INT_ENDP2IN)
164 2
165 2 {
166 3 main_txdone();
167 3 }
168 2
169 2 if(i_st & D12_INT_ENDP2OUT)
170 2 {
171 3 main_rxdone();
172 3 }
173 2 // }
174 2 }//end of i_st
175 1
176 1 bEPPflags.bits.in_isr = 0;
177 1
178 1 }//end of fn_usb_isr
C51 COMPILER V7.01 D12ISR 11/14/2003 09:44:52 PAGE 4
179
180 //控制输出(control out function)
181 void ep0_rxdone(void)
182 {
183 1 unsigned char ep_last, i;
184 1 //last = D12_ReadEndpointStatus(0) ;
185 1 ep_last = D12_ReadLastTransactionStatus(0); // Clear interrupt flag
186 1
187 1
188 1 if (ep_last & D12_SETUPPACKET)
189 1 //if (last & 0x04)
190 1 {
191 2
192 2 ControlData.wLength = 0;
193 2 ControlData.wCount = 0;
194 2 //判断端点是否满,如是,则取出
195 2 if( D12_ReadBuffer(0,(unsigned char *)(&(ControlData.DeviceRequest)),sizeof(ControlData.DeviceRequest))
-!= sizeof(DEVICE_REQUEST))
196 2 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -