?? isr.lst
字號(hào):
C51 COMPILER V7.06 ISR 12/25/2004 08:44:16 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 DEBUG OBJECTEXTEND
stmt level source
1 /*
2 //*************************************************************************
3 //
4 // File Name: ISR.C
5 // Revision: V0.1
6 // Use library: USB51S.LIB
7 // Note: USB51S.LIB不帶DMA控制功能
8 //*************************************************************************
9 */
10
11 #include <stdio.h>
12 #include <string.h>
13 #include <reg51.h> /* special function register declarations */
14 #include "isr.h"
15 #include "mainloop.h"
16
17 /*
18 //*************************************************************************
19 // Public static data
20 //*************************************************************************
21 */
22
23 EPPFLAGS bEPPflags;
24 CONTROL_XFER ControlData;
25
26 /* ISR static vars */
27 unsigned char idata GenEpBuf[EP1_PACKET_SIZE];
28 unsigned char idata EpBuf[EP2_PACKET_SIZE];
29 IO_REQUEST idata ioRequest;
30
31 //廠商請求入口地址
32 code void (*VendorDeviceRequest[])(void) =
33 {
34 reserved,
35 reserved,
36 reserved,
37 reserved,
38 reserved,
39 reserved,
40 reserved,
41 reserved,
42 reserved,
43 reserved,
44 reserved,
45 reserved,
46 reserved,
47 reserved,
48 reserved,
49 reserved
50 };
51
52 //USB總線重新連接(先斷開,再連接)子程序
53 void reconnect_USB(void)
54 {
55 1 unsigned long clk_cnt;
C51 COMPILER V7.06 ISR 12/25/2004 08:44:16 PAGE 2
56 1 MCU_LED0 = 0;//亮LED顯示(實(shí)際應(yīng)用中可去掉)
57 1 MCU_LED1 = 0;//(實(shí)際應(yīng)用中可去掉)
58 1
59 1 D12SUSPD = 0;
60 1 disconnect_USB();
61 1 for (clk_cnt=0;clk_cnt<=0x9000;clk_cnt++) {}
62 1 connect_USB();
63 1
64 1 MCU_LED0 = 1;//滅LED顯示(實(shí)際應(yīng)用中可去掉)
65 1 MCU_LED1 = 1;//(實(shí)際應(yīng)用中可去掉)
66 1 }
67
68 //斷開USB總線連接
69 void disconnect_USB(void)
70 {
71 1 D12_SetMode(D12_NOLAZYCLOCK, D12_SETTOONE | D12_CLOCK_12M);
72 1 }
73
74 //連接到USB總線
75 void connect_USB(void)
76 {
77 1 DISABLE;
78 1 bEPPflags.value = 0;
79 1 ENABLE;
80 1 D12_SetDMA(0x0);//設(shè)置D12工作模式
81 1 D12_SetMode(D12_NOLAZYCLOCK|D12_SOFTCONNECT, D12_SETTOONE | D12_CLOCK_12M);
82 1 }
83
84 //總線復(fù)位中斷服務(wù)子程序
85 void bus_reset(void)
86 {
87 1 //可添加用戶代碼(進(jìn)行檢測到總線復(fù)位的操作)
88 1 }
89
90 //DMA操作結(jié)束中斷服務(wù)子程序
91 void dma_eot(void)
92 {
93 1 //可添加用戶代碼(進(jìn)行檢測DMA操作結(jié)束的操作)
94 1 }
95
96 //端點(diǎn)1輸出中斷操作
97 void ep1_txdone(void)
98 {
99 1 D12_ReadLastTransactionStatus(3);//復(fù)位中斷寄存器
100 1 //可添加用戶代碼(進(jìn)行檢測端點(diǎn)號(hào)3IN令牌的操作)
101 1 }
102
103 //端點(diǎn)1輸入中斷操作
104 void ep1_rxdone(void)
105 {
106 1 unsigned char len;
107 1 D12_ReadLastTransactionStatus(2);//復(fù)位中斷寄存器
108 1 len = D12_ReadEndpoint(2, sizeof(GenEpBuf), GenEpBuf);//讀取端點(diǎn)1接收數(shù)據(jù)
109 1 if (len != 0)
110 1 bEPPflags.bits.ep1_rxdone = 1;//標(biāo)志端點(diǎn)1接收到數(shù)據(jù)
111 1 }
112
113 //端點(diǎn)2輸出中斷操作
114 void ep2_txdone(void)
115 {
116 1 D12_ReadLastTransactionStatus(5);//復(fù)位中斷寄存器
117 1 //可添加用戶代碼(進(jìn)行檢測端點(diǎn)號(hào)5IN令牌的操作)
C51 COMPILER V7.06 ISR 12/25/2004 08:44:16 PAGE 3
118 1 }
119
120 //端點(diǎn)1輸入中斷操作
121 void ep2_rxdone(void)
122 {
123 1 unsigned char len;
124 1 D12_ReadLastTransactionStatus(4);//復(fù)位中斷寄存器
125 1 len = D12_ReadEndpoint(4, 64, EpBuf);//讀取端點(diǎn)2接收數(shù)據(jù)
126 1 if (len != 0)
127 1 bEPPflags.bits.ep2_rxdone = 1;//標(biāo)志端點(diǎn)1接收到數(shù)據(jù)
128 1 }
129
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 166 ----
CONSTANT SIZE = 48 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 25 4
IDATA SIZE = 74 ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -