Forum: Mikrocontroller und Digitale Elektronik PWM - AT89C51ED2


von Ano n. (chris_18)


Lesenswert?

Hallo,
ich stehe hier vor einem Problem.
Da ich eigentlich nur mit C programmiere, und da auch nur die eher 
einfacheren Befehle weis, wollte ich euch mal fragen, ob ihr mir 
weiterhelfen könnt.

Ziel ist es, an einem Port ein PWM Signal zu erzeugen.
Folgenden Code habe ich von meinem Lehrer bekommen, und er meinte ich 
sollte mir das mal ansehen. Nur kann ich mir darauf nicht wirklich was 
zusammenreimen. Ich lese mir schon den halben Tag das Datenblatt zum uC 
durch, aber irgendwie hilft mir das auch nicht weiter
1
#include <stdio.h>                /* standard I/O .h-file              */
2
#include <stdlib.h>               /* standard library .h-file          */
3
#include <ctype.h>                /* character functions               */
4
#include "reg51xd2.H" // SFR
5
6
bit ausgabe=0;          // Flag für Ausgabe
7
unsigned char cnt_down=1;  // Interruptzähler
8
9
unsigned int i;
10
11
12
13
timer0() interrupt 1 using 1 // Int Vector at 000BH, Reg Bank 1 
14
{
15
   CCAP0H--;         // P1.3
16
   CCAP4H++;         // P1.7
17
18
   
19
20
   if(!--cnt_down)    
21
    { cnt_down=28;
22
      ausgabe=1;
23
    } 
24
}
25
26
void main(void)
27
  { 
28
    CKCON0=0xFF; // X2 fast mode, peripherie NORMAL 12 cycles
29
    TMOD=0x21; // Timer0 Modus1, Timer1 Modus2
30
  TH1=0xff;
31
  //TH0=0x80;
32
    PCON |=0x80;  // 115kBaud
33
  SCON=0x50;
34
  TR0 = 1; TR1 = 1;   // Timer0 und Timer1 EIN
35
    TI=1;      // Start TxD COM      
36
  IEN0=0x82; // Interrupt Timer0 freigeben
37
    cnt_down=1;
38
39
  CMOD=0;       // f_CLK/6 für PWM
40
  CCON|=0x40;   // CR=1: PCA counter EIN
41
42
  CCAPM0=0x42;  // P1.3: Komparatorfunktion EIN (Bit6), PWM EIN (Bit1)
43
  CCAPM4=0x42;  // P1.7: Komparatorfunktion EIN (Bit6), PWM EIN (Bit1)
44
45
  
46
47
    while(1)
48
   {if(ausgabe)
49
      {
50
      ausgabe=0; 
51
    }
52
   } 
53
  }

mfg chris

von Peter D. (peda)


Lesenswert?

Einfach mal Datenblatt Abschnitt "Programmable Counter Array (PCA)" 
lesen.
Da ist alles schön erklärt.

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.