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