void init_timer2 (void) { // Teiler = 1024, Betriebsart(timer ohne Gate), Laufkontrolle(aus), Zähllichtung(up), Mode Zählrichtung(TxUD abhängig) T2CON = 0x0007; // 0x000x; --> x = 7 = 1,68s, 6 = 840ms..., 3 = 1,6us T2 = 0x0000; T2IC = 0x0045; } // anfrage der 32bit Daten void AbfragePos(void) interrupt 0x22 { putchar('A'); sternpos = SternPos; // SternPos[] ={"*1,$13"} timer2Pos = an; trigger = 3; Transmitter_Holding_Register = *sternpos; // interrupt serial2isr wird ausgelöst 0x18 *sternpos++; IEN = 1; } .....// void Write_Ser_2 (void) { //unsigned char Bit16WinkelDatenAzi[4]; //unsigned char Bit16WinkelDatenEV[4]; unsigned char ausgabe = '0', hilfsTrVar = '0'; IEN = 0; if (trigger == 2) // Antwort Kitty { IEN =1; trigger = 0; ContoPCpointer = ContoPCBuffer; ende =0; while(ende == 0) { ContoPCpointer++; // suchen in ContoPCBuffer, bis Azi-stelle gefunden if(*ContoPCpointer=='A') // Azi gefunden { wait_us(1000); P7 = 0x00; P8 = 0x00; PAzi = 0; // Auswahl des Latches für 8bit Azi PEL = 0; ContoPCpointer++; ausgabe = sHexTo16Bit[*ContoPCpointer]; // ausgabe = 0000 1010 ausgabe <<= 4; ausgabe &= 0xF0; // bsp. 1010 0000 ContoPCpointer++; hilfsTrVar = sHexTo16Bit[*ContoPCpointer]; // hilfstrvar = 0000 1100 ausgabe |= hilfsTrVar; // ausgabeP7 |= hilfsTrVar; --> 1010 0000 | 0000 1100 = 1010 1100// Azi ausgabe Voll P7 = ausgabe; // AziPos Ausgabe an P7 PAzi = 1; ausgabe = 0x00; hilfsTrVar = 0x00; //PAzi = 0; ContoPCpointer++; ausgabe = sHexTo16Bit[*ContoPCpointer]; // ausgabe = 0000 1010 ausgabe <<= 4; ausgabe &= 0xF0; // bsp. 1010 0000 ContoPCpointer++; hilfsTrVar = sHexTo16Bit[*ContoPCpointer]; // hilfstrvar = 0000 1100 ausgabe |= hilfsTrVar; // ausgabeP7 |= hilfsTrVar; --> 1010 0000 | 0000 1100 = 1010 1100// Azi ausgabe Voll P8 = ausgabe; // AziPos Ausgabe an P7 //PAzi = 1; ausgabe = 0x00; hilfsTrVar = 0x00; PAzi = 0; ContoPCpointer++; ContoPCpointer++; ContoPCpointer++; ausgabe = sHexTo16Bit[*ContoPCpointer]; // ausgabe = 0000 1010 ausgabe <<= 4; ausgabe &= 0xF0; // bsp. 1010 0000 ContoPCpointer++; hilfsTrVar = sHexTo16Bit[*ContoPCpointer]; // hilfstrvar = 0000 1100 ausgabe |= hilfsTrVar; // ausgabeP7 |= hilfsTrVar; --> 1010 0000 | 0000 1100 = 1010 1100// Azi ausgabe Voll P7 = ausgabe; // AziPos Ausgabe an P7 PEL = 1; ausgabe = 0x00; hilfsTrVar = 0x00; //PEL = 0; ContoPCpointer++; ausgabe = sHexTo16Bit[*ContoPCpointer]; // ausgabe = 0000 1010 ausgabe <<= 4; ausgabe &= 0xF0; // bsp. 1010 0000 ContoPCpointer++; hilfsTrVar = sHexTo16Bit[*ContoPCpointer]; // hilfstrvar = 0000 1100 ausgabe |= hilfsTrVar; // ausgabeP7 |= hilfsTrVar; --> 1010 0000 | 0000 1100 = 1010 1100// Azi ausgabe Voll P8 = ausgabe; // AziPos Ausgabe an P7 //PEL = 1; PEL = 0; ausgabe = 0x00; // Variablen zurücksetzen hilfsTrVar = 0x00; ContoPCpointer = ContoPCBuffer; ende =1; putchar('b'); } } }