Nassi-Scheidmann-Diagramm by YQG6f0

VIEWS: 8 PAGES: 40

									     C- Zusammenfassung
            und
Microcomputerprogrammierung




            V1.1
Inhaltsverzeichniss
Nassi-Scheidmann-Diagramm ................................................................................................... 4
Funktions oder Ablaufplan ......................................................................................................... 5
Ersatzdarstellungen für wichtige Zeichen der Tastatur .............................................................. 5
ASCII Steuerzeichensatz ............................................................................................................ 6
ASCII Zeichensatz mit 256 Zeichen .......................................................................................... 6
Datentypen ................................................................................................................................. 7
Print Caracters ............................................................................................................................ 8
Zahlensysteme ............................................................................................................................ 9
Aufzählungskonstanten ............................................................................................................ 10
Variablen .................................................................................................................................. 11
   Interne Variablen: ................................................................................................................. 11
   Externe Variablen ................................................................................................................. 11
Vektoren, Feldvariablen, Arrays .............................................................................................. 12
   Übergabe eines Arrays an eine Funktion ............................................................................. 12
Zeiger ....................................................................................................................................... 12
   Adressoperator ..................................................................................................................... 12
   Dereferenzierung .................................................................................................................. 13
Maskenprogrammieren ............................................................................................................. 13
Operatoren ................................................................................................................................ 14
Kontrollstrukturen .................................................................................................................... 15
   If....else If…else ................................................................................................................... 15
   Switch ... case ....................................................................................................................... 15
Iteration .................................................................................................................................... 16
   While .................................................................................................................................... 16
   For ........................................................................................................................................ 16
   do while ................................................................................................................................ 17
Funktionen ................................................................................................................................ 17
   Aufruf von Funktionen ......................................................................................................... 17
   Rückgabewert in Funktionen ............................................................................................... 17
Pinbelegung und Definition des C515C ................................................................................... 18
Speicheraufbau und Organisation des C515C .......................................................................... 19
Special Funktion Register (SFR) desC515C)........................................................................... 20
Interrupt .................................................................................................................................... 23
   Interrupt Adressen ................................................................................................................ 23
   Interrupt- Paare/ -Triplets ..................................................................................................... 24
   Interrupt Priorität .................................................................................................................. 24
   Interrupt Quellen .................................................................................................................. 25
      Interne InterruptQuellen ................................................................................................... 25
      Externe Interrupt Quellen ................................................................................................. 26
A/D Wandler ............................................................................................................................ 28
   Interne Struktur des A/D Wandlers ...................................................................................... 28
   Register für den A/D Wandler.............................................................................................. 29
Timer/Counter .......................................................................................................................... 30
   Timer/Counter1,2 ................................................................................................................. 30
   TMOD Byte des Timer/Counter 1 und 2 ............................................................................. 31
      Intern gesteuerter Zeitgeber (timer mode) ....................................................................... 31
                                                                        2
     Extern freigegebener Zeitgeber (gated timer) .................................................................. 31
     Extern getakteter Zähler (event counter) .......................................................................... 32
     Extern getakteter, extern freigegebener Zähler (gated event counter) ............................. 32
Labor Platinen Port Plan .......................................................................................................... 33
Programmierbeispiele ............................................................................................................... 34
  Programmierter Reset ........................................................................................................... 34
  Unterprogramm zum Tastenentprellen: ............................................................................... 34
  Unterprogramm variable Zeitschleife: ................................................................................. 34
  Prioritätseinstellungen über IP0 und IP1 .............................................................................. 34
  A/D-Wandler einstellen ........................................................................................................ 35
  Kanalauswahl des A/D Wandlers ......................................................................................... 35
  Aus 8 + 2Bit A/D Wandelwert eine 10 Bit Zahl erstellen .................................................. 36
Timer Berechnung .................................................................................................................... 36
Checkliste für C-Programmierung ........................................................................................... 37
  1 Einbinden .......................................................................................................................... 37
  2 Ports, Bits, Konstanten ...................................................................................................... 37
  3 Deklaration: Funktionen, ISR ........................................................................................... 37
  4 Hauptprogramm ................................................................................................................ 37
  4.1 Initialisierung ................................................................................................................. 37
  4.2 Funktionen ...................................................................................................................... 37
  5 Unterprogramme ............................................................................................................... 37
  6 ISR ..................................................................................................................................... 37
Begriff-Index ............................................................................................................................ 38
Quellnachweis .......................................................................................................................... 40




                                                                       3
Nassi-Scheidmann-Diagramm




Tabelle 1 : Nassi-Scheidmann-Diagramm [2]
Funktions oder Ablaufplan




Tabelle 2 : Funktions oder Ablaufplan [2]


Ersatzdarstellungen für wichtige Zeichen der Tastatur




Tabelle 3 : Ersatzdarstellung für wichtige Zeichen [1]


                                                     5
ASCII Steuerzeichensatz




Tabelle 4 : ASCII Steuersatz [1]


ASCII Zeichensatz mit 256 Zeichen




Tabelle 5 : ASCII Zeichensatz mit 256 Zeichen [1]

                                                    6
Datentypen




Tabelle 6-a : Datentypen [1]


Delphi        Size/Values                                 C++ implementation Implementation

ShortInt      8-bit integer                               signed char        typedef
SmallInt      16-bit integer                              short              typedef
LongInt       32-bit integer                              int                typedef
Byte          8-bit unsigned integer                      unsigned char      typedef
Word          16-bit unsigned integer                     unsigned short     typedef
Integer       32-bit integer                              int                typedef
Cardinal      32-bit unsigned integer                     unsigned int       typedef
Boolean       true/false                                  bool               typedef
ByteBool      true/false or 8-bit unsigned integer        unsigned char      typedef
WordBool      true/false or 16-bit unsigned integer       unsigned short     typedef

LongBool      true/false or 32-bit unsigned integer       BOOL (WinAPI)      typedef
AnsiChar      8-bit unsigned character                    char               typedef
WideChar      word-sized Unicode character                wchar_t            typedef
Char          8-bit unsigned character                    char               typedef
AnsiString    Delphi AnsiString                           AnsiString         class
String[n]     old style Delphi string, n = 1..255 bytes   SmallString<n>     template class
ShortString   old style Delphi string, 255 bytes          SmallString<255>   typedef
String        Delphi AnsiString                           AnsiString         typedef

Single        32-bit floating point number                float              typedef
Double        64-bit floating point number                double             typedef
Extended      80-bit floating point number                long double        typedef
Real          32-bit floating point number                double             typedef
Pointer       32-bit generic pointer                      void *             typedef
PChar         32-bit pointer to characters                unsigned char *    typedef
PAnsiChar     32-bit pointer to ANSI characters           unsigned char *    typedef
Comp          64-bit floating point number                Comp               class
OleVariant    OLE variant value                           OleVariant         class
Tabelle 6-b : Datentypen [4]

                                                      7
Print Caracters

Type Char Expected Input        Format of output


Numerics


d            Integer            signed decimal integer
i            Integer            signed decimal integer
o            Integer            unsigned octal integer
u            Integer            unsigned decimal integer
x            Integer            unsigned hexadecimal int (with a, b, c, d, e, f)
X            Integer            unsigned hexadecimal int (with A, B, C, D, E, F)
f            Floating point     signed value of the form [-]dddd.dddd.


e            Floating point     signed value of the form [-]d.dddd or e[+/-]ddd
                                signed value in either e or f form, based on given
                                value and precision. Trailing zeros and the decimal
g            Floating point     point are printed if necessary.
E            Floating point     Same as e; with E for exponent.
G            Floating point     Same as g; with E for exponent if e format used


Characters
c            Character          Single character
                                Prints characters until a null-terminator is pressed or
s            String pointer     precision is reached
%            None               Prints the % character


Pointers
                                Stores (in the location pointed to by the input argument)
n            Pointer to int     a count of the chars written so far.
                                Prints the input argument as a pointer; format depends
                                on which memory model was used. It will be either XXXX:YYYY
p            Pointer            or YYYY (offset only).
Tabelle 7 : Print Caracter[4]




                                                8
Zahlensysteme
Dezimal     [aaa]
Binär       [0baaa] oder [0Baaa]
Hexadezimal [0xaaa] oder [0Xaaa]

Beispiel:

dezimal     17
binär       0b10001
hexadezimal 0x11


Dez   Hex   Bin        Dez   Hex   Bin        Dez   Hex   Bin        Dez   Hex   Bin        Dez   Hex   Bin
0     0     00000000   10    A     00001010   20    14    00010100   30    1E    00011110   40    28    00101000
1     1     00000001   11    B     00001011   21    15    00010101   31    1F    00011111   41    29    00101001
2     2     00000010   12    C     00001100   22    16    00010110   32    20    00100000   42    2A    00101010
3     3     00000011   13    D     00001101   23    17    00010111   33    21    00100001   43    2B    00101011
4     4     00000100   14    E     00001110   24    18    00011000   34    22    00100010   44    2C    00101100
5     5     00000101   15    F     00001111   25    19    00011001   35    23    00100011   45    2D    00101101
6     6     00000110   16    10    00010000   26    1A    00011010   36    24    00100100   46    2E    00101110
7     7     00000111   17    11    00010001   27    1B    00011011   37    25    00100101   47    2F    00101111
8     8     00001000   18    12    00010010   28    1C    00011100   38    26    00100110   48    30    00110000
9     9     00001001   19    13    00010011   29    1D    00011101   39    27    00100111   49    31    00110001



Dez   Hex   Bin        Dez   Hex   Bin        Dez   Hex   Bin        Dez   Hex   Bin        Dez   Hex   Bin
50    32    00110010   60    3C    00111100   70    46    01000110   80    50    01010000   90    5A    01011010
51    33    00110011   61    3D    00111101   71    47    01000111   81    51    01010001   91    5B    01011011
52    34    00110100   62    3E    00111110   72    48    01001000   82    52    01010010   92    5C    01011100
53    35    00110101   63    3F    00111111   73    49    01001001   83    53    01010011   93    5D    01011101
54    36    00110110   64    40    01000000   74    4A    01001010   84    54    01010100   94    5E    01011110
55    37    00110111   65    41    01000001   75    4B    01001011   85    55    01010101   95    5F    01011111
56    38    00111000   66    42    01000010   76    4C    01001100   86    56    01010110   96    60    01100000
57    39    00111001   67    43    01000011   77    4D    01001101   87    57    01010111   97    61    01100001
58    3A    00111010   68    44    01000100   78    4E    01001110   88    58    01011000   98    62    01100010
59    3B    00111011   69    45    01000101   79    4F    01001111   89    59    01011001   99    63    01100011



Dez   Hex   Bin        Dez   Hex   Bin        Dez   Hex   Bin        Dez   Hex   Bin        Dez   Hex   Bin
100   64    01100100   110   6E    01101110   120   78    01111000   130   82    10000010   140   8C    10001100
101   65    01100101   111   6F    01101111   121   79    01111001   131   83    10000011   141   8D    10001101
102   66    01100110   112   70    01110000   122   7A    01111010   132   84    10000100   142   8E    10001110
103   67    01100111   113   71    01110001   123   7B    01111011   133   85    10000101   143   8F    10001111
104   68    01101000   114   72    01110010   124   7C    01111100   134   86    10000110   144   90    10010000
105   69    01101001   115   73    01110011   125   7D    01111101   135   87    10000111   145   91    10010001
106   6A    01101010   116   74    01110100   126   7E    01111110   136   88    10001000   146   92    10010010
107   6B    01101011   117   75    01110101   127   7F    01111111   137   89    10001001   147   93    10010011
108   6C    01101100   118   76    01110110   128   80    10000000   138   8A    10001010   148   94    10010100
109   6D    01101101   119   77    01110111   129   81    10000001   139   8B    10001011   149   95    10010101




                                                    9
Dez   Hex   Bin        Dez   Hex   Bin        Dez   Hex   Bin        Dez   Hex   Bin        Dez   Hex   Bin
150   96    10010110   160   A0    10100000   170   AA    10101010   180   B4    10110100   190   BE    10111110
151   97    10010111   161   A1    10100001   171   AB    10101011   181   B5    10110101   191   BF    10111111
152   98    10011000   162   A2    10100010   172   AC    10101100   182   B6    10110110   192   C0    11000000
153   99    10011001   163   A3    10100011   173   AD    10101101   183   B7    10110111   193   C1    11000001
154   9A    10011010   164   A4    10100100   174   AE    10101110   184   B8    10111000   194   C2    11000010
155   9B    10011011   165   A5    10100101   175   AF    10101111   185   B9    10111001   195   C3    11000011
156   9C    10011100   166   A6    10100110   176   B0    10110000   186   BA    10111010   196   C4    11000100
157   9D    10011101   167   A7    10100111   177   B1    10110001   187   BB    10111011   197   C5    11000101
158   9E    10011110   168   A8    10101000   178   B2    10110010   188   BC    10111100   198   C6    11000110
159   9F    10011111   169   A9    10101001   179   B3    10110011   189   BD    10111101   199   C7    11000111



Dez   Hex   Bin        Dez   Hex   Bin        Dez   Hex   Bin        Dez   Hex   Bin        Dez   Hex   Bin
200   C8    11001000   210   D2    11010010   220   DC    11011100   230   E6    11100110   240   F0    11110000
201   C9    11001001   211   D3    11010011   221   DD    11011101   231   E7    11100111   241   F1    11110001
202   CA    11001010   212   D4    11010100   222   DE    11011110   232   E8    11101000   242   F2    11110010
203   CB    11001011   213   D5    11010101   223   DF    11011111   233   E9    11101001   243   F3    11110011
204   CC    11001100   214   D6    11010110   224   E0    11100000   234   EA    11101010   244   F4    11110100
205   CD    11001101   215   D7    11010111   225   E1    11100001   235   EB    11101011   245   F5    11110101
206   CE    11001110   216   D8    11011000   226   E2    11100010   236   EC    11101100   246   F6    11110110
207   CF    11001111   217   D9    11011001   227   E3    11100011   237   ED    11101101   247   F7    11110111
208   D0    11010000   218   DA    11011010   228   E4    11100100   238   EE    11101110   248   F8    11111000
209   D1    11010001   219   DB    11011011   229   E5    11100101   239   EF    11101111   249   F9    11111001



Dez   Hex   Bin
250   FA    11111010
251   FB    11111011
252   FC    11111100
253   FD    11111101
254   FE    11111110
255   FF    11111111



Tabelle 7 : Zahlensystem


Aufzählungskonstanten
enum [Name] {[Wert 1], [Wert 2], ...[Wert n]}

Name :          Name der Konstanten.
Wert:           Wert den die Konstante annehmen kann.

Wird einem Wert der Aufzählungskonstante nicht mit einem „=“ ein bestimmter Wert
zugewiesen, so wird dieser von „0“ beginnend immer um eines inkrementiert.




                                                    10
Variablen

Interne Variablen:
Interne Variablen haben nur innerhalb der Funktion in der sie aufgerufen werden Gültigkeit.
Nach Ablauf der Funktion erlischt ihre Gültigkeit, und aus anderen Funktionen kann nicht auf
ihren Wert zugegriffen werden.

int main (void)
{
int VARIABLE ;

VARIABLE = 5 ;
}

Der Variablen VARIABLE wird der Wert 5 zugewiesen. In anderen Funktionen hat diese
Variable keine Gültigkeit.

Externe Variablen
Externe Variablen haben während des ganzen Programmablaufs Gültigkeit. Sie können von
verschiedenen Funktionen aufgerufen, verarbeitet und im Wert geändert werden.

int VARIABLE1

int main (void)
{
VARIABLE1 = 5 ;
}

void unterprogramm1 (void)
{
VARIABLE1=VARIABLE1+1;
}

void unterprogramm2 (void)
{
printf(VARIABLE1);
}

Im Hauptprogramm wird der Variablen VARIABLE1 der Wert 5 zugewiesen. Im
Unterprogramm1 wird der Wert der Variablen um 1 erhöht, und im Unterprogramm2 auf dem
Bildschirm ausgegeben.

Wird eine Variable als externe Variable definiert, und von einer Funktion eines anderen
Moduls benötigt, so muß die Variable in dem Modul als

extern int [VARIABLE]

deklariert werden.


                                             11
Vektoren, Feldvariablen, Arrays
[Name] [       [Vektorfelder] ]

Name:         Name der Feldvariablen, des Arrays
Vektorfelder: Anzahl der Felder der Variablen

int ARRAY [8]

erzeugt ein Array mit insgesamt 9 Feldern.

int ARRAY [] =(1, 2, 3)

weist den Arrayfeldern [0],[1],[2] die werte „1“,“2“,und „3“ zu.

Die einzelnen Werte des Arrays werden mit

VARIABLE[ [Feldnummer] ]

aufgerufen.

Übergabe eines Arrays an eine Funktion

Funktion( Array );

Es entfallen die Klammern!



Zeiger
[Datentyp]        *[Zeigername]

Datentyp:   Typ des Zeigers z.B. int
Zeigername: Name des Zeigers

Ein Zeiger unterscheidet sich von einer Variablen nur durch den vorgestellten Stern. Wobei
dieser Zeiger einen festen Speicherplatz erhält.

Adressoperator

Mit dem Adressoperator „&“ kann die Adresse des Speicherortes einer Variablen bestimmt
werden.




                                              12
Dereferenzierung

Wurde einem Zeiger ein Wert zugewiesen, kann mit einem „*“ auf das Objekt, auf das der
Zeiger verweist, zugegriffen werden.


int VARIABLE
int *ZEIGER

VARIABLE = 1
ZEIGER = &VARIABLE
*ZEIGER = 4

Der Variablen VARIABLE wird der Wert 1 zugewiesen, darauf wird ein Zeiger auf die
vorhandene Speichervariable konstruiert, und mittels dieses Zeigers der Variablen den Wert 4
zugewiesen.


Maskenprogrammieren
Bei nichtbitadressierbaren Registern müssen mit Hilfe der Maskierung die einzelnen Bits
gesetzt „1“ oder rückgesetzt „0“ werden.

Das Setzen einzelner Bits erfolgt mittels einer Veroderung “|“. Dabei müssen die zu setzenden
Bytes „1“ sein, alle anderen bleiben „0“.

X=X|0b1001 (höchste und niedrigstwertige Byte wird nicht rückgesetzt)

Das Rücksetzen erfolgt mittels einer Verundung „&“. Dabei müssen die rückzusetzenden
Bytes „0“ sein, alle anderen „1“.

X=X&0b0110 (die zwei mittleren Bytes werden gesetzt.)

Beispiel:

X= 0b1001001

Das niedrigste Byte soll rückgesetzt werden, das zweitniedrigste soll gesetzt werden.

X = X & 0b1111110; //Rücksetzen
X = X | 0b0000010; //Setzen

Alternativ:
X = ( X & 0b1111110 ) | 0b0000010;




                                              13
Operatoren




Tabelle 8 : Zahlensystem [2]




                               14
Kontrollstrukturen

If....else If…else
If([Ausdruck])
{
  [Anweisung1];
}
else if
{
  [Anweisung2];
}
else
{
  [Anweisung3];
}

Der Ausdruck in Klammern wird berechnet. Trifft die Bedingung zu, so wird die
Anweisung ausgeführt. Trifft keine Bedingung zu, do wird die Anweisung nach else
durchgeführt. Umfasst der Ausdruck nur eine Programmzeile lang, so können die
geschweiften Klammern weggelassen werden.


Switch ... case
Switch ([Ausdruck])
{
  case     [konstanter Ausdruck1]:
           [Anweisung1];
    break;

 case          [konstanter Ausdruck2]:
               [Anweisung2];
    break;

 default       [default Anweisung];
}

Ist der Ausdruck identisch mit einen der case Marken, wird die Anweisung des
Programms dort durchgeführt. Stimmt keiner der Ausdrücke überein, wird die default
Anweisung durchgeführt. Ausdruck muß konstant und vom Typ INT sein, alle
Anweisungen in case müssen unterschiedlich sein.




                                          15
Iteration


While
While ([Ausdruck])
{
  [Anweisung];
}

Solange die Bedingung des Ausdrucks übereinstimmt, wird die Anweisung wiederholt
durchgeführt.

Endlosschleife:

While (1)
{
  [Anweisung];
}



For
For([Ausdruck1] ; [Ausdruck2] ; [Ausdruck3] )
{
  [Anweisung];
}

Ausdruck1 = Inizialisierung einer Laufvariablen. Startwert festlegen.
Ausdruck2 = Abbruchbedingung
Ausdruck3 = Erhöhung des Wertes der Laufvariablen.
          [Variable]++ = inkrementieren um 1.
          [Variable]-- = dekrementieren um 1.

Die Anweisung wird solange durchgeführt solange die Abbruchbedingung nicht erfüllt ist.
Dabei wird die Laufvariable bei jedem Durchgang um den in Ausdruck3 festgelegten Wert
verändert. Den Startwert der Laufvariablen wird in Ausdruck1 festgelegt.

Endlosschleife:

For(;;)
{}




                                           16
do while
do
 [Anweisung];
while([Ausdruck];

Die Anweisung wird solange wiederholt durchgeführt, solange die Bedingung im
Ausdruck erfüllt ist.


Funktionen

Aufruf von Funktionen
Funktion[WERT];

Ruft die FUNKTION auf, und übergibt ihr den Wert. Von der Funktion wird kein Wert
zurückgegeben.

X = Funktion[WERT];

Ruft die FUNKTION auf, und übergibt ihr den Wert. Von der Funktion wird Wert
zurückgegeben und an X übergeben.



Rückgabewert in Funktionen
[Rückgabetyp] Name ([typ1][Variablennamen1] …)
{
.
.
.
return([Rückgabewert]);
}


Rückgabetyp         = Typ des Wertes der an eine andere Funktion zurückgegeben wird. Ist
                    „void“ wenn kein Typ zurückgegeben wird
Rückgabewert        = Wert der zurückgegeben wird. Entfällt wenn kein Wert
                    zurückgegeben wird.
Name                = Name der Funktion.
Typ1                = Typ des Wertes der von einer anderen Funktion übergeben wird. Ist
                    „void“ wenn kein Wert übergeben wird.
Variablennamen1     = Name des übergebenen Wertes in der Funktion. Entfällt, wenn kein
                    Wert übergeben wird.




                                          17
Pinbelegung und Definition des C515C




Tabelle 9 : Pin Definition und Funktion des C515C [2]




                                                  18
Bild 1 : Pinbelegung des C515C [3]




Speicheraufbau und Organisation des C515C




Bild 2 : Speicheraufbau und Organisation des C515C [2]




                                                 19
Special Funktion Register (SFR) desC515C)




Tabelle 10 : SFR des C515C [3]




                                  20
Tabelle 11 : SFR des C515C [3]




                                 21
Tabelle 12 : SFR des C515C [3]




                                 22
Interrupt


Interrupt Adressen




Bild 3 : Interrupt Adressen [2]




                                  23
Interrupt- Paare/ -Triplets




Tabelle 13 : Interrupt –Paare/ -Triplets


Interrupt Priorität




Bild 4 : Interrupt Priorität festlegen [2]




                                             24
Interrupt Quellen

Interne InterruptQuellen




Bild 5 : Interne Interrupt Quellen [2]

                                         25
Externe Interrupt Quellen




Bild 6 : Externe Interrupt Quellen [2]



                                         26
Bild 7 : Externe Interrupt Quellen [2]

                                         27
A/D Wandler

Interne Struktur des A/D Wandlers




Bild 8 : Interne Struktur des A/D Wandlers [3]




                                                 28
Register für den A/D Wandler




Bild 9 : Beteiligten Register des A/D Wandlers [2]




                                                     29
Timer/Counter

Timer/Counter1,2




Bild 10 : Struktur des Timer/Counter1 und 2




                                              30
TMOD Byte des Timer/Counter 1 und 2




Tabelle 14 : TMOD des Timer/Counter1 und 2




Intern gesteuerter Zeitgeber (timer mode)

C/T# =0
GATE = 0
TR0/TR1 = 1

Die interne Taktrate des Timers ist fOSC /6



Extern freigegebener Zeitgeber (gated timer)

C/T# =0
GATE = 1
TR0/TR1 = 1
P3.2 oder P3.3 = high



                                              31
Extern getakteter Zähler (event counter)

C/T# =1
GATE = 0
TR0/TR1 = 1

Die Zählfrequenz des Counters ist fOSC /12

Extern getakteter, extern freigegebener Zähler (gated event counter)

C/T# =1
GATE = 1
TR0/TR1 = 1
P3.2 oder P3.3 = high




                                             32
Labor Platinen Port Plan
    1.0           1.1           1.2            1.3          1.4           1.5          1.6       1.7
    INT3          INT4         INT5           INT6         INT2
                                                                                      LED8       LED9


    2.0           2.1           2.2            2.3          2.4           2.5          2.6       2.7


    3.0           3.1           3.2            3.3          3.4           3.5          3.6       3.7
                               INT0           INT1
                            S1 (bl) -> S2(sw) -> S3(rt)   ->
                                low        low       high
                            TMR/CTR0 TMR/CTR1


    4.0           4.1           4.2            4.3          4.4           4.5          4.6       4.7
                                                                         INT8
   DIP0           DIP1         DIP2           DIP3         DIP4          DIP5         DIP6       DIP7
 Tstblk. 1s    Tstblk. 2s    Tstblk. 3s     Tstblk. 1w   Tstblk. 2w    Tstblk. 3w   Tstblk. 4w



    5.0           5.1           5.2            5.3          5.4           5.5          5.6       5.7
   LED0           LED1         LED2           LED3         LED4          LED5         LED6       LED7


    6.0           6.1           6.2            6.3          6.4           6.5          6.6       6.7
   AIN0           AIN1         AIN2           AIN3         AIN4          AIN5         AIN6       AIN7
   POT1


    7.0
    INT7


gefüllte Zellen = Bauteil auf der Platine


LED = Leucht Diode
DIP = DIP Schalter
Tstblk.= Tastenblock s = senkrecht, w = waagrecht
S = Schalter
POT = Potentiometer




nichtgefüllte Zellen = Pin des uC's


INT = Interrupt
TMR/CTR = Timer Counter
AIN = Analog Eingang




                                                                  33
Programmierbeispiele

Programmierter Reset
((void (code*)(void))0x8000)() ;

Unterprogramm zum Tastenentprellen:
   Funktionsprototyp:          void prellen_20ms(void);

   Funktion:                   void prellen_20ms(void)
                               {
                                unsigned int i;
                                 for (i=0; i<6658; i++);
                               }

Unterprogramm variable Zeitschleife:
   Funktionsprototyp:          void zeit_var(unsigned int)

   Variable „durchlauf“ definieren (unsigned int)

   Funktion:                   void zeit_var(unsigned int durchlauf)
                               {
                                unsigned int i,j;
                                 for (j=0; j<durchlauf; j++)
                                   for (i=0; i<6658; i++);
                               }



Prioritätseinstellungen über IP0 und IP1
   // Timer 1 einstellen

   TR1 = 0;                   // Timer anhalten
   TF1 = 0;                   // Timer overflow flag
                                  zurücksetzen
   TMOD = (TMOD & 0x??)|0x??; // Moduseinstellung
   TL1 = 0x??;                // Anfangswert einstellen
                                 (8- und 16-Bit-Timer)
   TH1 = 0x??;                // Anfangswert einstellen
                                 (16-Bit-Timer)
   TR1 = 1;                   // Timer aktivieren (starten)




                                       34
A/D-Wandler einstellen
    ADEX = 0;                      // interner Start durch
                                      beschreiben von ADDATL
    ADM = 1;                       // kontinuierliche Wandlung
    MX0 = ?;
    MX1 = ?;                       // Einstellungen der
                                      Ports (ADCON0)
    MX2 = ?;
    ADCON1 = (ADCON1 & 0x?0)|0x=??; // Einstellung des
    Teilerverhältnisses (ADCL)
                                    // und der Ports (gleiche
    Zahl wie bei ADCON0)
    ADDATL = 0x00;                  // A/D-Wandlung starten
                                      (intern)


Kanalauswahl des A/D Wandlers
unsigned char adwandler (unsigned char kanal)
{
ADCON0 = (ADCON0 & 0xF8) |(kanal & 0x07);
.
.
.
Return(…);
}
Funktionsprototyp:  unsigned char adwandlung (int kanal)

{
 ADCON0=((ADCON0 &0xF8)|( kanal & 0x07));// Auswahl des Ports
 ADM=1; // laufende Wandlung
 ADEX=0; // interner Start
 ADCON1=(ADCON1 |0x80); //ADCL =1 Vorteiler 8

 while(BSY)
 {} // warten bis AD-Wandler bereit

 ADDATL=(0x00); // Wandlung starten

 while(BSY)
 {} // währen Wandlung nichts tun!

 return(ADDATH);
}




                                     35
Aus 8 + 2Bit A/D Wandelwert eine 10 Bit Zahl erstellen
{
.
.
.
return((((unsigned int)ADDATH<<8) | ADDATL)>>6);
}




Timer Berechnung

Gewünschte Zeit = t
Erforderliche Maschinenzyklen = Z
Zähleranfangswert = N
Max Byte des Zählers =x

        t
Z
     t Zyklus
N  2x  Z




                                     36
Checkliste für C-Programmierung
1 Einbinden

 #include<reg515c.h>

2 Ports, Bits, Konstanten

   # define ERSATZTEXT Px (Konstante)
   sbit Ersatztext=Px^x
   richtig zugewiesen?
   Globale Variablen, besonders die aus ISR

3 Deklaration: Funktionen, ISR

 Sind alle verwendeten UPs aufgeführt?
 Sind alle verwendeten ISR aufgeführt?
 Ist der Rückgabewert und der Übergabewert richtig?

4 Hauptprogramm

 Sind alle Anfangszustände (LED, Zähler) definiert?
 Sind Eingänge mit 1 beschrieben (P3)

4.1 Initialisierung

   Externe Interrupts, Timer, A/D-Wandler

4.2 Funktionen

 Sind alle Funktionen richtig aufgerufen?
  funktionname(); var_1=funktionname()
 Sind die richtigen Variablentypen zugewiesen

5 Unterprogramme

 Alle lokalen Variablen werden nach Durchlauf der Funktion gelöscht!!!!

6 ISR

 Sind die richtigen Nummern zugewiesen?
 Gibt es Variablen? Global deklarieren
 Müssen Requestflags zurückgesetzt werden?




                                               37
Begriff-Index


Adressbus              hier wird die Adresse der zu lesenden bzw. zu schreibenden
                       Speicherzelle festgelegt
ALE                    Adress Latch enable: zeigt an ob die CPU auf der Adress-/
                       Datenbusleitung eine Adresse sendet oder Daten senden oder
                       empfangen will.
ALU                    arithmetic logical unit
BIOS                   Basic Input Output System
BIU                    bus interface unit: Systembus Schnittstelle
Cache                  Interner Speicher, der in den Lesepausen Daten aus dem RAM einliest
CISC                   Gegenteil von RISC: Comple Instruction Set Computer
CPU                    central processing unit: Zentraleinheit
CU                     control unit: Steuerwerk
Datenbus               dient zum Transport von Daten
DSP                    Digitale Signal Prozessoren
EA                     External Access: Zugriff auf externe Speicher bei LOW
EEPROM                 elektrisch löschbare programmierbare Festwertspeicher
EPROM                  löschbare programmierbare Festwertspeicher: es können nur alle
                       Speicherzellen gemeinsam gelöscht werden.
FLASH                  Speicherzelle, die blitzschnell umprogrammiert werden kann, auch
                       hier können alle Speicherzellen auf einmal elektrisch gelöscht werden;
                       so kann durch ein serielles Interface die Betriebssoftware erneuert
                       werden (Firmware-Update)
FRAM                   Neue Technologie: alle Vorteile der anderen Speicher
                       - beliebig oft beschreibbar
                       - elektrisch löschbar
                       - energiesparend
                       - behält Inhalt nach Abschalten
Instruction Pointer:   Befehlszähler, Programmzähler LOW: Lesen vom Programmspeicher
LSB                    least significant bit
MSB                    most significant bit
Neumann Architetur     (1-14) Neumannscher Flaschenhals
                       (1-15) Daten; Befehle müssen bei der Ausführung nacheinander über
                       Kanal zwischen CPU und Hauptspeicher. Engstelle, sequentielle
                       Abarbeitung
                       Abhilfe: Pipelining, Cache
Opcode                 (1-14) OperationCode: codierte Ford der Operation
OTP                    One time programmable



                                                 38
OWE            Oscillator Watchdog enable: ein HIGH Signal schaltet die
               Überwachung am Oszillatoreingang ein
PC             Program Counter: enthält stets die Speicheradresse des Befehls, der
               gerade bearbeitet wird, also in das Befehlsregister geladen wurde.
Pipelining     (1-16 Rückseite)
PROM           programmierbare Festwertspeicher
PSEN           Program store enable: Freigabe Programmspeicher
RAM            random access memory: Schreib-Lese-Speicher
RD             Read: LOW lesen vom externen Datenspeicher
Register       Speicherzelle mit kleiner Zugriffszeit
RISC           Reduced instruction set computer; sind Prozessoren, die nur ein paar
               Dutzend Maschinenbefehle ausführen können.
ROM            read only memory: Lesespeicher
SFR            Special Function Register: die zugeordneten Steuer- und Datenregister
               sind in einem Block von 256 Bytes zusammengefasst.
Steuerbus      regelt den Datentransfer mit Steuersignalen
Systembus      besteht aus Adressbus (AD), Datenbus (DB), und Steuerbus (SB)
Watch Dog      (1-23Rückseite) Timer der den Programmablauf zählt. Vor Überlauf
               neu triggern. Korrekter Programmablauf
WR             Write: LOW: Schreiben in externen Datenspeicher
Zugriffszeit   (1-13) Zeitspanne zwischen Adresse und R/W# in der Daten anliegen




                                     39
Quellnachweis
[1]     C als erste Programmiersprache – Goll/Grüner/Wiese - 3.Auflage
[2]     Skript Microcomputertechnik, FHT Esslingen, Prof. Dr. –Ing Bernhard Beetz
[3]     Siemens Data SheetMikrocomputer Components 8Bit CMOS Microcontroller
        C515C.
[4]     Borlanc C++ Builder Hilfe

								
To top