📄 epphal.lst
字号:
154 =1 unsigned char dataBuffer[MAX_CONTROLDATA_SIZE];
155 =1 } CONTROL_XFER;
156 =1
157 =1 /*
158 =1 //*************************************************************************
159 =1 // USB utility functions
160 =1 //*************************************************************************
161 =1 */
162 =1 #ifndef __C51__
=1 void interrupt timer_isr(void);
=1 void interrupt usb_isr(void);
=1 #endif
166 =1
167 =1 void fn_usb_isr();
168 =1
169 =1 extern void suspend_change(void);
170 =1 extern void stall_ep0(void);
171 =1 extern void disconnect_USB(void);
172 =1 extern void connect_USB(void);
173 =1 extern void reconnect_USB(void);
174 =1 extern void init_unconfig(void);
175 =1 extern void init_config(void);
176 =1 extern void single_transmit(unsigned char * pData, unsigned char len);
177 =1 extern void code_transmit(unsigned char code * pRomData, unsigned short len);
178 =1
179 =1 extern void control_handler();
180 =1 extern void check_key_LED(void);
181 =1 extern void setup_dma();
182 =1 #ifndef __C51__
=1 extern void setup_io(); // V2.1, x86 only
=1 #endif
185 =1
186 =1 void dma_start(PIO_REQUEST);
187 =1
188 =1 #define IN_TOKEN_DMA 1
189 =1 #define OUT_TOKEN_DMA 0
190 =1
191 =1 #ifndef __C51__
=1 #define DMA_BUFFER_SIZE 64000
=1 #else
194 =1 #define DMA_BUFFER_SIZE 16384
195 =1 #endif
196 =1
197 =1 #define DMA_IDLE 0
198 =1 #define DMA_RUNNING 1
199 =1 #define DMA_PENDING 2
200 =1
201 =1 #define SETUP_DMA_REQUEST 0x0471
202 =1 #define GET_FIRMWARE_VERSION 0x0472
203 =1 #define GET_SET_TWAIN_REQUEST 0x0473
204 =1
205 =1 typedef struct _TWAIN_FILEINFO {
206 =1 unsigned char bPage; // bPage bit 7 - 5 map to uSize bit 18 - 16
207 =1 unsigned char uSizeH; // uSize bit 15 - 8
208 =1 unsigned char uSizeL; // uSize bit 7 - 0
209 =1 } TWAIN_FILEINFO, *PTWAIN_FILEINFO;
210 =1
211 =1 #endif
212 =1
28
29 extern EPPFLAGS bEPPflags;
30
C51 COMPILER V8.02 EPPHAL 07/27/2007 11:10:49 PAGE 10
31 void outportb(unsigned char port, unsigned char val)
32 {
33 1 unsigned char xdata *ext_address;
34 1
35 1 MCU_HOSTDACK =1;
36 1
37 1 ext_address=0xff00 + port;
38 1 *ext_address = val;
39 1
40 1 MCU_HOSTDACK =0;
41 1 }
42
43 unsigned char inportb(unsigned char port)
44 {
45 1 unsigned char c;
46 1 unsigned char xdata *ext_address;
47 1
48 1 MCU_HOSTDACK =1;
49 1
50 1 ext_address=0xff00 + port;
51 1 c = *ext_address ;
52 1
53 1 MCU_HOSTDACK =0;
54 1
55 1 return c;
56 1 }
57
58 void eppAwrite(unsigned char A_data)
59 {
60 1 MCU_HOSTDACK =1;
61 1
62 1 if(bEPPflags.bits.verbose)
63 1 printf("eppAwrite = 0x%bx.\n", A_data);
64 1
65 1 P0 = (A_data | 0x80);
66 1
67 1 EPP_WRITE = 0;
68 1
69 1 EPP_DSTROBE = 1;
70 1 EPP_ASTROBE = 1;
71 1 EPP_ASTROBE = 0;
72 1 EPP_ASTROBE = 1;
73 1
74 1 P0 = (A_data & 0x7F);
75 1
76 1 EPP_ASTROBE = 0;
77 1 EPP_ASTROBE = 1;
78 1
79 1 MCU_HOSTDACK =0;
80 1 }
81
82 void program_cpld(unsigned short uSize, unsigned char bCommand)
83 {
84 1 MCU_HOSTDACK = 1;
85 1
86 1 outportb(CPLD_CNT0, LSB(uSize)); // set CPLD counter
87 1 outportb(CPLD_CNT1, MSB(uSize));
88 1
89 1 if(bEPPflags.bits.verbose)
90 1 printf("CPLD counter read back = 0x%bx, 0x%bx.\n", inportb(CPLD_CNT0),
91 1 inportb(CPLD_CNT1));
92 1
C51 COMPILER V8.02 EPPHAL 07/27/2007 11:10:49 PAGE 11
93 1 if(bCommand & 0x1) {
94 2 MCU_DMARD_WR = 0;
95 2 EPP_WRITE = 1; // IN_TOKEN_DMA;
96 2 }
97 1 else {
98 2 MCU_DMARD_WR = 1;
99 2 EPP_WRITE = 0; // OUT_TOKEN_DMA;
100 2 }
101 1
102 1 MCU_HOSTDACK = 0;
103 1 }
104
105 void dma_start(PIO_REQUEST pio)
106 {
107 1 eppAwrite( (pio->uAddressL >> 13) + (pio->bAddressH << 3) );
108 1 program_cpld(pio->uSize, pio->bCommand);
109 1 }
110
111 #endif
C51 COMPILER V8.02 EPPHAL 07/27/2007 11:10:49 PAGE 12
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION _outportb (BEGIN)
; SOURCE LINE # 31
;---- Variable 'val' assigned to Register 'R5' ----
;---- Variable 'port' assigned to Register 'R7' ----
; SOURCE LINE # 32
; SOURCE LINE # 35
0000 D2A1 SETB MCU_HOSTDACK
; SOURCE LINE # 37
0002 E4 CLR A
0003 2F ADD A,R7
0004 FF MOV R7,A
0005 E4 CLR A
0006 34FF ADDC A,#0FFH
;---- Variable 'ext_address' assigned to Register 'DPTR' ----
0008 8F82 MOV DPL,R7
000A F583 MOV DPH,A
; SOURCE LINE # 38
000C ED MOV A,R5
000D F0 MOVX @DPTR,A
; SOURCE LINE # 40
000E C2A1 CLR MCU_HOSTDACK
; SOURCE LINE # 41
0010 22 RET
; FUNCTION _outportb (END)
; FUNCTION _inportb (BEGIN)
; SOURCE LINE # 43
;---- Variable 'port' assigned to Register 'R7' ----
; SOURCE LINE # 44
; SOURCE LINE # 48
0000 D2A1 SETB MCU_HOSTDACK
; SOURCE LINE # 50
0002 E4 CLR A
0003 2F ADD A,R7
0004 FF MOV R7,A
0005 E4 CLR A
0006 34FF ADDC A,#0FFH
;---- Variable 'ext_address' assigned to Register 'DPTR' ----
0008 8F82 MOV DPL,R7
000A F583 MOV DPH,A
; SOURCE LINE # 51
000C E0 MOVX A,@DPTR
000D FF MOV R7,A
;---- Variable 'c' assigned to Register 'R7' ----
; SOURCE LINE # 53
000E C2A1 CLR MCU_HOSTDACK
; SOURCE LINE # 55
; SOURCE LINE # 56
0010 ?C0002:
0010 22 RET
; FUNCTION _inportb (END)
; FUNCTION _eppAwrite (BEGIN)
; SOURCE LINE # 58
0000 900000 R MOV DPTR,#A_data
0003 EF MOV A,R7
0004 F0 MOVX @DPTR,A
; SOURCE LINE # 59
; SOURCE LINE # 60
C51 COMPILER V8.02 EPPHAL 07/27/2007 11:10:49 PAGE 13
0005 D2A1 SETB MCU_HOSTDACK
; SOURCE LINE # 62
0007 900000 E MOV DPTR,#bEPPflags+01H
000A E0 MOVX A,@DPTR
000B FF MOV R7,A
000C C3 CLR C
000D 13 RRC A
000E 30E011 JNB ACC.0,?C0003
; SOURCE LINE # 63
0011 7BFF MOV R3,#0FFH
0013 7A00 R MOV R2,#HIGH ?SC_0
0015 7900 R MOV R1,#LOW ?SC_0
0017 900000 R MOV DPTR,#A_data
001A E0 MOVX A,@DPTR
001B 900000 E MOV DPTR,#?_printf?BYTE+03H
001E F0 MOVX @DPTR,A
001F 120000 E LCALL _printf
0022 ?C0003:
; SOURCE LINE # 65
0022 900000 R MOV DPTR,#A_data
0025 E0 MOVX A,@DPTR
0026 FF MOV R7,A
0027 4480 ORL A,#080H
0029 F580 MOV P0,A
; SOURCE LINE # 67
002B C290 CLR EPP_WRITE
; SOURCE LINE # 69
002D D291 SETB EPP_DSTROBE
; SOURCE LINE # 70
002F D292 SETB EPP_ASTROBE
; SOURCE LINE # 71
0031 C292 CLR EPP_ASTROBE
; SOURCE LINE # 72
0033 D292 SETB EPP_ASTROBE
; SOURCE LINE # 74
0035 EF MOV A,R7
0036 547F ANL A,#07FH
0038 F580 MOV P0,A
; SOURCE LINE # 76
003A C292 CLR EPP_ASTROBE
; SOURCE LINE # 77
003C D292 SETB EPP_ASTROBE
; SOURCE LINE # 79
003E C2A1 CLR MCU_HOSTDACK
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -