Mikroszámítógépek a járműtechnikában
1. sz. melléklet
Az ütemjel-generáló assembler program forráskódja; The program generates beats 150 ms | |||
; Dr K. Gyenes 25/04/2013 | |||
.module asm1 | |||
.optsdcc -mmcs51 --model-small | |||
;-------------------------------------------------------- | |||
; special function registers | |||
;-------------------------------------------------------- | |||
.area RSEG (DATA) | |||
WDTCN | = 0xFF | ; Watch Dog Timer | |
P5 | = 0x85 | ; P5 Port | |
P74OUT | = 0xB5 | ; P4..P7 Control | |
CKCON | = 0x8E | ||
OSCXCN | = 0xB1 | ||
OSCICN | = 0xB2 | ||
TMOD | = 0x89 | ||
TH0 | = 0x8C | ||
TL0 | = 0x8A | ||
; | Bit variables | ||
EA | = 0xAF | ; EA at IE (0xA8) reg Bit_7 | |
TR0 | = 0x8C | ; TR0 at TCON (0x88) reg Bit_4 | |
ET0 | = 0xA9 | ; ET0 at IE (0xA8) reg Bit_1 | |
EX0 | = 0xA8 | ; EX0 at IE (0xA8) reg Bit_0 | |
SYSCLK | = 22118400 | ; External crystal oscillator frequency | |
THREL | = 0xB8 | ; Reload value for timer_0 10 ms | |
TLREL | = 0x00 | ; 22118400/12 = 1843200/100 = 18432 --> 4800H --> 0xB800 | |
.area CSEG (CODE) |
|||
.area HOME (CODE) |
|||
ajmp | start | ||
.area CODE (ABS) |
|||
.org | 0x0B | ; Timer0 IT vector | |
acall | ctc0_it | ||
reti | |||
.area CODE (ABS) |
|||
.org | 0x30 | ||
start: | ; Main program | ||
acall | clock_init | ||
acall | port_init | ||
acall | ctc_init | ||
mov | r2, #0 | ; r2 as counter | |
setb | EA | ||
loop: | |||
mov | a, P5 | ||
anl | a,#0x01 | ||
jz | b1 | ; Button1 : Beat_1 | |
mov | a, P5 | ||
anl | a, #0x02 | ||
jz | b2 | ; Button2 : Beat_2 | |
mov | a, P5 | ||
anl | a, #0x04 | ||
jz | b3 | ; Button3 : Beat_3 | |
mov | a, P5 | ||
anl | a, #0x08 | ||
jz | b4 | ; Button4 : Beat_4 | |
sjmp | loop | ; Endless loop | |
b1: | |||
acall | pulse | ; --_ | |
acall | pause | ; ___ | |
sjmp | loop | ||
b2: | |||
acall | pulse | ; --_--_ | |
acall | pulse | ||
acall | pause | ; ___ | |
sjmp | loop | ||
b3: | |||
acall | pulse | --_--_--_ | |
acall | pulse | ||
acall | pulse | ||
acall | pause | ; ___ | |
sjmp | loop | ||
b4: | |||
acall | pulse | ; --_--_--_--_ | |
acall | pulse | ||
acall | pulse | ||
acall | pulse | ||
acall | pause | ; ___ | |
sjmp | loop | ||
pulse: | |||
orl | P5,#0x10 | ; LED ON | |
acall | del150 | ||
acall | del150 | ||
anl | P5,#0xEF | ; LED OFF | |
acall | del150 | ||
ret | |||
pause: | |||
acall | del150 | ; 3*150 ms | |
acall | del150 | ||
acall | del150 | ||
ret | |||
; --- ROUTINES --- | |||
clock_init: | |||
mov | OSCXCN,#0x67 | ; Ext. Osc. (christ. no divide by 2 stage) f > 6 MHz | |
mov | r0,#100 | ; cnt = 100; | |
del: | djnz r0,del | ; while (cnt--); | |
wosc: | mov a,OSCXCN | ||
anl | a,#0x80 | ; test bit_7 (until 0 not ready) | |
jz | wosc | ; while ((OSCXCN & 0x80) != 0x80); | |
mov | a,OSCICN | ||
orl | a,#0x08 | ||
mov | OSCICN,a | ;vagy így: OSCICN |= 0x08; | |
ret | |||
port_init: | |||
mov | WDTCN,#0xDE | ; Disable WD | |
mov | WDTCN,#0xAD | ||
mov | P74OUT,#0x08 | ; P74OUT = 0x08 P5 Init | |
mov | P5,#0x0F | ; All LEDs dark | |
ret | |||
ctc_init: | |||
mov | a,CKCON | ||
anl | a,#0xF7 | ; CKCON &= 0xF7; | |
mov | CKCON,a | ||
mov | TMOD,#0x11 | ; TMOD = 0x11; | |
mov | TH0,#THREL | ; TH0 = THREL; | |
mov | TL0,#TLREL | ; TL0 = TLREL; | |
setb | ET0 | ; ET0 = 1; | |
ret | |||
ctc0_it: | |||
mov | TH0,#THREL | ; Occurs at every 10 ms | |
mov | TL0,#TLREL | ||
inc | r2 | ; cnt++; | |
mov | a,r2 | ||
clr | c | ||
subb | a,#15 | ; 150 ms | |
jc | fin | ; cnt < 15 | |
mov | r2,#0 | ||
clr | TR0 | ; TR0 = 0; Stop Timer_0 | |
fin: | ret | ||
del150: | |||
setb | TR0 | ; TR0 = 1; Start Timer_0 | |
wait: | jb TR0, wait | ; wait until Timer_0 run | |
ret | |||
; | --- 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