📄 myhpitest.lst
字号:
C51 COMPILER V7.10 MYHPITEST 11/20/2005 16:36:36 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE MYHPITEST
OBJECT MODULE PLACED IN MYHPITEST.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE MYHPITEST.C BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <hpitest.h>
2 void C51_Init(void);
3 void HPI_Init(void);
4 void HPIC_Write(void);
5 void HPID_Write(void);
6 void HPID_Read(void);
7
8 void HPIDN_Write(void);
9 void HPIDN_Read(void);
10
11 void HPIA_Write(void);
12 void delay(unsigned int x);
13
14 void SENDCHAR(unsigned char x);
15 void SENDVAL(unsigned char x);
16 void SENDHEXDATA(unsigned char x);
17 unsigned char HEXTOASCII(unsigned char x);
18
19
20 unsigned char i=0,GetData[2];
21 bit Flag_Hint;
22 unsigned char flag=0;
23 unsigned char senddata[20];
24 unsigned char readdatah[10];
25 unsigned char readdatal[10];
26
27 unsigned char data tt1=0x12;
28 unsigned char data tt2=0x00;
29
30
31 /*
32 void uart00_int () interrupt 4 //中断方式接收数据。
33 {
34 if(RI==1)
35 {
36
37 flag=SBUF;
38 RI=0;
39 TI=0;
40 }
41
42 if(TI==0) //将接收的数据发送到串口。
43 {
44 TI=0;
45 SBUF=flag; //Transmission is initiated by writing to SBUF.
46 while(TI==0); //wait for the data sending.When the TI=1 indicate finishing send.
47
48 }
49
50 }
51 */
52 //==============================================================================
53 void main(void)
54 {
55 1 P0=0;
C51 COMPILER V7.10 MYHPITEST 11/20/2005 16:36:36 PAGE 2
56 1 P1=0xff;
57 1 for(i=0;i<20;i++)senddata[i]=i;
58 1 flag=0;
59 1
60 1 //-----------------------------------
61 1 //initialize
62 1 C51_Init();
63 1 HPI_Init();
64 1
65 1 //enable all the interrupt
66 1 EA=1;
67 1 GetData[0]=0x07; //dsp 存储数据地址 0x1208
68 1 GetData[1]=0x12;
69 1
70 1
71 1 /*
72 1 //-------------------------------------UART TEST2--------------------------------------
73 1 while (1)
74 1 {
75 1 unsigned char i,y;
76 1
77 1 for(i=0;i<256;i++)
78 1 {
79 1
80 1 SENDVAL(i);
81 1 SENDCHAR(' ');
82 1 if(i==255)
83 1 {
84 1 SENDCHAR('_');
85 1 SENDCHAR('E');
86 1 SENDCHAR('N');
87 1 SENDCHAR('D');
88 1 SENDCHAR('_');
89 1 }
90 1
91 1
92 1 }
93 1 }
94 1
95 1 */
96 1 //-------------------------------------------------------------------------------
97 1
98 1 while(1) //only for test
99 1 {
100 2 delay(500);
101 2 //1 写数据到DSP中去。。
102 2 GetData[0]=0x07; //dsp 存储数据地址 0x1208 写前会预加1
103 2 GetData[1]=0x12;
104 2 HPIA_Write();
105 2 for(i=0;i<0xff;i++)
106 2 {
107 3 GetData[1]=i+1; //高字节
108 3 GetData[0]=i; //低字节
109 3 HPID_Write();
110 3 }
111 2
112 2 //2 从DSP中读数据出来。
113 2 GetData[0]=0x08; //dsp 存储数据地址 0x1208 读后加1
114 2 GetData[1]=0x12;
115 2 HPIA_Write();
116 2 for(i=0;i<10;i++)
117 2 {
C51 COMPILER V7.10 MYHPITEST 11/20/2005 16:36:36 PAGE 3
118 3
119 3 HPID_Read();
120 3 readdatah[i]=GetData[1]; //1高字节
121 3 readdatal[i]=GetData[0]; //0高字节
122 3 SENDVAL(GetData[1]);
123 3 SENDVAL(GetData[0]);
124 3 SENDCHAR(' ');
125 3
126 3
127 3 }
128 2
129 2 //3 写数据到DSP中去。
130 2 GetData[0]=0x7f; //dsp 存储数据地址 0x1280
131 2 GetData[1]=0x12;
132 2 HPIA_Write();
133 2
134 2 for(i=0;i<10;i++)
135 2 {
136 3 GetData[1]=readdatah[i]; //高字节
137 3 GetData[0]=readdatal[i]; //低字节
138 3 HPID_Write();
139 3 }
140 2
141 2
142 2
143 2 }
144 1
145 1 while(1)
146 1 {
147 2 if(Flag_Hint==1)
148 2 {
149 3 unsigned int i;
150 3 int l_data[16];
151 3 GetData[0]=0x08; //dsp 存储数据地址 0x1208
152 3 GetData[1]=0x12;
153 3 HPIA_Write();
154 3 for(i=0;i<0x8;i++) //将DSP中的数据读到C51的l_data 中。
155 3 {
156 4 HPID_Read();
157 4 l_data[2*i+1]=GetData[1]; //高字节
158 4 l_data[2*i]=GetData[0]; //低字节
159 4
160 4 TI=0;
161 4 SBUF=l_data[2*i+1]; //Transmission is initiated by writing to SBUF.
162 4 while(TI==0); //wait for the data sending.When the TI=1 indicate finishing send.
163 4 TI=0;
164 4 SBUF=55; //Transmission is initiated by writing to SBUF.
165 4 while(TI==0); //wait for the data sending.When the TI=1 indicate finishing send.
166 4 }
167 3
168 3 HPIA_Write();
169 3 for(i=0;i<0x8;i++) //将51中的数据l_data 写到DSP中去。
170 3 {
171 4 GetData[1]=l_data[2*i+1];
172 4 GetData[0]=l_data[2*i];
173 4 HPID_Write();
174 4 }
175 3
176 3 //clear HPI interrupt and trigger DSPINT interrupt
177 3 GetData[0]=0x0c;
178 3 GetData[1]=0x0c;
179 3 HPIC_Write();
C51 COMPILER V7.10 MYHPITEST 11/20/2005 16:36:36 PAGE 4
180 3 //5410为HPI-8 ,正面为主机写HPI
181 3 //-----------------------------------------------------------------------
182 3 //HPIC: | 15-12 | 11 | 10 | 9 | 8 |7 -4 | 3 | 2 | 1 | 0 |
183 3 //----------------------------------------------------------------------|
184 3 // | X | HINT | 0 | SMOD| BOB | X | HINT| 0 | SMOD| BOB|
185 3 // 1 1 0 0 0 1 1 0 0 0 =0x0c0c
186 3 //======================================= 5410===================================================
187 3
188 3 //--------------------------------5402 OR 5410--主机C51 写 HIPC---------------------------------
189 3 //HPIC: | 15-13 | 12 | 11 | 10 | 9 | 8 |7 -5 | 4 | 3 | 2 | 1 | 0
190 3 //---------------------------------------------------------|-------------------------------
191 3 // | X | XHPIA | HINT | DSPINT| X | BOB | X | XHPIA| HINT | DSPINT| X |BOB|
192 3 // 0 0 1 1 0 0 | 0 0 1 1 0 0 =0C0C
193 3 //BOB=0 第一个字节为高位(主机读/写);
194 3 //主机写1到 DSPINT,则DSP产生一个中断 ,写0没有效果
195 3 //主机往DSP里的 HINT 写1清除中断,此HINT只能由DSP置1,由主机清0(也是写1)
196 3 // XHPIA=0时,主机写HPIA[15:0]
197 3 //HPIENA 5410没有这位,
198 3
199 3
200 3 //reset the Flag
201 3 Flag_Hint=0;
202 3
203 3
204 3 }
205 2 }
206 1
207 1 } //main() end
208
209 void C51_Init(void)
210 {
211 1
212 1 //-------------------------------------------------------------------------------
213 1 PLLCON=0x50; //12.5892M
214 1 //Configure UART
215 1 T3CON = 0x86; //9600 Baud rate
216 1 T3FD = 0x12;
217 1 SCON = 0x52; //0101 0000 : old=0x52
218 1 // SCON = 0x90;
219 1 //----------------------------------------------------------------------------------------------
220 1 // 7 6 5 4 3 2 1
-0
221 1 // sm0sm1=01 | sm2=0 (方式2、3) | ren=1 | TB8=0 |RB8=0 |TI=1 |RI
222 1 // 方式1;|接收到字符,TI=1,没有停止位;|允许串行接收|为发送的第9位数据|接收到的第9位| 发送中断标志
-|接收的中断标志
223 1 EA = 1; //Enable Global Interrupts
224 1 ES=1; //open uart Interrupt
225 1 //--------------------------------------------------------------------------------------
226 1 //enable int1 and configure the interrupt type
227 1 IT0=0; //low level trigger
228 1 EX1=1; //Enable int1
229 1 EX0=1; //Enable int0
230 1 Flag_Hint=0; //initialize the flags
231 1
232 1 }
233
234
235
236 void HPI_Init(void)
237 {
238 1 //???? HOE=0; //to enable the boot
239 1 //to do:initialize the HPIC
C51 COMPILER V7.10 MYHPITEST 11/20/2005 16:36:36 PAGE 5
240 1 GetData[1]=0x08;
241 1 GetData[0]=0x08;
242 1 HPIC_Write(); //clear the initial HPIC interrupt flag and set BOB
243 1 //------------------------------------54X--------------------------------
244 1 //HPIC: | 15-12 | 11 | 10 | 9 | 8 |7 -4 | 3 | 2 | 1 | 0 |
245 1 //----------------------------------------------------------------------|---
246 1 // | X | HINT | 0 | SMOD| BOB | X | HINT| DSPINT | X | BOB|
247 1 // 0 1 0 0 0 0 1 0 0 0 =0x0808
248 1 //主机往DSP里的HINT写1清除中断,此HINT只能由DSP置1,由主机清0
249 1 //BOB=0第一个字节为高位(主机读/写);SMOD=0共享SAM便能(主机读)
250 1
251 1 //=============================================================
252 1
253 1 //--------------------------------5402 OR 5410--主机C51 写 HIPC---------------------------------
254 1 //HPIC: | 15-13 | 12 | 11 | 10 | 9 | 8 |7 -5 | 4 | 3 | 2 | 1 | 0
255 1 //---------------------------------------------------------|-------------------------------
256 1 // | X | XHPIA | HINT | DSPINT| X | BOB | X | XHPIA| HINT | DSPINT| X |BOB|
257 1 // 0 0 1 0 0 0 | 0 0 1 0 0 0 =0808
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -