www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik c167cs. Simulation


Autor: Alfred (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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


  }

}

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.