Hallo wer kennt sich mit der SSC Schnittstelle am Port P3(PINs 8,9,13)aus?? wollte an Port P3.8(MRST) was Empfangen und an Port P3.9 was Senden, das ganze mit hife des schieberegisters und einen Schiebetakt. hab versucht den Port P3.8 auf high zu setzen damit er was sendet, und in den sende-puffer hab ich den port P3_10 zugewiesen. Jetzt Sollte normalerweise der schiebe.Reg anspringen und die Bits bei High_CLK durchschieben. Einmal vom Sende-Puffer zum Port3.9 dann an P7_1 und einmal vom P3.8 in den Empfangs-puffer bzw weiter an P7_3. Mein prob. ist das bei der Simulation Das Empfangs-Register(SSCRB) bzw das Sende-Register(SSCTB) keine Werte enthält und sich an port P7 zwar einmal was gesetzt wird aber nicht ständig in einer bestimmten baudrate gesendet wird. Meine vermutung leigt das am SSCCON Register?? kann das auch mal einer Simulieren?? #include <REG167.H> /* Register Set of 80C167 controller */ #include <stdio.h> /* Standard I/O functions */ //test SSC: Port P7 -> MTSR0--0 MRST-> Port P2 // SSC sbit SSC_D3_13 = DP3^13; //SCLK p3.13 Richtung sbit SSCP3_13 = P3^13; //SCLK Daten sbit SSC_D3_9 = DP3^9; //MTSR p3.9 Richtung AUSGANG sbit SSCP3_9 = P3^9; //MTSR Daten sbit SSC_D3_8 = DP3^8; //MRST p3.8 EINGANG sbit SSCP3_8 = P3^8; //PC-->RS232--> uC sbit RS_D3_11 = DP3^11; //P3^11 Richtung sbit RSP3_11 = P3^11; // Daten sbit RS_D3_10 = DP3^10; // P3^10 Richtung sbit RSP3_10 = P3^10; // Daten //uC-->16Bit-->datenaufz sbit Bit0 =P7^0; sbit Bit1 =P7^1; sbit Bit2 =P7^2; sbit Bit3 =P7^3; sbit Bit4 =P7^4; sbit Bit5 =P7^5; sbit Bit6 =P7^6; sbit Bit7 =P7^7; sbit Bit8 =P8^0; sbit Bit9 =P8^1; sbit Bit10 =P8^2; sbit Bit11 =P8^3; sbit Bit12 =P8^4; sbit Bit13 =P8^5; sbit Bit14 =P8^6; sbit Bit15 =P8^7; /*********************************************************************** *******/ /* main program */ /*********************************************************************** *******/ void wait (void) { /* wait function */ ; void main (void) { DP2= 0xffff; // port P2 ist Ausgang //SSC SSC_D3_13= 1; // SCLK ist Ausgang SSCP3_13=1; // Leitung High SSC_D3_9=1; // MTSR ist Ausgang SSCP3_9=1; // Leitung High SSC_D3_8=0; // MTSR ist Eingang Leitung x SSCP3_8=0; SSCBR=65535; // bitzeit 3.27ms bei 40MHz SSCCON = 0xc001; // 1 1 0000000 0 0 0 0111 // Freigabe Master - keine Fehlerprüfung - Taktphasen LSB 8Bits //PC-->RS232--> uC /* init serial0 port: */ RS_D3_11 = 1; // P3^11 Richtung Ausgang RSP3_11 = 1; // Daten Ausgang RS_D3_10 = 0; // P3^10 Richtung Eingang RSP3_10 = 0; // Daten Eingang /* operation. ( RXD input) */ S0TIC = 0x80; /* set transmit(übertrage) interrupt flag */ S0RIC = 0x00; /* delete receive(empfange) interrupt flag*/ S0BG = 0x80; /* set baudrate to 19200 baud*/ S0CON = 0x8011; /* set serial mode */ //uC <--> RS485 <--> contr. ???? port ???? // 16Bit DP7 = 0xff; // port P7 ist Ausgang P7 = 0xff; // ist auf High gesetz DP8 = 0xff; // port P8 ist Ausgang P8 = 0xff; // ist auf High gesetz while (1) { //PC(RS232) P3.10/11-->SSC/I P3.8eing/9ausg/13ausg SSCP3_8=1; // bit high setzen, bit soll anschliesend ins SSCRB wandern Bit1=SSCRB; // und bit ausgeben, p7_1 RSP3_10 = 1; // bit setzen, SSCTB = RSP3_10; // bit wird ins SSCTB geschrieben Bit3 = SSCP3_8; // bit wird ausgegeben, in P7_3 } }
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.