📄 gpif.lst
字号:
C51 COMPILER V7.00 GPIF 09/27/2002 10:11:23 PAGE 1
C51 COMPILER V7.00, COMPILATION OF MODULE GPIF
OBJECT MODULE PLACED IN gpif.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE gpif.c OPTIMIZE(9,SIZE) DEBUG OBJECTEXTEND
stmt level source
1 /********************************************************************/
2 /* This file is created by liurong,and be used for GPIF */
3 /********************************************************************/
4 #include "ezusb.h"
5 #include "ezregs.h"
6 #include "Fx.h"
7
-
8 const char xdata WaveData[128] =
9 {
10 // Wave 0
11 /* LenBr */ 0x01, 0x01, 0x32, 0x32, 0x32, 0x01, 0x01, 0x47,
12 /* Opcode*/ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00,
13 /* Output*/ 0xFF, 0xFF, 0xF9, 0xF9, 0xF9, 0xFF, 0xFF, 0xFF,
14 /* LFun */ 0x00, 0x09, 0x12, 0x1B, 0x24, 0x2D, 0x36, 0x3F,
15 // Wave 1
16 /* LenBr */ 0x48, 0x06, 0x03, 0x03, 0x01, 0x01, 0x01, 0x47,
17 /* Opcode*/ 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00,
18 /* Output*/ 0xFF, 0xFF, 0xFA, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF,
19 /* LFun */ 0x80, 0x09, 0x12, 0x1B, 0x24, 0x2D, 0x36, 0x3F,
20 // Wave 2
21 /* LenBr */ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x47,
22 /* Opcode*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
23 /* Output*/ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
24 /* LFun */ 0x00, 0x09, 0x12, 0x1B, 0x24, 0x2D, 0x36, 0x3F,
25 // Wave 3
26 /* LenBr */ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x47,
27 /* Opcode*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
28 /* Output*/ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
29 /* LFun */ 0x09, 0x09, 0x12, 0x1B, 0x24, 0x2D, 0x36, 0x3F
30 };
31
32
33
34 const char xdata InitData[7] =
35 {
36 /* Regs */ 0xC0,0x00,0x01,0xFF,0x06,0x1B,0x11
37 };
38
39 #define TMOUT 0x0020 // Default Timeout TODO: Set this appropriately
40
41 void GpifInit(void)
42 {
43 1 unsigned char xdata *Source;
44 1 unsigned char xdata *Dest;
45 1 unsigned int x;
46 1
47 1 ABORT = 0; // abort any pending operation
48 1 READY = InitData[0];
49 1 CTLOUTCFG = InitData[1];
50 1 IDLE_CS = InitData[2];
51 1 IDLE_CTLOUT = InitData[3];
52 1 IFCONFIG = InitData[4];
53 1 WFSELECT = InitData[5];
54 1 ABSETUP |= InitData[6];
C51 COMPILER V7.00 GPIF 09/27/2002 10:11:23 PAGE 2
55 1
56 1 Source = WaveData; // Transfer the GPIF Tool generated data
57 1 Dest = &WFDESC[0];
58 1
59 1 for (x = 0; x < 128; x++)
60 1 *Dest++ = *Source++;
61 1
62 1 INT4SETUP = INT4SFC | INT4_INTERNAL; // setup INT4 as internal source
63 1 EIEX4 = 0x01;
64 1 PORTSETUP |= 0x01;
65 1 }
66
67 // write byte to PERIPHERAL, using GPIF
68 bit Peripheral_SingleWordWrite( BYTE gaddr, WORD gdata )
69 {
70 1 unsigned char transaction_err = 0x00;
71 1
72 1 GPIFADRL = gaddr; // setup GPIF address ADR0-ADR5
73 1 SGLDATH = gdata >> 8;
74 1 SGLDATLTRIG = gdata; // initiate GPIF write transaction
75 1
76 1 while( !( IDLE_CS & 0x80 ) ) // poll IDLE_CS.7 Done bit
77 1 {
78 2 if( ++transaction_err > TMOUT ) // trap GPIF transaction for TMOUT
79 2 {
80 3 ABORT = 0x01;
81 3 return( 0 ); // error has occurred
82 3 }
83 2 }
84 1
85 1 return( 1 );
86 1 }
87
88 // read word from PERIPHERAL, using GPIF
89 bit Peripheral_SingleWordRead( BYTE gaddr, WORD xdata *gdata )
90 {
91 1 unsigned char g_data = 0x00;
92 1 unsigned char transaction_err = 0x00;
93 1
94 1 GPIFADRL = gaddr; // setup GPIF address ADR0-ADR5
95 1 g_data = SGLDATLTRIG; // initiate GPIF read transaction
96 1
97 1 while( !( IDLE_CS & 0x80 ) ) // poll IDLE_CS.7 Done bit
98 1 {
99 2 if( ++transaction_err > TMOUT ) // trap GPIF transaction for TMOUT
100 2 {
101 3 ABORT = 0x01;
102 3 return( 0 ); // error has occurred
103 3 }
104 2 }
105 1
106 1 *gdata = ( ( WORD )SGLDATH << 8 ) | ( WORD )SGLDATLNTRIG;
107 1
108 1 return( 1 );
109 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 240 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 135 ----
PDATA SIZE = ---- ----
C51 COMPILER V7.00 GPIF 09/27/2002 10:11:23 PAGE 3
DATA SIZE = ---- 4
IDATA SIZE = ---- ----
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 + -