Grüß Euch!
Ich habe ein XC166 Easy Kit geschenkt bekommen, auf dem sitzt ein
XC164CM. Ich möchte nun mit Keil programmieren, und ich habs schonmal
geschafft die LEDs die an P1L (= Port 1 low byte) hängen ein- und
auszuschalten.
Mein nächstes Ziel ist ein Hello World über die Serielle Schnittstelle
also ASC0 zu übertragen. Nur leider tut das folgende Programm genau das
nicht.
1 | #include "main.h"
|
2 |
|
3 | void ASC0_SendData(char zeichen)
|
4 | {
|
5 | ASC0_TBIC_IR = 0; // reset transmit buffer interrupt request
|
6 | ASC0_TBUF = zeichen; // load transmit buffer register
|
7 | while (ASC0_TIC_IR==0); // wait for transmission finish
|
8 | } // End of function ASC0_vSendData
|
9 |
|
10 | void main(void)
|
11 | {
|
12 | unsigned long i;
|
13 | DP1L |= 0x00FF;
|
14 | P1L |= 0x00FF;
|
15 |
|
16 | ASC0_CON = 0x8811;
|
17 | ASC0_BG = 0x0004; //set baud rate
|
18 | ASC0_FDV = 0x0076; //to 115200bps
|
19 | ASC0_TIC = 0x015F; // ILVL:7, GLVL:7
|
20 | PSW_IEN = 1; // global interrupt enable
|
21 |
|
22 | //while(1){;};
|
23 | while(1){
|
24 | ASC0_SendData('H');
|
25 | ASC0_SendData('e');
|
26 | ASC0_SendData('l');
|
27 | ASC0_SendData('l');
|
28 | ASC0_SendData('o');
|
29 | // Warteschleife 0,5s
|
30 | for(i=0;i<500000;i++)
|
31 | {
|
32 | ;
|
33 | }
|
34 | //Port 1 invertieren
|
35 | P1L = 0x00FF & ~P1L;
|
36 | }
|
37 | }
|
Er invertiert mir zwar brav den Port 1, aber wenn ich an der seriellen
lausche kommt nix.
Hardwaremäßig funktioniert alles, ich habe schon ein fertiges
HelloWorld.hex ausprobiert, da hab ich auch alles im MTTTY (=ein
Terminalprogramm) empfangen.
Hat vielleicht jemand eine zündende Idee, was ich übersehen haben
könnte?
Beste Grüße,
Michael