Forum: Mikrocontroller und Digitale Elektronik c167cs. Simulation


von Alfred (Gast)


Angehängte Dateien:

Lesenswert?

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
Noch kein Account? Hier anmelden.