📄 isr.lst
字号:
C51 COMPILER V7.06 ISR 09/06/2003 16:55:56 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE ISR
OBJECT MODULE PLACED IN Isr.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE Isr.c OPTIMIZE(2,SPEED) DEBUG OBJECTEXTEND
stmt level source
1 /*
2 //*************************************************************************
3 //
4 // ZLGMCU
5 // www.zlgmcu.com
6 // File Name: isr.C
7 // Revision: 0.4(2002-07-08)
8 // Author: Liu Ying Bin
9 // Use library: USB51S.LIB
10 // Note: USB51S.LIB不带DMA控制功能
11 //*************************************************************************
12 */
13
14
15 #include <stdio.h>
16 #include <string.h>
17 #include <reg51.h>
18 #include "isr.h"
19
20 /*
21 //*************************************************************************
22 // Public static data
23 //*************************************************************************
24 */
25
26 EPPFLAGS bEPPflags;
27 CONTROL_XFER ControlData;
28 unsigned int data d12_addr;
29 byte_count byte_cnt;
30 unsigned int data D12_DATA;
31 unsigned int data D12_COMMAND;
32
33
34 /* ISR static vars */
35 unsigned char idata GenEpBuf[EP1_PACKET_SIZE];
36 unsigned char idata EpBuf[EP2_PACKET_SIZE];
37 IO_REQUEST idata ioRequest;
38
39 //厂商请求入口地址
40 code void (*VendorDeviceRequest[])(void) =
41 {
42 reserved,
43 reserved,
44 reserved,
45 reserved,
46 reserved,
47 reserved,
48 reserved,
49 reserved,
50 reserved,
51 reserved,
52 reserved,
53 reserved,
54 reserved,
55 reserved,
C51 COMPILER V7.06 ISR 09/06/2003 16:55:56 PAGE 2
56 reserved,
57 reserved
58 };
59
60 //USB总线重新连接(先断开,再连接)子程序
61 void reconnect_USB(void)
62 {
63 1 unsigned long clk_cnt;
64 1
65 1 D12SUSPD = 0;
66 1 disconnect_USB();
67 1 for (clk_cnt=0;clk_cnt<=0x9000;clk_cnt++) {}
68 1 connect_USB();
69 1 }
70
71 //断开USB总线连接
72 void disconnect_USB(void)
73 {
74 1 D12_SetMode(D12_NOLAZYCLOCK, D12_SETTOONE | D12_CLOCK_12M);
75 1 }
76
77 //连接到USB总线
78 void connect_USB(void)
79 {
80 1 DISABLE;
81 1 bEPPflags.value = 0;
82 1 ENABLE;
83 1 D12_SetDMA(0x0);//设置D12工作模式
84 1 D12_SetMode(D12_NOLAZYCLOCK|D12_SOFTCONNECT, D12_SETTOONE | D12_CLOCK_12M);
85 1 }
86
87 //总线复位服务子程序
88 void D12_busreset(void)
89 {
90 1 //可添加用户代码(进行检测到总线复位的操作)
91 1 }
92
93 //DMA操作结束中断服务子程序
94 void dma_eot(void)
95 {
96 1 //可添加用户代码(进行检测DMA操作结束的操作)
97 1 }
98
99 //D12挂起服务子程序
100 void d12_suspend(void)
101 {
102 1 //可添加用户代码
103 1 }
104
105 //端点1输出中断操作
106 void ep1_txdone(void)
107 {
108 1 D12_ReadLastTransactionStatus(3);//复位中断寄存器
109 1 //可添加用户代码(进行检测端点号3IN令牌的操作)
110 1 }
111
112 //端点1输入中断操作
113 void ep1_rxdone(void)
114 {
115 1 unsigned char len;
116 1 D12_ReadLastTransactionStatus(2);//复位中断寄存器
117 1 len = D12_ReadEndpoint(2, sizeof(GenEpBuf), GenEpBuf);//读取端点1接收数据
C51 COMPILER V7.06 ISR 09/06/2003 16:55:56 PAGE 3
118 1 if (len != 0)
119 1 bEPPflags.bits.ep1_rxdone = 1;//标志端点1接收到数据
120 1 }
121
122 //端点2输出中断操作
123 void ep2_txdone(void)
124 {
125 1 D12_ReadLastTransactionStatus(5);//复位中断寄存器
126 1 //可添加用户代码(进行检测端点号5IN令牌的操作)
127 1 if(byte_cnt.word>0)
128 1 {
129 2 if(byte_cnt.word<64)
130 2 {
131 3 D12_WriteEndpoint(5, byte_cnt.byte.low, EpBuf);
132 3 byte_cnt.word=0;
133 3 }
134 2 else
135 2 {
136 3 byte_cnt.word=byte_cnt.word-64;
137 3 D12_WriteEndpoint(5, 64, EpBuf);
138 3 }
139 2 }
140 1 }
141
142 //端点2输入中断操作
143 void ep2_rxdone(void)
144 {
145 1 unsigned char len;
146 1 D12_ReadLastTransactionStatus(4);//复位中断寄存器
147 1 len = D12_ReadEndpoint(4, 64, EpBuf);//读取端点2接收数据
148 1 if (bEPPflags.bits.ep2buf_full)
149 1 len = D12_ReadEndpoint(4, 64, EpBuf);//读取端点2接收数据
150 1 if (len != 0)
151 1 bEPPflags.bits.ep2_rxdone = 1;//标志端点2接收到数据
152 1 }
153
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 281 ----
CONSTANT SIZE = 48 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 33 6
IDATA SIZE = 78 ----
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 + -