Sunteți pe pagina 1din 2

Structura unui program n limbaj de asamblare pt.

familia de microcontroller-e 8051


Nr.
etap
Secvene program Observaii
1 ORG 0000H
JMP MAIN
De la adresa 0000H (de unde se lanseaz n execuie
programele) se execut un salt la adresa MAIN unde
ncepe efectiv programul principal.
2 ORG 0003H
JMP EXTERN0
ORG 000BH
JMP TIMER0
ORG 0013H
JMP EXTERN1
ORG 001BH
JMP TIMER1
ORG 0023H
JMP SERIAL
Aici se definesc vectorii de ntrerupere pentru tipurile de
ntreruperi care se utilizeaz n aplicaie.

3 Var_Byte1 DATA 30H
Var_Byte2 DATA 31H

Var_ByteN DATA xxH
Aici se definesc variabilele de tip OCTET. Ele pot fi
stocate n intervalul de adrese 30H7FH.
De ex.: ULTFAZA DATA 30H
VAL1 DATA 31H
Explicaii: locaia de memorie cu adresa 30H va conine
valoarea variabilei ULTFAZA, iar locaia de la adresa
31H va conine valoarea variabilei VAL1
4 Var_bit1 BIT 0
Var_bit2 BIT 1

Var_bitN BIT x
Aici se definesc variabilele de tip BIT. Ele pot fi stocate
n intervalul 0127 0 7 x 7 127.
De ex.: SENS BIT 0
AUTOMAT BIT 1
Explicaii: locaia 20H.0 va conine valoarea variabilei
SENS, de tip BIT, iar locaia 20H.1 va conine valoarea
variabilei AUTOMAT
5 ORG zzzzH
MAIN: MOV SP,#60H
MOV IE,#93H

MOV TMOD,#01H
MOV TH0,#55H
MOV TL0,#4FH

CALL PROGSER

Dac este cazul se vor programa @i alte
componente ale microcontroller-ului
(PWM, CAD etc.)

Aici ncepe programul principal (la adresa MAIN).
- Se iniializeaz SP (de ex. la adresa 60H)
- Aici se programeaz registrul IE cu valoarea
corespunztoare validrii ntreruperilor folosite n
aplicaie.
7 0
IE EA - - SER T1 EXT1 T 0 EXT0
93H 1 0 0 1 0 0 1 1
De ex. IE=93H pt. validarea ntreruperilor SER, T0 @i
EXT0.

- Aici se programeaz timer-ele. De exemplu
TMOD=01H programeaz timer-ul 0 n modul 1,
cu valorile TH0=55H @i TL0=4FH

- Aici se apeleaz subrutina PROGSER pentru
programarea comunicaiei seriale. (PROGSER
trebuie definit ulterior)
MOV TMOD,#21H
MOV TH1,#0FDH
SETB TR1
MOV SCON,#5AH

MOV Var_Byte1,#...
MOV Var_Byte2,#...
..
MOV Var_ByteN,#...

SETB Var_bit1
CLR Var_bit2
..
SETB Var_bitN

Aici se pot plasa secvene de program
pentru realizarea unor condi2ii ini2iale
ale aplica2iei (de ex. oprirea
motoarelor, stingerea afi@oarelor etc.)

LOOP: JMP LOOP
- Aici se face ini2ializarea variabilelor de tip octet
definite anterior. De ex.:
MOV ULTFAZA,#11H
MOV VAL1,#0FFH

- Aici se face ini2ializarea (cu instruciunile SETB
sau CLR) variabilelor de tip bit definite anterior.
De ex.: SETB SENS
CLR AUTOMAT
Variabila SENS prime@te valoarea 1, iar
AUTOMAT prime@te valoarea 0

- Aici se intr ntr-o bucl4 infinit4 pentru
a@teptarea eventualelor ntreruperi
6 ORG vvvvH
EXTERN0: ..
..
RETI
- Aici se plaseaz subrutinele de servire a
ntreruperilor pentru ntreruperile folosite n
aplicaie.
ORG xxxxH
TIMER0: ..
..
RETI
ORG yyyyH
EXTERN1: ..
..
RETI
ORG ttttH
TIMER1: ..
..
RETI
ORG jjjjH
SERIAL: JB TI,Transmisie
Receptie: MOV A,SBUF
CJNE A,., Conti1
..
JMP SF
Conti1: CJNE A,., Conti2
..
JMP SF
Conti2: ..
.
SF: CLR RI
CLR TI
RETI
Transmisie:
..
JMP SF

S-ar putea să vă placă și