// Programm arbeitet ohne externen Sender und Empfänger, die aus dem Ausgang MTSR(P3.9) //herausgeschobenen seriellen daten werden über eine Brücke dem eingang MRST (P3.8) zugeführ // P7 liest die daten. Empfangenden daten erscheinen auf port P2 ( P2_0 ist eine LED drann die blinken soll) #include /* Register Set of 80C167 controller */ #include /* 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 <--> RS485 <--> contr. //sbit RS_D3_11 = DP3^11; // P3^11 Richtung //sbit RSP3_11 = P3^11; // Daten UART gucken???? //sbit RS_D3_10 = DP3^10; // P3^10 Richtung //sbit RSP3_10 = P3^10; // Daten //uC-->16Bit-->Kobra 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; sbit bit2_2 =P2^2; /******************************************************************************/ /* main program */ /******************************************************************************/ void wait (void) { /* wait function */ ; /* only to delay for LED flashes */ } 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 // Freigabe Master - keine Fehlerprüfung - Taktphasen LSB 8Bits SSCCON = 0xc001; // 1 1 0000000 0 0 0 0111 Parameter ssc control noch mal gucken wie das mit 0 und c // zuerst 0 dann c warscheinlich //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 wandertn 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 } }