Gyenes Károly

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 ---
 

Mikroszámítógépek a járműtechnikában

Tartalomjegyzék


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

Kivonat
fullscreenclose
printsave