📄 isr.lst
字号:
C51 COMPILER V7.08 ISR 03/11/2005 10:39:59 PAGE 1
C51 COMPILER V7.08, 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
line level source
1 /*
2 //*************************************************************************
3 //
4 // ZLGMCU
5 // www.zlgmcu.com
6 // File Name: ISR.C
7 // Revision: V0.2(2002-04-08)
8 // Use library: USB51S.LIB
9 // Note: USB51S.LIB不带DMA控制功能
10 //*************************************************************************
11 */
12
13 #include <stdio.h>
14 #include <string.h>
15 #include <reg51.h> /* special function register declarations */
16 #include "isr.h"
17 #include "mainloop.h"
18 #include "protozlg.h"
19 #include "absacc.h"
20 #include "D12ci.h"
21
22 #define UINT unsigned int
23 #define UCHAR unsigned char
24
25 #define DAADDR XBYTE[0x7fff]
26 UCHAR xdata *ad_addr;
27 UCHAR xdata *da_addr;
28 /*
29 //*************************************************************************
30 // Public static data
31 //*************************************************************************
32 */
33
34 EPPFLAGS bEPPflags;
35 CONTROL_XFER ControlData;
36
37 /* ISR static vars */
38 unsigned char idata GenEpBuf[EP1_PACKET_SIZE];
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.08 ISR 03/11/2005 10:39:59 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
73 1
74 1 for (clk_cnt=0;clk_cnt<=0x9000;clk_cnt++){}
75 1
76 1 connect_USB();
77 1
78 1 // MCU_LED0 = 1;//灭LED显示(实际应用中可去掉)
79 1 // MCU_LED1 = 1;//(实际应用中可去掉)
80 1 //for (clk_cnt=0;clk_cnt<=0x9000;clk_cnt++){}
81 1 }
82
83 //断开USB总线连接
84 void disconnect_USB(void)
85 {
86 1 D12_SetMode(D12_NOLAZYCLOCK, D12_SETTOONE | D12_CLOCK_12M);
87 1 }
88
89 //连接到USB总线
90 void connect_USB(void)
91 {
92 1 DISABLE;
93 1 bEPPflags.value = 0;
94 1 ENABLE;
95 1 D12_SetDMA(0x0);//设置D12工作模式
96 1 D12_SetMode(D12_NOLAZYCLOCK|D12_SOFTCONNECT, D12_SETTOONE | D12_CLOCK_12M);
97 1 // report interupt add by zjl
98 1 // D12_SetMode(D12_NOLAZYCLOCK|D12_SOFTCONNECT |0x08, D12_SETTOONE | D12_CLOCK_12M);
99 1 // set iso-io mode by zjl
100 1 // D12_SetMode(0x92, D12_SETTOONE | D12_CLOCK_12M);
101 1 }
102
103
104 //总线复位中断服务子程序
105 void bus_reset(void)
106 { /*
107 1 int a;
108 1 for(a=0;a<=20000;a++) ;
109 1 MCU_LED0 = 0;//灭LED显示(实际应用中可去掉)
110 1 MCU_LED1 = 0;
111 1 for(a=0;a<=20000;a++) ;
112 1 MCU_LED0 = 1;//灭LED显示(实际应用中可去掉)
113 1 MCU_LED1 = 1; //dtftrtsu857d88rrydgfgggggggggggggggggggggggg
114 1
115 1 */
116 1 //可添加用户代码(进行检测到总线复位的操作)
117 1 }
C51 COMPILER V7.08 ISR 03/11/2005 10:39:59 PAGE 3
118
119 //DMA操作结束中断服务子程序
120 void dma_eot(void)
121 {
122 1 //可添加用户代码(进行检测DMA操作结束的操作)
123 1 }
124
125 //端点1输出中断操作
126 void ep1_txdone(void)
127 {
128 1 D12_ReadLastTransactionStatus(3);//复位中断寄存器
129 1 //可添加用户代码(进行检测端点号3IN令牌的操作)
130 1
131 1 /* ad_addr=&IN0;
132 1 *ad_addr=0; //启动转换*/
133 1
134 1 }
135
136 //端点1输入中断操作
137 void ep1_rxdone(void)
138 {
139 1 unsigned char len;
140 1 // unsigned char temp;
141 1 D12_ReadLastTransactionStatus(2);//复位中断寄存器
142 1 len = D12_ReadEndpoint(2, sizeof(GenEpBuf), GenEpBuf);//读取端点1接收数据
143 1 da_addr=&DAADDR;
144 1 *da_addr=GenEpBuf[3]; //这句话进行D/A转换
145 1
146 1 // GenEpBuf[3]&=0xbf;
147 1 // P1=0xb0|GenEpBuf[3];
148 1 //P1=!GenEpBuf[3]; //modified by zoujl
149 1 if (len != 0)
150 1 bEPPflags.bits.ep1_rxdone = 1;//标志端点1接收到数据
151 1 }
152 /*
153 //端点2输出中断操作
154 void ep2_txdone(void)
155 {
156 // unsigned char Ep5_st;
157 // D12_ReadLastTransactionStatus(5);//复位中断寄存器
158 D12_COMMAND = 0x45; //clear last treat status
159 // D12_WriteEndpoint(5, 64, EpBuf);
160 D12_COMMAND = 0x05;
161 D12_COMMAND = 0xFA; //enable buffer sothat command in will be respond
162 //可添加用户代码(进行检测端点号5IN令牌的操作)
163 }
164 */
165 //端点2输入中断操作
166 void ep2_rxdone(void)
167 {
168 1 unsigned char len;
169 1 D12_ReadLastTransactionStatus(4);//复位中断寄存器
170 1 len = D12_ReadEndpoint(4, 64, EpBuf);//读取端点2接收数据
171 1 //if (len != 0);
172 1 // bEPPflags.bits.ep2_rxdone = 1;//标志端点1接收到数据
173 1 }
174
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 189 ----
CONSTANT SIZE = 48 ----
C51 COMPILER V7.08 ISR 03/11/2005 10:39:59 PAGE 4
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 29 6
IDATA SIZE = 74 ----
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 + -