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