📄 subp.lst
字号:
C51 COMPILER V7.20 SUBP 07/05/2004 23:23:35 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE SUBP
OBJECT MODULE PLACED IN subp.OBJ
COMPILER INVOKED BY: F:\keil\C51\BIN\C51.EXE subp.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <sl811.h>
2 #include <des.h>
3 #include <reg51.h>
4 #include <varial.h>
5
6
7 //--------------------------------
8 // wait usb reset 5ms
9 //-------------------------------
10 void Delay(void)
11 {
12 1 BYTE i,u;
13 1 for(u=40;u>0;u--)
14 1 {
15 2 i=255;
16 2 while(i--);
17 2 }
18 1 }
19 //*****************************************************************************************
20 // BYTE Read from SL811H
21 // a = register address
22 // return = data in register
23 //*****************************************************************************************
24 BYTE SL811Read( BYTE a)
25 {
26 1 SL811H_ADDR = a;
27 1 return (SL811H_DATA);
28 1 }
29
30 //*****************************************************************************************
31 // BYTE Write to SL811H
32 // a = register address
33 // d = data to be written to this register address
34 //*****************************************************************************************
35 void SL811Write( BYTE a, BYTE d)
36 {
37 1 SL811H_ADDR = a;
38 1 SL811H_DATA = d;
39 1
40 1 }
41
42 //*****************************************************************************************
43 // Buffer Read from SL811H
44 // addr = buffer start address
45 // s = return buffer address where data are to be save/read
46 // c = buffer data length
47 //*****************************************************************************************
48 void SL811BufRead( BYTE addr, BYTE *s, BYTE c)
49 {
50 1 SL811H_ADDR = addr;
51 1 while (c--)
52 1 *s++ = SL811H_DATA;
53 1 }
54
55 //*****************************************************************************************
C51 COMPILER V7.20 SUBP 07/05/2004 23:23:35 PAGE 2
56 // Buffer Write to SL811H
57 // addr = buffer start address
58 // s = buffer address where data are to be written
59 // c = buffer data length
60 //*****************************************************************************************
61 void SL811BufWrite( BYTE addr, BYTE *s, BYTE c)
62 {// BYTE i;
63 1 SL811H_ADDR = addr;
64 1 while (c--)
65 1 SL811H_DATA = *s++;
66 1
67 1 // for(i=0;i<c;i++)
68 1 // SL811H_DATA = *(s+i);
69 1 }
70
71 //*****************************************************************************************
72 // Swap high and low BYTE
73 //*****************************************************************************************
74 WORD WordSwap(WORD input)
75 {
76 1 return(((input&0x00FF)<<8)|((input&0xFF00)>>8));
77 1 }
78
79 //*****************************************************************************************
80 // Audio Control Key Scanning Routine
81 //*****************************************************************************************
82 void audio_key_scan(void)
83 {
84 1 // Audio_Keys = (~P1) & AUDIO_KEYS; // Mute/Vol Up/Vol Down Keys
85 1 // if(Audio_Keys != Prev_Audio_Keys) // Detect for any changes
86 1
87 1 // {
88 1 key_temp=P1;
89 1 if((key_temp&0xff)!=0xff)
90 1 { Delay();
91 2 Delay();
92 2 key_temp=P1;
93 2 if((key_temp&0xff)!=0xff)
94 2 { Delay();
95 3 Delay();
96 3 if((~key_temp)>=0x10)
97 3 key2=~key_temp;
98 3 else
99 3 key1=~key_temp;
100 3 flag_ep1=1;
101 3
102 3
103 3 SL811Write(EP1A_Slave_Buf,key1); // send bitmap back to host
104 3 SL811Write(EP1A_Slave_Buf+1,key2);
105 3 // SL811BufWrite(EP1A_Slave_Buf,(BYTE*)key,0x31);
106 3 EP1A_IN_Arm(EP1A_Slave_Buf,2,ep1_toggle); // Arm Ep1 and toggle data
107 3 key1=key2=0;
108 3 }
109 2 }
110 1 else
111 1 EP1A_IN_Arm(0,0,ep1_toggle);
112 1 // SL811Write(EP1AControl,SEND_STALL); //send nak
113 1 //}
114 1 //Prev_Audio_Keys = Audio_Keys; // update previous key states
115 1 }
116
117 //*****************************************************************************************
C51 COMPILER V7.20 SUBP 07/05/2004 23:23:35 PAGE 3
118 // Internet Control Key Scanning Routine
119 //*****************************************************************************************
120 /*void internet_key_scan(void)
121 {
122 return;
123 }
124 */
125 //*****************************************************************************************
126 // EP1 interrupt service routine
127 //*****************************************************************************************
128 void ep1_isr(void)
129 //int ep1_isr(void)
130 {
131 1 SL811Write(IntStatus,EP1_DONE); // clear EP1 interrupt
132 1 // if(SL811Read(EP1AStatus) & EP_ACK) // check for ACK bit set
133 1 ep1_toggle = (((SL811Read(EP1AControl)&DATAX)==0) ? 1:0);
134 1 // else // toggle DATA sequence
135 1 audio_key_scan();
136 1
137 1 // return;
138 1 }
139
140 //*****************************************************************************************
141 // EP1's IN Token Arming (using Set A)
142 //*****************************************************************************************
143 void EP1A_IN_Arm( BYTE buf_adr, BYTE len, BYTE seq)
144 {
145 1 SL811Write(EP1AAddress,buf_adr); // ep1 address buffer start adress
146 1 SL811Write(EP1AXferLen,len); // max length of transfer allowed
147 1 if(seq)
148 1 SL811Write(EP1AControl,DATA1_IN); // armed to transmit to host, DATA1
149 1 else
150 1 SL811Write(EP1AControl,DATA0_IN); // armed to transmit to host, DATA0
151 1 }
152
153 //*****************************************************************************************
154 // SOF interrupt service routine (act as 1ms timer)
155 //*****************************************************************************************
156 //int sof_isr(void)
157 /*int sof_isr(void)
158 {
159 SL811Write(IntStatus,SOF_DONE); // clear SOF interrupt
160 sof_cnt++; // track msec timing
161
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -