Mikroszámítógépek a járműtechnikában
11. sz. melléklet
PWM jel generálása// MCU kitt C8051F020 processzor | |
// CTC0 10 ms, On board LED1 blink 1 sec. PWM : P1.0 | |
// Dr K. Gyenes 2013.10.16. | |
#include <compiler_defs.h> | |
#include <C8051F020_defs.h> | // SFR declarations |
typedef unsigned char byte; | |
typedef unsigned int word; | |
#define SYSCLK (22118400L) | |
#define THREL 0xB8 | // Reload value for timer_0 10 ms |
#define TLREL 0x00 | // 22118400/12 = 1843200/100 = 18432 |
// Function Prototypes | |
void init_Clock(void); | // System clock initialisation |
void init_Port(void); | // Port and Crossbar initialization |
void init_CTC0(void); | // CTC0 Timer 10 ms |
void init_PCA0(void); | // PCA0 init for PWM |
void delay(long t); |
|
byte sec1 = 0; |
|
byte cnt = 0; |
|
byte nr, nr_old = 0; |
|
// ---- main ---- |
|
void main (void) |
|
{ | |
init_Clock(); |
|
WDTCN = 0xDE; |
// Switch off watchdog |
WDTCN = 0xAD; |
|
init_CTC0(); |
|
init_Port(); |
|
init_PCA0(); |
|
EA = 1; | |
SCON1 |= 0x02; |
|
while (1) | // Endless working loop |
{ | |
nr = P4; |
// Get SW5 |
if (nr^nr_old) |
// SW4 changed |
{ | |
nr_old = nr; |
|
PCA0CPH2 = nr; |
// PWM control via P4 switch |
} | |
} | // End of working loop |
} | |
// ---- end of main ---- | |
// IT routines | |
void CTC0_it(void) interrupt 1 | // Occurs at every 10 ms |
{ | |
TH0 = THREL; |
|
TL0 = TLREL; |
|
cnt++; | |
if (cnt == 100) |
// 1 sec |
{ | |
cnt = 0; | |
P5 ^= 0x10; |
// Test blinking LED 1 |
sec1 = 0xFF; |
|
} | |
} | |
// Initialization Subroutines | |
void init_Clock(void) | |
{ | |
OSCXCN = 0x67; |
// Ext. Osc. (christ. no divide by 2 stage) |
delay(1000); |
// wait |
while ((OSCXCN & 0x80) != 0x80); | |
OSCICN |= 0x08; |
// ON |
} | |
void init_CTC0(void) |
// CTC0 10 ms Time Base |
{ | |
TMOD = 0x11; |
// CTC_0 : Timer mode 1; CTC1 : Timer mode 1 |
TH0 = THREL; |
|
TL0 = TLREL; |
|
ET0 = 1; | // Enable Timer_0 IT |
TR0 = 1; | // Start Timer_0 |
} | |
void init_Port(void) |
|
{ | |
XBR0 = 0x05; |
// Bit_2 : UART0EN (TX0 - P0.0, RX0 - P0.1) |
// Bit_0 : SMBUS0 (SDA - P0.2, SCL P0.3 ) | |
XBR0 |= 0x18; |
// CEX0, CEX1, CEX2 enable |
XBR2 = 0x44; | // Bit_2 : UART1EN (TX1 - P0.4, RX1 - P0.5) |
// Bit_6 : Enable XBAR | |
P0MDOUT = 0x10; |
// P0 output 0: open drain 1: Push-pull |
P1MDOUT = 0xFF; |
// P1 Push-pull |
P2MDOUT = 0xFF; |
// P2 Push-pull |
P74OUT = 0x08; |
// Output configuration for P4-7 |
P5 |= 0x0F; |
|
P5 &= 0x0F; |
// Ledek sötét |
} | |
void init_PCA0(void) |
// Configure PCA time base; overflow IT disabled |
{ | // PCA2 routed to P1.0 |
PCA0CN = 0x00; |
// Stop counter; clear all flags |
PCA0MD = 0x08; |
// Use SYSCLK as time base (0x03 for SYSCLK/4) |
CA0CPM2 = 0x42; |
// Module 0 = 8-bit PWM mode |
PCA0CPH2 = 0xFF; |
// Configure initial PWM duty cycle = 0% |
CR = 1; | // Start PCA counter |
} | |
void delay(long t) |
|
{ | |
while(t--); |
|
} | |
// ------------ E N D O F M O D U L E ------------ |
Tartalomjegyzék
- Mikroszámítógépek a járműtechnikában
- Impresszum
- Köszönetnyilvánítás
- 1. Ajánlás
- 2. Bevezetés
- 3. A számítástechnika fejlődése (történeti áttekintés)
- 4. Mikroszámítógép-generációk
- 5. Integrált áramkör előállítása
- 6. Aritmetikai műveletek a mikroszámítógépekben
- 7. Az analóg jelek átalakítása
- 8. Kommunikáció a mikroszámítógéppel
- 9. A mikroszámítógép hardverfelépítése
- 10. Az utasítások felépítése
- 11. Megszakítások
- 12. A programfejlesztő környezet
- 13. A mikroszámítógépek programozása
- 14. Az assembler program készítése
- 15. C program készítése
- 16. Az Arduino mikrogép
- 17. Mellékletek
- 1. sz. melléklet • Az ütemjel-generáló assembler program forráskódja
- 2. sz. melléklet • A program G1 gomb ismételt lenyomására ki-be kapcsolja a LED1 lámpát
- 3. sz. melléklet • A program 1 sec idővel villogtatja LED1 lámpát
- 4. sz. melléklet • Megszakítás kiváltása
- 5. sz. melléklet • A/D konverzió
- 6. sz. melléklet • Timer0 villogtatja a négy LED-lámpát
- 7. sz. melléklet • A program a processzor hőmérsékletét méri és a virtuális LCD-re írja
- 8. sz. melléklet • A programbillentyű kezelést valósít meg
- 9. sz. melléklet • Az UART programozása
- 10. sz. melléklet • D/A konverter virtuális oszcilloszkópra
- 11. sz. melléklet • PWM jel generálása
- 12. sz. melléklet • Switch konvertálása decimális formába
- 13. sz. melléklet • Az Arduino szintaktikája
- 14. sz. melléklet • Az Arduino beépített függvényei
- 1. sz. melléklet • Az ütemjel-generáló assembler program forráskódja
- 18. Példatár
- 19. Irodalom
Kiadó: Akadémiai Kiadó
Online megjelenés éve: 2021
ISBN: 978 963 454 711 2
A kötet elsősorban a BME Közlekedésmérnöki Kar mesterszakos hallgatói számára készült az azonos nevű tárgy segédleteként, de hasznos lehet a logisztika, elektrotechnika és számítástechnika témái iránt érdeklődő hallgatók számára is. A szerző azoknak a mechatronika, elektronika és számítástechnika iránt elkötelezett hallgatóknak ajánlja, akik TDK-munkát készítenek, de hasznos lehet a diplomamunkát írók és az államvizsgára felkészülők számára is.
Hivatkozás: https://mersz.hu/gyenes-mechatronika-es-mikroszamitogepek//
BibTeXEndNoteMendeleyZotero