Cuprins
1. Prezentare generala
2. Hardware
- Placa de baza simpla: SDM-PB01
- Placa de baza extinsa: SDM-PBEX01
- Placa de extensie memorie: PEM04
- BUS Extender
3. Mediul integrat de dezvoltare
- Generalitati
- Descrierea meniurilor si a casetelor de dialog
4. Debugger
- Generalitati
- Descrierea comenzilor Debugger-ului
5. Biblioteca de functii
- Generalitati
- Descrierea functiilor de biblioteca
Cap 1. Prezentare generala
Sistem de dezvoltare si achizitie de date cu microcontroler
Sistemul de dezvoltare si achizitie de date (SDM) este realizat in jurul microcontrolerului 80C552. El cuprinde o serie de componente hard si soft, care impreuna formeaza un sistem puternic si usor de utilizat pentru dezvoltarea programelor de aplicatie.
Microcontrolerul 80C552 este un microcontroler reprezentativ din familia 8051.
Principalele sale componente sunt urmatoarele:
- unitate centrala pe 8 biti
- memorie interna RAM de 256 octeti
- doua numaratoare pe 16 biti (timer/counter T0, T1)
- un numarator special cu facilitati de capture si compare (timer/counter T2)
- watchdog timer (T3)
- cinci porturi I/O pe 8 biti (port P0-P4)
- un convertor analog-numeric ADC pe 10 biti cu 8 canale analogice multiplexate (port P5)
- doua iesiri "pulse width modulated" (PWM0, PWM1)
- interfata seriala RS-232
- interfata seriala I2C
SDM cuprinde urmatoarele componente HARD:
- Placa de baza in varianta simpla: SDM-PB01
- Placa de baza in varianta extinsa: SDM-PBEX01
- Placa de extensie memorie pentru achizitie de date: PEM04
- BUS Extender pentru conectarea mai multor placi de baza la un singur PC
SDM cuprinde urmatoarele componente SOFT:
- Programul monitor de pe placa de baza (continut in EPROM)
- Mediul integrat de dezvoltare a programelor de aplicatie pe PC
- Debugger pentru depanare/trasare pe PC
- Biblioteca de functii C pentru programatorul de aplicatii
- Programe exemplu
SDM va permite sa dezvoltati programe de aplicatie complexe, scrise in limbajul C sau in limbaj de asamblare, avind acces la toate resursele microcontrolerului si ale placilor componente.
SDM va pune la dispozitie un mediu integrat de dezvoltare, un Debugger, o biblioteca de functii C pentru gestiunea principalelor resurse ale SDM, precum si citeva programe exemplu sugestive, care usureaza dezvoltarea propriilor aplicatii.
SDM va ofera de asemenea posibilitatea de a cupla cu placa de baza diferite placi de extensie proprii, pentru care puteti dezvolta apoi programe de aplicatie specifice.
In continuare sunt prezentate pe scurt componentele SDM amintite mai sus, descrierea detaliata a acestora urmind sa se faca in capitolele urmatoare.
Placa de baza simpla: SDM-PB01
Cuprinde urmatoarele elemente:
- Sursa de alimentare de 5V
- Microcontroler 80C552 la frecventa de 11,0592 MHz (fara memorie program interna)
- Memorie EPROM - 32 Ko, adresabila ca memorie program
- Memorie RAM - 32 Ko, adresabila atit ca memorie program cit si ca memorie de date
- Memorie nevolatila EEPROM - 512 octeti, adresabila pe magistrala interna I2C
- Interfata seriala RS-232 pentru conectarea la PC, cu conectorul asociat
- Conectori pentru extensie (5x16 pini) la care sunt disponibile toate semnalele de pe placa de baza
- Tasta de reset si tasta de comutare memorie
- Jumperi de configurare
Placa de baza extinsa: SDM-PBEX01
Cuprinde in plus fata de placa de baza simpla SDM-PB01 urmatoarele elemente:
- Afisaj cu cristale lichide LCD (2*16 caractere)
- Tastatura (12/16 taste)
- Buzzer conectat pe iesirea PWM0 a microcontrolerului
- Port de intrare pentru citirea a 8 linii de semnal cu nivel MOS
- Port de iesire pentru comanda a 8 linii de semnal cu nivel MOS
- Port de iesire de putere de tip open colector realizat cu tranzistoare npn cu Icmax de 1A
- Convertor numeric-analogic DAC pe 12 biti, cu 2 canale independente (unipolar, bipolar)
- Decodificator
- Jumperi de configurare
Toate aceste componente sunt comandate prin porturi de date, plasate intr-o zona de memorie de date, care nu este ocupata de memoria RAM principala a placii (zona se suprapune peste EPROM). Astfel, porturile microcontrolerului ramin libere pentru a fi folosite in alte aplicatii.
Placa de extensie memorie: PEM04
Cuprinde urmatoarele elemente:
- pina la patru cip-uri de memorie RAM - 32 Ko, pentru programe de achizitie de date
- decodificator
- jumperi de configurare a adresei placii de baza (0-7)
Cip-urile de memorie RAM pentru achizitie de date sunt adresabile ca memorie de date si sunt plasate intr-o zona de memorie de date, care nu este ocupata de memoria RAM principala a placii (zona se suprapune peste EPROM).
BUS Extender
Este un modul separat care permite conectarea mai multor placi de baza la un singur PC (mini-retea).
Cuprinde urmatoarele elemente:
- cablu de alimentare 220V
- intrari pentru conectarea placilor de baza la modul si cablurile seriale corespunzatoare
- cablu serial special pentru conectarea modulului la PC
Programul monitor
Placa de baza a sistemului de dezvoltare contine in EPROM un program monitor, care permite conectarea placii la un calculator personal PC. Monitorul comunica pe linia seriala cu programul principal de pe PC, executind toate comenzile cerute de acesta.
Monitorul nu ocupa in intregime spatiul din EPROM. In principiu, spatiul liber din EPROM poate fi folosit de utilizator pentru memorarea unor programe, subrutine sau tabele de date, care apoi pot fi apelate din programele de aplicatie.
Mediul integrat de dezvoltare
Programul principal al SDM este un pachet integrat, cu o interfata moderna, care optimizeaza procesul de dezvoltare a programelor de aplicatie.
Folosind acest mediu de dezvoltare, utilizatorul are urmatoarele facilitati:
- incarcarea, editarea si salvarea programelor sursa, folosind editorul de text incorporat
- apelarea programelor utilitare pentru generarea programului executabil
- incarcarea programului executabil pe placa si lansarea in executie
- depanarea programelor folosind Debugger-ul incorporat
- configurarea parametrilor programului
Debugger
Debugger-ul va permite incarcarea, executia si depanarea unui program aplicatie, utilizind un set de comenzi de depanare/trasare.
Modul de lucru TRACE este un instrument puternic pentru depanarea programelor. El permite executia pas cu pas a instructiunilor din program, ignorarea unor instructiuni, executia pina la o adresa, utilizarea unor puncte de intrerupere, dezasamblarea unor portiuni de memorie.
Biblioteca de functii
Programatorul de aplicatii pentru sistemul de dezvoltare are la dispozitie o importanta biblioteca de functii C pentru gestiunea principalelor resurse ale placii.
Functiile din biblioteca pot fi apelate din programele de aplicatie scrise in limbajul C sau in limbaj de asamblare.
Programe exemplu
Programatorul de aplicatii pentru sistemul de dezvoltare are la dispozitie programe exemplu, pentru aproape toate componentele placii de baza, programe care folosesc functii din biblioteca de functii.
Aceste programe exemplu pot fi incarcate pe placa si testate, iar ulterior pot fi modificate si folosite ca model pentru dezvoltarea programelor proprii.
Cap 2. Hardware
In acest capitol vor fi prezentate detaliat urmatoarele componente hard ale SDM:
- Placa de baza simpla: SDM-PB01
- Placa de baza extinsa: SDM-PBEX01
- Placa de extensie memorie: PEM04
- BUS Extender
Placa de baza simpla: SDM-PB01
Este realizata pe o placa de cablaj imprimat dublu placat cu dimensiunile de 95 x 125 mm si cuprinde urmatoarele elemente:
Sursa de alimentare de 5V
Conectorul pentru tensiunea de alimentare este: C1.
Este realizata cu circuitul LM7805. Accepta la intrare o tensiune cuprinsa intre 9 si 15V cu polaritatea indicata in figura, si furnizeaza la iesire o tensiune de: 5V +/- 5%.
La conectare gresita se distruge siguranta fuzibila F1 de pe placa sistemului (250mA, lenta).
In practica se va evita alimentarea de la o tensiune mai mare de 12V pentru a limita puterea disipata de elementul regulator. Prin fixarea circuitului LM7805 pe un radiator se asigura cresterea curentului disponibil de la sursa de 5V.
Conectorul C2 permite alimentarea placii direct de la o tensiune de 5V. Se recomanda utilizarea unei surse cu buna stabilizare si cu limitare de curent.
Nu exista protectie la conectare inversa pe conectorul C2 !
Microcontroler, memorii EPROM, RAM si circuit de selectie
Se foloseste microcontrolerul 80C552. Frecventa cuartz-ului este 11.0592 MHz. Microcontrolerul poate adresa o zona de memorie externa de 64 kocteti, impartita fizic si logic in 2 blocuri a cite 32 kocteti fiecare. Blocul realizat cu memorie EPROM poate fi adresat numai ca si memorie program, iar blocul realizat cu memorie RAM poate fi adresat atit ca memorie program cit si ca memorie de date. Cele 2 zone de memorie astfel obtinute nu se suprapun si ocupa fiecare jumatate din totalul de 64 kocteti adresabili.
Un circuit de selectie existent pe placa permite alocarea adreselor pentru cele 2 zone astfel:
- EPROM-ul in partea inferioara a zonei de adrese (0000H-7FFFH) si RAM-ul in partea superioara
(8000H-FFFFH), situatie indicata de aprinderea LED-ului rosu de pe placa. In acest caz se executa
programul monitor din EPROM.
- RAM-ul in partea inferioara a zonei de adrese (0000H-7FFFH) si EPROM-ul in partea superioara
(8000H-FFFFH), situatie indicata de stingerea LED-ului. In acest caz se executa programul de
aplicatie incarcat anterior in RAM.
Comutarea adreselor poate fi facuta de la PC sau folosind tasta de comutare memorie (CM) de pe placa (numai cind pe PC este pornit programul principal al sistemului). La comutarea memoriei, microcontrolerul este automat resetat.
Tasta de reset (Reset) permite resetarea microcontrolerului.
Memorie nevolatila EEPROM
Placa de baza a sistemului de dezvoltare contine o memorie EEPROM 24C04, cu o capacitate de 512 octeti, care este adresata pe magistrala interna I2C.
Interfata seriala RS-232 pentru PC
Conectorul pentru cablul serial de conectare la PC este: C14.
Cablul de conexiune intre PC si sistem este prevazut la un capat cu un conector mama CANON 9 sau CANON 25 pentru PC, iar la celalalt capat cu un conector pentru placa de baza. Se realizeaza urmatoarele legaturi:
Conector mama CANON 9 Conector mama CANON 25 Placa de baza
2 - RX 3 - RX 1 - TX
3 - TX 2 - TX 2 - RX
4 - DTR 20 - DTR 3 - CD (comutare memorie)
- - 4 - neconectat
5 - GND 7 - GND 5 - GND
Conectori pentru extensie
Conectorii pentru placa de extensie sunt: C15, C16, C17, C18, C19.
Ei sunt plasati pe latura din stinga a placii de baza si au cite 2x8 pini fiecare. La acesti conectori sunt disponibile toate semnalele de pe placa de baza necesare pentru o extensie a sistemului si anume: magistrala de adrese si date, porturile P1, P3, P4, P5, semnalele de selectie a memoriei, tensiuni de alimentare, etc.
Daca circuitele de extensie vor fi alimentate de la sursa de 5V a sistemului, atunci pentru a se evita supraincarcarea sursei, curentul consumat de aceste circuite nu trebuie sa depaseasca 200 mA.
Jumperi de configurare
Permit diverse configurari pentru placa de baza. Acestia sunt: C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13. In continuare se prezinta posibilitatile de configurare:
Jumper C3
Permite alimentarea placii de la sursa realizata pe placa cu LM7805.
Jumper-ul se scoate daca placa se alimenteaza de la o sursa exterioara (la conectorul C2).
Jumper C4
Semnificatia pinilor este: 1 - GND, 2 - pin 1 EPROM, 3 - Vcc, 4 - A15
Permite echiparea placii cu un circuit de memorie EPROM de 64 Ko, astfel:
- pentru EPROM - 32 Ko, se alege pozitia 2-3
- pentru EPROM - 64 Ko din care se utilizeaza doar 32 Ko, se alege pozitia 1-2
- pentru EPROM - 64 Ko din care se utilizeaza integral 64 Ko, se alege pozitia 2-4
Jumper C5
Permite alegerea modului de selectie pentru RAM (/CE):
- pentru RAM selectat ca memorie de program si date, se alege pozitia 1-2
- pentru RAM selectat ca memorie de date, se alege pozitia 2-3 (legare la GND)
Jumper C6
Permite alegerea modului de selectie pentru EPROM (/CE):
- pentru /CE EPROM = NOT ( /CE RAM ), se alege pozitia 1-2
- pentru /CE EPROM = GND, se alege pozitia 2-3
Jumper C7
Permite alegerea modului de selectie pentru RAM (/OE):
- pentru RAM selectat ca memorie de program si date, se alege pozitia 2-3
- pentru RAM selectat ca memorie de date, se alege pozitia 1-2
Jumper C8
Permite validarea / invalidarea facilitatii de watchdog a microcontrolerului:
- pentru validare, se alege pozitia: /EW - GND
- pentru invalidare, se alege pozitia: VCC - /EW
Jumper C9
Permite validarea / invalidarea memoriei program externe:
- pentru validare, se alege pozitia: /EA - GND
- pentru invalidare, se alege pozitia: VCC - /EA
Jumper C10
Permite generarea semnalului de reset pentru microcontroler la comutarea adreselor cu tasta CM.
Jumper C11
Permite legarea semnalului /INT1 la GND (se utilizeaza in modul Trace).
Jumper C12
Permite legarea semnalului RxD la intrarea driver-ului interfetei seriale.
Jumper C13
Permite legarea semnalului TxD la intrarea driver-ului interfetei seriale.
Schema bloc: SDM-PB01
Placa de baza extinsa: SDM-PBEX01
Este realizata pe o placa de cablaj imprimat dublu placat cu dimensiunile de 190 x 125 mm si cuprinde in plus fata de placa de baza simpla SDM-PB01 urmatoarele elemente:
Afisaj cu cristale lichide LCD
Conectorul pentru afisajul cu cristale lichide este: C33
Se pot conecta diverse afisaje LCD de tipul 1x16, 2x16, 2x24, 2x40 caractere (sau altele compatibile). Este prevazut si un semireglabil (R1) pentru reglarea contrastului (pentru afisajele care au aceasta facilitate).
Tastatura
Conectorii pentru tastatura sunt: C29 sau C30 (in functie de tipul de tastatura conectata). Se poate conecta o tastatura cu 12/16 taste, avind matricea de 3 x 4, respectiv 4 x 4 (grupe x taste)
Buzzer
Este conectat pe iesirea PWM0 a microcontrolerului. La activare se comanda cu un semnal dreptunghiular, cu o anumita frecventa (in functie de tonul dorit).
Porturi de intrare / iesire
Sunt disponibile 3 porturi de I/O: un port de intrare, unul de iesire si unul de iesire de putere.
Conectorul pentru portul de intrare este: C36, de tipul 1x10. Portul de intrare este realizat cu un circuit integrat 74HC244. Poate fi folosit pentru citirea a 8 linii de semnal cu nivel MOS.
Conectorul pentru portul de iesire este: C35, de tipul 1x10. Portul de iesire este realizat cu un circuit integrat 74HC374. Poate fi folosit pentru comanda a 8 linii de semnal cu nivel MOS.
Portul de iesire poate fi configurat cu jumper-ul C28.
Conectorul pentru portul de iesire de putere este: C34, de tipul 1x10. Este de tip open colector si este realizat cu un circuit integrat 74HC374 si cu 8 tranzistoare npn cu ICmax de 1A. Poate fi folosit pentru comanda unor dispozitive alimentate de la o tensiune externa sistemului.
Portul de iesire de putere poate fi configurat cu jumper-ul C27.
Convertor numeric-analogic DAC
Utilizeaza conectorii: C22, C23, C24, C31, C32.
Conectorii C24 si C22 reprezinta iesirile celor doua canale ale DAC, canalul A, respectiv B.
Conectorul C23 reprezinta tensiunea de alimentare de +/- 12V pentru amplificatoarele operationale de la iesirile DAC.
Conectorul C31 reprezinta tensiunea de referinta externa pentru DAC. Conectorul C32 reprezinta tensiunea de alimentare (+ 12V) pentru un circuit de referinta de pe placa.
Convertorul numeric-analogic este realizat cu circuitul AD7537 si amplificatoarele operationale AD712. Sunt disponibile 2 canale independente (A, respectiv B), cu posibilitatea selectiei prin jumperi (C21 si C25) a domeniului tensiunii de iesire: unipolar si bipolar.
Tensiunea de referinta necesara convertorului poate fi obtinuta in 3 moduri:
- din tensiunea de alimentare a placii (+ 5V)
- printr-o sursa de tensiune externa, la conectorul C31
- utilizind un circuit de referinta de pe placa, a carui alimentare cu + 12V se face la conectorul C32.
Potentiometrul R25 poate regla cu precizie tensiunea furnizata convertorului.
La prima utilizare sau atunci cind apar dereglari, convertorul trebuie CALIBRAT inainte de a fi utilizat in aplicatii. Calibrarea se realizeaza prin intermediul potentiometrelor: R22 si R26 (canalul A), R23 si R24 (canalul B), respectind procedura prezentata in continuare:
1. Tensiunea de iesire unipolara ( 0V . - 5V )
Se pozitioneaza jumperii: C21 si C25 in pozitia 3-4.
Se inscrie in ambele canale valoarea 0FFFH (valoare maxima).
Se regleaza din potentiometrele: R22 si R23, urmarind ca tensiunea de la iesirile OUTA, respectiv
OUTB sa fie: - 4998.8 mV.
2. Tensiunea de iesire bipolara ( - 5V . 5V )
Se pozitioneaza jumperii: C21 si C25 in pozitia 1-2.
Se inscrie in ambele canale valoarea: 0800H (mijloc de scala).
Se regleaza din potentiometrele: R22 si R23, urmarind ca tensiunea de la iesirile OUTA, respectiv
OUTB sa fie: 0.0 mV.
Se inscrie apoi in ambele canale valoarea: 0FFFH (valoare maxima).
Se regleaza din potentiometrele: R26 si R24, urmarind ca tensiunea de la iesirile OUTA, respectiv
OUTB sa fie: + 4997.5 mV.
Pentru calibrare se poate utiliza si programul: CALIBRAT.HEX din directorul: SAMPLES.
Valorile ideale ale tensiunii de iesire sunt prezentate in tabelul urmator:
Valoarea inscrisa |
Unipolar (mV) 0V . - 5V |
Bipolar (mV) - 5V . 5V |
|
Pentru verificari se poate utiliza si programul exemplu din directorul: SAMPLES.
Decodificator
Toate componentele specificate (LCD, tastatura, porturi I/O, etc.) sunt comandate prin porturi de date, plasate intr-o zona de memorie de date, care nu este ocupata de memoria RAM principala a placii (zona se suprapune peste EPROM). Astfel, porturile microcontrolerului ramin libere pentru a fi folosite in alte aplicatii.
Selectia circuitelor de pe placa de extensie se realizeaza prin decodificarea magistralei de adrese cu ajutorul a 2 circuite 74HC138.
Jumperi de configurare
Permit diverse configurari pentru componentele specificate. Acestia sunt: C21, C25, C26, C27, C28.
In continuare se prezinta posibilitatile de configurare:
Jumper C21
Permite stabilirea domeniului tensiunii de iesire pentru canalul A al convertorului numeric-analogic:
- pentru unipolar, se alege pozitia 3-4
- pentru bipolar, se alege pozitia 1-2
Jumper C25
Permite stabilirea domeniului tensiunii de iesire pentru canalul B al convertorului numeric-analogic:
- pentru unipolar, se alege pozitia 3-4
- pentru bipolar, se alege pozitia 1-2
Jumper C26
Permite selectarea tensiunii de referinta pentru convertorul numeric-analogic:
- pentru tensiune de referinta de la un circuit plasat pe placa, se alege pozitia 1-2. Alimentarea
circuitului se face la conectorul C32
- pentru tensiune de referinta externa, se alege pozitia 2-3. Tensiunea externa se aduce la C31.
Jumper C27 - C28
Cei 2 jumperi permit configurarea celor 2 porturi de iesire de pe placa de baza.
Portul de iesire poate fi configurat cu jumper-ul C28.
Portul de iesire de putere poate fi configurat cu jumper-ul C27.
Pinii de output control ai celor 2 circuite 74HC374 folosite la realizarea porturilor de iesire, pot fi configurati in 2 moduri, astfel:
- legare la GND, caz in care iesirile sunt in permanenta active, prin pozitionare jumper in pozitia 3-4
- control din exterior, ceea ce permite trecerea in impedanta ridicata a iesirilor, prin pozitionare
jumper in pozitia 2-3. In acest caz, semnalul extern de control trebuie adus la pinul 1.
Schema bloc: SDM-PBEX01
C1 C2
Sursa de alimentare 5V Memorie RAM
32 k
Memorie EPROM 32 k
Decodificator,
logica
combinationala,
etc.
Latch adresa |
Microcontroler 80C552 |
EEPROM 512 octeti |
Selectia circuitelor
Zona de memorie de date, in care sunt plasate porturile de date pentru controlul circuitelor de pe placa de baza extinsa SDM-PBEX01, se selecteaza prin: P4.3 = 1.
Zona de memorie de date, in care sunt plasate cip-urile de memorie pentru achizitie de date de pe placa de extensie memorie PEM04, se selecteaza prin: P4.3 = 0.
Cele 2 zone de memorie nu pot fi active simultan si ele se suprapun ca adresa peste EPROM.
FFFFH
RAM
PRINCIPAL
32 Ko
8000H
EPROM
32 Ko
ZONA
PORTURI
0000H
In tabelul urmator se prezinta adresele la care sunt plasate porturile de date pentru controlul circuitelor de pe placa de baza extinsa SDM-PBEX01:
Daca EPROM-ul este la adresa 0000H |
Daca EPROM-ul este la adresa 8000H |
Operatie R/W |
|
Tastatura |
|||
Port de comanda |
0000H |
8000H |
W |
Port de date |
0000H |
8000H |
R |
Selectia grupelor (3) se face cu valorile: 02H, 04H, 08H pentru tastatura cu 12 taste |
|||
Selectia grupelor (4) se face cu valorile: 01H, 02H, 04H, 08H pentru tastatura cu 16 taste |
|||
Starea tastelor din grupa se citeste pe cei mai putin semnificativi 4 biti din octet |
|||
LCD |
|||
Port de comanda |
0001H |
8001H |
W |
Port de date |
0000H |
8000H |
W |
Liniile de control LCD se comanda cu valorile: 01H (RS), 02H (RW), 40H (EN) |
|||
Convertor DAC |
|||
Port de comanda |
0001H |
8001H |
W |
Port de date |
0000H |
8000H |
W |
Porturi I/O |
|||
Port de intrare |
0001H |
8001H |
R |
Port de iesire |
0003H |
8003H |
W |
Port de iesire putere |
0002H |
8002H |
W |
Schema conectorilor si a jumper-ilor de configurare
Placa de extensie memorie: PEM04
Cuprinde urmatoarele elemente:
- pina la patru cip-uri de memorie RAM - 32 Ko, pentru programe de achizitie de date
- decodificator, realizat cu un circuit 74HC138
- jumperi de configurare a adresei placii de baza (0-7)
Cip-urile de memorie RAM pentru achizitie de date sunt adresabile ca memorie de date si sunt plasate intr-o zona de memorie de date, care nu este ocupata de memoria RAM principala a placii (zona se suprapune peste EPROM). Selectia lor se face cu ajutorul a 4 linii din portul P4:
- P4.3 = 0, determina selectarea placii de extensie memorie
- P4.2, P4.1, P4.0, selecteaza unul dintre cip-urile de memorie RAM de pe placa
Adresa placii de baza se poate configura din 3 jumperi folosind 3 linii din portul P4:
- P4.6, P4.5, P4.4
Portul P4 este folosit pe placa de extensie memorie PEM04, deci el nu mai este disponibil pentru utilizator:
Schema bloc: PEM04 Configurarea adresei placii
BUS Extender
Este un modul separat care permite conectarea mai multor placi de baza la un singur PC (mini-retea).
Cuprinde urmatoarele elemente:
- cablu de alimentare 220V
- intrari pentru conectarea placilor de baza la modul si cablurile seriale corespunzatoare
- cablu serial special pentru conectarea modulului la PC
Trebuie respectata urmatoarea ordine la conectare / deconectare:
- la conectare, se porneste mai intii BUS Extender-ul si apoi se pornesc placile de baza
- la deconectare, se opresc mai intii placile de baza si apoi se opreste BUS Extender-ul.
Schema de conectare simpla - "Single board" (fara BUS Extender)
Schema de conectare multipla - "Multiple board" (cu BUS Extender)
Cap 3. Mediul integrat de dezvoltare
Generalitati
Placa de baza a sistemului de dezvoltare contine in EPROM programul monitor, care permite conectarea placii la un calculator personal PC. Monitorul comunica pe linia seriala cu programul principal de pe PC, executind toate comenzile cerute de acesta. De la un singur PC se poate lucra cu o placa (conectata direct) sau cu o retea de placi (conectate la modulul BUS Extender).
Programul principal al sistemului de dezvoltare este un pachet integrat care a fost gindit in asa fel incit sa optimizeze procesul de dezvoltare a programelor de aplicatie. Folosind acest program, utilizatorul are urmatoarele facilitati:
- incarcarea, editarea si salvarea programelor sursa, folosind editorul de text incorporat.
Editorul permite: folosirea tastelor si combinatiilor de taste uzuale pentru parcurgerea si editarea fisierelor text, folosirea operatiilor pe blocuri de text prin intermediul ferestrei intermediare Clipboard (Cut, Copy, Paste si Clear). Este un editor multi-fereastra, care permite deschiderea pentru editare a mai multe fisiere simultan, in ferestre separate, suprapuse (Cascade) sau alaturate (Tile). De asemenea, editorul permite folosirea operatiilor de cautare/inlocuire a sirurilor de caractere.
- apelarea programelor utilitare pentru generarea programului executabil.
Se poate lansa in executie compilatorul, asamblorul, linker-ul si alte programe utilitare selectate de utilizator, direct din programul principal. Pentru fiecare din aceste programe se poate specifica linia de comanda.
- incarcarea programului executabil pe placa si lansarea in executie.
Se poate incarca pe placa orice fisier in formatul .HEX. Dupa incarcare, programul poate fi executat pe placa. Se poate incarca un program simultan in mai multe placi, printr-o singura comanda de incarcare.
- depanarea programelor folosind Debugger-ul incorporat.
Debugger-ul lucreaza intr-o fereastra separata si permite folosirea unui set puternic de comenzi de depanare (afisarea/modificarea tuturor zonelor de memorie, dezasamblarea unor portiuni de memorie, etc). Modul de lucru Trace Mode permite executia pas cu pas a programelor, folosind puncte de intrerupere si alte facilitati.
- configurarea parametrilor programului.
Parametrii programului sunt setarile facute de utilizator. Acestea se salveaza la fiecare iesire din program si sunt refacute automat la urmatoarea pornire a programului. Pe linga parametrii programului se salveaza si desktop-ul curent (toate ferestrele deschise, atit ca dispunere pe ecran cit si ca dimensiune).
Interfata utilizator a programului este moderna, usor de utilizat si se bazeaza pe folosirea ferestrelor, a meniurilor, a casetelor de dialog, a butoanelor, a tastelor si a mouse-ului.
Descrierea meniurilor si a casetelor de dialog
Sunt disponibile 7 meniuri principale: File, Edit, Search, Tools, Project, Options si Window. Optiunile din aceste meniuri determina executarea unor actiuni sau afisarea unor casete de dialog. Sunt disponibile o serie de taste rapide (hot keys), pentru selectia optiunilor mai des folosite. Pe ultima linie a ecranului se afiseaza un mesaj de ajutor pentru utilizator (help contextual).
|
Meniul File
Este meniul pentru operatiile cu fisiere: crearea unui fisier nou, deschiderea pentru editare a unui fisier existent, salvarea unui fisier editat si salvarea fisierului cu un alt nume. Optiunea Save all permite salvarea tuturor fisierelor care sunt deschise in acel moment. Optiunea Change dir se poate folosi pentru schimbarea directorului curent, iar cu DOS Shell se poate iesi temporar in sistemul de operare DOS. Revenirea in program se face cu comanda DOS exit. Optiunea Exit determina terminarea programului. Selectia fisierului pentru deschidere se face printr-o fereastra de dialog ce afiseaza lista fisierelor. Se pot deschide mai multe fisiere simultan in editor. Fiecare fisier este incarcat intr-o fereastra separata. Trecerea de la o fereastra la alta se poate face cu tasta F6 (Next) sau cu Alt+n, unde n este numarul ferestrei dorite. La deschiderea fisierelor se face automat cascadarea ferestrelor (ferestrele se suprapun, dar bara de titlu pentru fiecare fereastra ramine vizibila).
|
|
Meniul Edit
Optiunea Undo permite anularea ultimei comenzi de editare. Meniul contine in continuare optiunile pentru operatiile cu blocuri folosind fereastra intermediara Clipboard (Cut, Copy, Paste si Clear). Aceste operatii lucreaza numai pe blocurile de text selectat (selectarea textului se poate face prin drag cu mouse-ul sau cu tastatura folosind Shift+sg.jos/sg.sus).
Fereastra Clipboard se poate deschide ca si orice alta fereastra de editare, folosind optiunea Show clipboard.
|
Meniul Search
Meniul Search contine operatiile de cautare/inlocuire a sirurilor de caractere.
Optiunea Find permite cautarea aparitiilor unui sir de caractere in cadrul fisierului. La cautare se poate face diferenta intre literele mari si mici (Case sensitive), si de asemenea se pot cauta grupuri de caractere din cuvinte sau doar cuvinte intregi (Whole words only).
Optiunea Replace permite cautarea si inlocuirea aparitiilor unui sir de caractere in text cu un alt text specificat. Inlocuirea se poate face automat sau cu confirmarea utilizatorului. De asemenea se poate inlocui prima sau toate aparitiile textului (Replace all).
Ultima operatie de cautare/inlocuire poate fi repetata folosind optiunea Search again.
|
Meniul Tools
Contine optiuni pentru lansarea in executie a programelor utilitare din familia 8051. Se pot lansa in executie utilitarele principale: compilatorul, asamblorul, linker-ul etc, precum si alte programe utilitare alese de utilizator pentru propriile necesitati. De asemenea se poate lansa in executie orice program DOS ales de utilizator.
Pentru fiecare din aceste programe se poate edita linia de comanda corespunzatoare folosind optiunea Parameters din meniul Options. La revenirea din programul utilizator (Run the User Selected Program), se restabileste automat comunicatia cu monitorul de pe placa de baza, deoarece programul executat poate altera programarea interfetei seriale a PC-ului (daca este un program gen procomm sau term95).
Optiunea Make permite automatizarea procesului de generare a fisierului program executabil (se apeleaza succesiv compilatorul, asamblorul, linker-ul si convertorul la formatul .HEX, sau numai o parte din aceste utilitare, in functie de valoarea parametrului Make din caseta de dialog Parameters).
Urmatoarele patru optiuni au o comportare mai speciala. Daca modul de lucru curent stabilit din meniul Options este Single Board, atunci aceste comenzi se refera numai la placa curenta (stabilita tot prin meniul Options). Daca modul de lucru este Multiple Boards, atunci comenzile se refera la placile selectate (in acest caz placile sunt legate la BUS Extender). Primele doua optiuni permit incarcarea pe placa (pe una dintre placi sau simultan pe mai multe placi), a unui fisier .HEX si lansarea in executie a acestuia. Optiunea Switch Address on the board permite comutarea adreselor pentru EPROM si RAM, iar optiunea Force Monitor restabileste comunicatia cu monitorul de pe placa (daca modul de lucru este Multiple Boards, atunci programul va executa comanda pe rind pentru fiecare placa selectata).
Optiunea Run the DEBUGGER lanseaza in executie intr-o fereastra separata Debugger-ul, care contine un set de comenzi de depanare/trasare pentru placa curenta.
Multe din optiunile din acest meniu se pot executa folosind tastele rapide afisate in dreapta optiunilor, sau butoanele din fereastra de butoane (daca aceasta este afisata).
|
Meniul Project
Meniul Project permite gruparea fisierelor sursa pentru aplicatiile mai mari care contin mai multe fisiere. La deschiderea unui project (care este de fapt un fisier text cu extensia .PRJ), se afiseaza in partea de jos a ecranului o mica fereastra care contine numele fisierelor care fac parte din project. Se pot adauga sau sterge fisiere din project (folosind optiunile din meniu, sau folosind tastele Insert si Delete). Un singur project poate fi deschis la un moment dat. Project-ul poate fi baleiat in sus si in jos. Daca se apasa tasta Enter sau daca se face dublu-click pe unul dintre fisierele din project, acesta este deschis intr-o fereastra de editare.
|
Meniul Options
Meniul Options permite configurarea unor parametrii ai programului, care se salveaza in fisierul PCMON.INI (din directorul curent) la iesirea din program. La urmatoarea executie a programului parametrii se incarca din acest fisier, sau vor primi valorile implicite in cazul cind fisierul nu exista in directorul curent. Primele 3 optiuni din acest meniu determina afisarea unor casete de dialog pentru setarea parametrilor, ce vor fi prezentate in continuare. Optiunile Select board Ax permit selectarea placii curente (fiecare placa are o adresa unica, intre 0-7).
Incarcarea/salvarea parametrilor, precum si a desktop-ului (ferestrele deschise), se poate face prin folosirea optiunilor Load Desktop si Save Desktop.
|
Caseta de dialog Parameters:
Caseta Port permite stabilirea portului serial folosit pentru comunicatia intre PC si placa de dezvoltare.
Caseta Baudrate permite modificarea ratei de transfer cu care este programata interfata seriala a PC-ului. Se poate opta pentru una din urmatoarele rate de transfer seriale: 1200, 2400, 4800, 9600(implicita), 19200 bauds. Aceasta facilitate poate fi folosita in combinatie cu comanda >run a Debugger-ului, pentru vizualizarea octetilor receptionati pe linia seriala (in cazul in care programul de aplicatie foloseste alta rata de transfer decit cea folosita de monitor). In celelalte situatii nu este recomandata schimbarea ratei de transfer implicite de 9600 bauds.
Comunicatia intre PC si monitorul de pe placa se realizeaza la viteza de 9600 bauds (fixa), deci aceasta rata de transfer seriala este refacuta automat de catre programul principal din PC in urmatoarele situatii:
- la pornirea programului
- la revenirea dupa executia programului utilizator
- la comenzile Force Monitor din programul principal sau din Debugger.
Caseta Make permite selectia programelor care vor fi apelate in cadrul optiunii Make din meniul Tools, pentru generarea programului executabil.
In continuare se pot introduce liniile de comanda complete pentru executia programelor utilitare.
In cadrul liniilor de comanda pentru compilator sau asamblor, in locul numelui fisierului sursa, poate fi utilizat simbolul %FILE. In acest caz fisierul sursa se poate selecta dintre fisierele deschise in editor, in momentul lansarii comenzii de compilare, asamblare sau Make. Exista o singura limitare, la Make, daca se executa si compilare si asamblare, atunci simbolul %FILE nu se poate folosi in ambele linii de comanda (un fisier sursa nu poate fi si compilat si asamblat).
|
Caseta de dialog Single Board:
Permite selectarea, in acelasi timp, a modului de lucru Single Board si a placii curente. Acest mod de lucru presupune ca placa (avind adresa corecta) este conectata direct la PC, prin intermediul cablului serial.
In partea de jos a casetei de dialog este afisat modul de lucru curent.
|
Caseta de dialog Multiple Boards:
Permite selectarea modului de lucru Multiple Boards. De asemenea se pot selecta individual placile folosite. Acest mod de lucru presupune ca placile selectate (cu adresele corecte) sunt conectate la modulul de extensie BUS Extender, care la rindul sau este conectat la PC, prin intermediul cablului serial.
Daca caseta Use only the current board nu este activata, atunci cele patru comenzi amintite din meniul Tools se refera la toate placile selectate. Daca in schimb caseta este activata, atunci comenzile se refera numai la placa curenta, indiferent de placile selectate in aceasta caseta de dialog.
In partea de jos a casetei de dialog este afisat modul de lucru curent.
|
Meniul Window
Acest meniu contine toate comenzile pentru gestiunea ferestrelor deschise. Unele ferestrele pot fi redimensionate (marite sau micsorate), pot fi mutate pe ecran in diverse pozitii. Folosind optiunea Next, ferestrele pot fi parcurse circular. Optiunile Cascade si Tile permit aranjarea ferestrelor pe ecran in doua moduri: suprapuse, respectiv alaturate. Cu Close all se pot inchide toate ferestrele deschise la momentul respectiv.
Optiunea Message, permite afisarea in partea de jos a ecranului a ferestrei de mesaje, care contine lista mesajelor de eroare/warning (erorile sunt marcate cu simbolul (E) iar warning-urile sunt marcate cu simbolul (W) la inceputul liniei), gasite in cadrul fisierului listing (.LST). Acest fisier este generat de compilator, daca in linia de comanda nu este specificata optiunea NOPRINT. Mesajele por fi baleiate in sus si in jos.
Optiunea Project, permite afisarea in partea de jos a ecranului a ferestrei project.
Optiunea Buttons, permite afisarea in partea din dreapta a ecranului ferestrei de butoane pentru operatiile principale necesare la dezvoltarea unei aplicatii: crearea sau deschiderea unui fisier sursa si editarea lui (butonul Open), compilarea (C51) sau asamblarea (A51), construirea fisierului .HEX (Make), incarcarea (Load) si executia programului pe placa (Run), depanarea (Debug), setarea parametrilor (Param), executia programului utilizator (User) si iesirea din program (Exit).
Meniul Help
Un help online al programului nu este (inca) disponibil. De aceea, optiunea Help sau apasarea tastei F1 determina afisarea doar a unei casete de informare.
Optiunea About afiseaza versiunea curenta a programului principal al sistemului de dezvoltare.
Cap 4. Debugger
Generalitati
|
Debugger-ul poate fi lansat in executie din meniul principal, selectind optiunea Run the Debugger din meniul Tools, sau prin folosirea tastei rapide F4. Dupa lansare, se afiseaza fereastra de lucru a Debugger-ului si prompter-ul. Este un program in mod linie, deci se introduce o comanda si se apasa tasta Enter. O noua comanda poate fi introdusa dupa aparitia prompter-ului. In timpul introducerii unei comenzi, sunt disponibile tastele uzuale de editare (sg stinga/dreapta, Home, End, Backspace, Delete). Tasta Enter executa comanda introdusa, iar tasta Escape abandoneaza comanda introdusa si afiseaza prompter-ul. Tasta F3 permite reafisarea ultimei comenzi introduse. Tastele F10 sau Alt+F3 permit inchiderea ferestrei de depanare si revenirea in meniul principal. In Debugger nu se poate folosi mouse-ul, ci doar tastatura.
Comanda >trace permite pornirea modului de lucru Trace Mode, care este un instrument puternic pentru depanarea programelor, permitind executia pas cu pas a instructiunilor din program, ignorarea unor instructiuni, executia pina la o adresa, utilizarea punctelor de intrerupere, dezasamblarea unor portiuni de memorie. Lista comenzilor disponibile in modul Trace Mode:
|
Descrierea comenzilor Debugger-ului
Descrierea completa a comenzilor din Debugger si Trace Mode, incluzind sintaxa si toate detaliile necesare, este prezentata in continuare
Toate comenzile Debugger-ului se refera numai la placa declarata ca placa curenta.
Toate adresele si valorile specificate ca si parametrii in cadrul comenzilor, trebuie introduse in format hexa cu 4 cifre (ex. 2000, 8010, etc.), sau cu 2 cifre (ex. 70, FF, 55, etc.), in functie de comanda folosita.
Comenzile pot fi introduse si cu litere mari si cu litere mici.
Quit Debugger/Trace Mode
Sintaxa:
> quit
> q
Comanda permite iesirea din Debugger/Trace Mode si revenirea in meniul principal al programului,respectiv Debugger. Iesirea este posibila si prin folosirea tastelor F10 sau Alt+F3.
Clear Screen
Sintaxa:
> cls
Comanda permite stergerea ecranului folosit de Debugger. Prompter-ul este afisat pe prima linie a ferestrei.
Display Help Messages
Sintaxa:
> help
> help comanda
Prima forma a comenzii afiseaza lista tuturor comenzilor disponibile in Debugger sau in modul Trace Mode, in functie de modul de lucru curent.
A doua forma afiseaza sintaxa corecta pentru comanda specificata.
Force Monitor
Sintaxa:
> fmon
Comanda permite restabilirea comunicatiei cu monitorul de pe placa curenta, daca aceasta a fost alterata din diverse motive (datorita modificarii valorilor reg. SFR utilizate de monitor, sau datorita lansarii in executie a unui program incorect).
Load Program
Sintaxa:
> lp fisier
Comanda permite incarcarea in RAM a unui program, dintr-un fisier .HEX (format Intel HEX).
Incarcarea programului se face de la adresa 8000H (cu translatare). Programul care se incarca trebuie locatat de la adresa 0000H (locatarea implicita facuta de linker), deoarece programul va fi executat de la adresa 0000H.
Tasta Escape permite intreruperea transmisiei.
Load Text
Sintaxa:
> lt fisier adresa
> lt fisier adresa separator
Comanda permite incarcarea in RAM la o anumita adresa, a unui text (succesiune de octeti), continut intr-un fisier text. Fisierul poate contine mai multe linii de text.
Diferenta intre cele 2 forme ale comenzii consta in caracterul care separa liniile in memorie.
In prima forma separatorul este caracterul '0'.
In a doua forma separatorul este caracterul specificat in comanda.
Tasta Escape permite intreruperea transmisiei.
Execute Program
Sintaxa:
> run
Comanda permite lansarea in executie a programului incarcat de la adresa 8000H in RAM. Executia se face prin resetarea sistemului si inversarea adreselor: RAM=0000H, EPROM=8000H. Programul se executa de la adresa 0000H, deci programul ce se incarca in RAM, trebuie locatat de la 0000H. Pentru oprirea executiei programului si revenirea in monitor, se apasa tasta Escape.
In timp ce programul este executat pe placa, ecranul PC-ului este folosit pentru afisarea caracterelor receptionate pe linia seriala, iar tastatura pentru transmiterea de caractere pe linia seriala. Modul de lucru este asemanator unui terminal simplu DAF. Detalii despre acest mod de lucru vor fi prezentate la descrierea comenzilor tmode, dmode si baud.
Acesta forma a comenzii este utila atunci cind programul incarcat in RAM transmite/receptioneaza date pe linia seriala.
Switch Address EPROM-RAM
Sintaxa:
> sadr
Comanda permite comutarea adreselor pentru EPROM si RAM. La fiecare comutare, starea led-ului rosu de pe placa de baza (D2) se inverseaza. Led-ul este aprins cind EPROM-ul este la adresa 0000H si este stins cind EPROM-ul este la adresa 8000H.
Comutarea adreselor se poate face si cu tasta de "Comutare memorie"(SW2) de pe placa de baza, dar acest lucru nu este indicat. Se recomanda ca pentru comutarea adreselor sa se foloseasca numai comenzile Debugger-ului (Ctrl + F9 si F8 in meniul principal, sau run si sadr in Debugger).
Display External Memory (CODE / XDATA)
Sintaxa:
> dx
> dx adresa
> dx adresa1 adresa2
Comanda permite vizualizarea intregii zone de memorie externa de program (EPROM) si de date (RAM). Afisarea se face in modul obisnuit de afisare a zonelor de memorie. Pe fiecare rind se afiseaza adresa, 16 octeti de date in format hexa apoi cei 16 octeti in format ASCII.
Prima forma a comenzii afiseaza 128 octeti incepind de la adresa 8000H, pe 8 rinduri.
A doua forma a comenzii afiseaza 128 octeti incepind de la adresa specificata.
A treia forma a comenzii afiseaza numai zona de memorie delimitata de cele doua adrese.
Afisarea se opreste automat la adresa FFFFH. Adresele specificate sunt rotunjte (inferior/superior) la o adresa multiplu de 16 si astfel se afiseaza numai rinduri complete, fiecare rind incepind de la o adresa multiplu de 16.
Daca comanda este utilizata pentru locatii din EPROM ea va afisa continutul acestuia (CODE), iar daca este utilizata pentru locatii din RAM, comanda afiseaza continutul RAM-ului (XDATA).
Tasta Escape permite intreruperea afisarii.
Afisarea poate fi oprita temporar prin apasarea oricarei taste, pina la o noua apasare.
Display External Ports (Port / XDATA)
Sintaxa:
> dp
> dp adresa
> dp adresa1 adresa2
Comanda permite vizualizarea zonei de memorie externa de date, suprapusa peste zona de adrese pentru EPROM. In aceasta zona de adrese sunt plasate porturile folosite pe placa: porturile pentru comanda LCD-ului, pentru citirea tastaturii, porturile de intrare si de iesire, etc., sau cip-urile de memorie externa pentru achizitie de date. Utilizatorul sistemului de dezvoltare poate plasa si alte porturi de date in aceasta zona de adrese, in functie de necesitati.
Afisarea, sintaxa si operarea sunt identice cu cele ale comenzii precedente.
Daca comanda este utilizata pentru locatii din EPROM ea va afisa continutul zonei porturilor de date (Port), iar daca este utilizata pentru locatii din RAM, comanda afiseaza continutul RAM-ului (XDATA).
Fill External Memory
Sintaxa:
> fx adresa1 adresa2 valoare
Comanda permite umplerea locatiilor incepind de la adresa1 pina la adresa2 inclusiv, cu valoarea specificata (00-FF).
Daca comanda este utilizata pentru locatii din EPROM ea va umple continutul zonei porturilor de date (Port), iar daca este utilizata pentru locatii din RAM, comanda umple continutul RAM-ului (XDATA).
Modify External Memory
Sintaxa:
> mx
> mx adresa
> mx adresa valoare1 [valoare2 valoare16]
Comanda permite modificarea interactiva a locatiilor din memoria externa.
Daca comanda este utilizata pentru locatii din EPROM ea va modifica continutul zonei porturilor de date (Port), iar daca este utilizata pentru locatii din RAM, comanda modifica continutul locatiilor RAM-ului (XDATA).
Prima forma a comenzii permite modificarea locatiilor incepind de la adresa 8000H.
A doua forma a comenzii permite modificarea locatiilor incepind de la adresa specificata.
Modificarea se face interactiv in sensul ca valoarea curenta a locatiei se afiseaza si utilizatorul poate introduce o noua valoare pentru acea locatie, poate trece la locatia urmatoare lasind locatia curenta nemodificata, sau poate abandona operatia in orice moment prin apasarea tastei Escape.
Tastele utilizate pentru editarea unei valori sunt:
- Escape - abandonarea operatiei
- Enter - dupa introducerea a 2 cifre hexa, determina modificarea locatiei curente
- Enter - inainte de introducerea a 2 cifre hexa, determina trecerea la locatia urmatoare fara
a modifica locatia curenta
- Backspace - stergerea unei cifre hexa
- cifra hexa - poate fi una din tastele 0-9, a-f sau A-F, pentru introducerea unei valori.
Daca locatia curenta a fost modificata, atunci in dreapta valorii introduse se va afisa urmatorul mesaj: "changed".
Cind se ajunge la adresa FFFH, se revine automat la adresa 8000H.
Ultima forma a comenzii permite modificarea a maximum 16 locatii de memorie succesive, incepind de la adresa specificata, cu valorile precizate in comanda.
Copy External Memory
Sintaxa:
> movx adresa1 adresa2 adresa3
Comanda permite copierea intregii zone de memorie delimitata de adresa1 si adresa2 inclusiv, la adresa3. Prin aceasta comanda se pot copia zone din EPROM in RAM, sau zone din RAM in RAM. Un caz deosebit este copierea la dreapta prin suprapunere (adresa3 este intre adresa1 si adresa2), care ar putea sa nu genereze rezultatul dorit.
Display Internal Memory (DATA / IDATA)
Sintaxa:
> dd
> dd adresa
> dd adresa1 adresa2
Comanda permite vizualizarea intregii zone de memorie interna a microcontrolerului
Prima forma a comenzii afiseaza 128 octeti incepind de la adresa 00H.
A doua forma a comenzii afiseaza 128 octeti incepind de la adresa specificata.
A treia forma a comenzii afiseaza numai zona de memorie delimitata de cele doua adrese.
Afisarea se opreste automat la adresa FFH.
Adresele cuprinse intre 00H - 7FH specifica locatii din DATA adresabile direct sau indirect, iar adresele 80H - FFH specifica locatii din IDATA adresabile numai indirect.
Tasta Escape permite intreruperea afisarii.
Afisarea poate fi oprita temporar prin apasarea oricarei taste, pina la o noua apasare.
Fill Internal Memory
Sintaxa:
> fd adresa1 adresa2 valoare
Comanda permite umplerea locatiilor incepind de la adresa1 pina la adresa2 inclusiv, cu valoarea specificata (00-FF). Comanda are efect numai pentru adrese intre 00H - FFH, ce specifica locatii din memoria interna.
Nu trebuie modificate locatiile din memoria interna folosite de programul monitor, deoarece se poate altera comunicatie intre PC si monitorul de pe placa.
Modify Internal Memory
Sintaxa:
> md
> md adresa
> md adresa valoare1 [valoare2 valoare16]
Comanda permite modificarea interactiva a locatiilor din memoria interna.
Comanda are efect numai pentru adrese intre 00H - FFH, ce specifica locatii din memoria interna.
Prima forma a comenzii permite modificarea locatiilor incepind de la adresa 80H.
Cind se ajunge la adresa FFH, se revine automat la adresa 80H.
Afisarea, sintaxa si operarea sunt identice cu cele ale comenzii mx.
Nu trebuie modificate locatiile din memoria interna folosite de programul monitor.
Copy Internal Memory
Sintaxa:
> movd adresa1 adresa2 adresa3
Comanda permite copierea intregii zone de memorie interna delimitata de adresa1 si adresa2 inclusiv, la adresa3.
Nu trebuie modificate locatiile din memoria interna folosite de programul monitor.
Display SFR (Special Function Registers)
Sintaxa:
> ds
> ds +
> ds registru1 [registru2 . registru10]
Comanda permite vizualizarea zonei de registre speciale SFR din memoria interna. Ea este o zona de 128 de octeti, plasata intre adresele 80H - FFH si accesata numai prin adresare directa. Contine un numar de 56 de registre SFR.
Prima forma a comenzii afiseaza toata zona de registre SFR, in acelasi format ca si comanda dd. Locatiile ocupate de registre sunt afisate intens, iar locatiile libere sunt afisate normal.
A doua forma a comenzii permite afisarea registrelor SFR sub forma de tabel cu 4 coloane. Pentru fiecare registru se afiseaza adresa, numele si valoarea curenta.
A treia forma a comenzii permite afisarea valorii numai pentru registele SFR specificate in comanda (se pot specifica maximum 10 registre SFR).
Numele registrelor SFR se poate introduce si cu litere mari si cu litere mici.
Modify SFR
Sintaxa:
> ms
> ms registru
> ms registru1 [registru2 . registru10]
Comanda permite modificarea interactiva a registrelor SFR.
Prima forma a comenzii permite modificarea registrelor in ordine incepind de la primul (P0 - 80H).
A doua forma a comenzii permite modificarea registrelor in ordine incepind de la cel specificat.
Cind se ajunge la ultimul registru (T3 - FFH), se revine automat la primul.
A treia forma a comenzii permite modificarea numai a registrelor specificate in comanda (se pot specifica maximum 10 registre SFR).
Numele registrelor SFR se poate introduce si cu litere mari si cu litere mici.
Operarea este identica cu cea de la comanda mx.
Nu trebuie modificate registrele SFR folosite de programul monitor.
Display EEPROM
Sintaxa:
> de
> de adresa
> de adresa1 adresa2
Comanda permite vizualizarea continutului EEPROM-ului (memorie nevolatila).
Prima forma a comenzii afiseaza 128 octeti incepind de la adresa 0000H.
A doua forma a comenzii afiseaza 128 octeti incepind de la adresa specificata.
A treia forma a comenzii afiseaza numai zona de memorie delimitata de cele doua adrese.
Afisarea se opreste automat la adresa 01FFH. Dimensiunea EEPROM-ului este de 512 octeti, deci numai adresele cuprinse intre 0000H - 01FFH sunt valide, specificind locatii din EEPROM.
Tasta Escape permite intreruperea afisarii.
Afisarea poate fi oprita temporar prin apasarea oricarei taste, pina la o noua apasare.
Fill EEPROM
Sintaxa:
> fe adresa1 adresa2 valoare
Comanda permite umplerea locatiilor EEPROM-ului, incepind de la adresa1 pina la adresa2 inclusiv, cu valoarea specificata (00-FF).
Modify EEPROM
Sintaxa:
> me
> me adresa
> me adresa valoare1 [valoare2 valoare16]
Comanda permite modificarea locatiilor EEPROM-ului.
Prima forma a comenzii permite modificarea locatiilor incepind de la adresa 0000H.
Cind se ajunge la adresa 01FFH, se revine automat la adresa 0000H.
Afisarea, sintaxa si operarea sunt identice cu cele ale comenzii mx.
Copy EEPROM
Sintaxa:
> move adresa1 adresa2 adresa3
Comanda permite copierea intregii zone de EEPROM delimitata de adresa1 si adresa2 inclusiv, la adresa3.
Unassembly Code
Sintaxa:
> list
> list adresa
> list adresa numar
Comanda permite dezasamblarea unei portiuni de memorie externa, deci afisarea continutului sub forma de instructiuni in limbaj de asamblare. Se poate dezasambla o portiune din memoria externa program (EPROM) sau din memoria externa de date (RAM). Afisarea se face in modul obisnuit de afisare a codului dezasamblat. Pe fiecare linie se afiseaza adresa, codul instructiunii 8051 (1-3 octeti), apoi mnemonicul intructiunii in limbaj de asamblare.
Prima forma a comenzii afiseaza 16 instructiuni de la adresa 8000H (implicit), sau de la adresa la care s-a ajuns printr-o instructiune list anterioara.
A doua forma a comenzii afiseaza 16 instructiuni incepind de la adresa specificata.
A treia forma a comenzii afiseaza numarul specificat de instructiuni de la adresa specificata.
Este foarte important ca adresa de start a dezasamblarii sa fie efectiv adresa de inceput a unei instructiuni. In acest caz intructiunile afisate sunt corecte, altfel unele instructiuni sau chiar toate pot sa nu fie corecte.
Tasta Escape permite intreruperea afisarii.
Afisarea poate fi oprita temporar prin apasarea oricarei taste. Afisarea continua numai dupa apasarea unei taste. Aceasta facilitate este utila in cazul comenzilor de dezasamblare lungi.
Start Trace Mode
Sintaxa:
> trace
Comanda permite pornirea modului de lucru Trace Mode.
Modul de lucru Trace Mode este un instrument puternic pentru depanarea programelor. El permite executia pas cu pas a instructiunilor din program, ignorarea unor instructiuni, executia pina la o adresa, utilizarea punctelor de intrerupere, dezasamblarea unor portiuni de memorie.
Acest mod de lucru este realizat folosind intreruperea externa INT1.
Pentru ca modul de lucru Trace Mode sa poata fi pornit, trebuie sa fie indeplinite 2 conditii:
- in primul rind, in RAM incepind de la adresa 8000H, trebuie sa fie incarcat programul utilizator,
care trebuie ca la inceputul sau sa contina un apel la functia de biblioteca care initializeaza
modul de lucru pas cu pas (vezi functia de biblioteca: asm_inittrace).
- in al doilea rind, trebuie pozitionat jumper-ul J17, pentru ca intreruperea externa sa poata fi
activata (INT1=GND).
In acest mod de lucru prompter-ul pentru introducerea comenzilor este o liniuta ('-').
Prima instructiune care se va executa in modul Trace Mode dupa pornirea acestuia, este prima instructiune din program aflata dupa apelul functiei: asm_inittrace.
Baudrate for run / tmode
Sintaxa:
> baud
> baud rata
Comanda permite stabilirea ratei de transfer seriale folosita in cadrul comenzilor run si tmode.
Prima forma a comenzii afiseaza rata de transfer curenta (acesta este implicit 9600 bauds).
A doua forma a comenzii stabileste rata de transfer la valoarea specificata (valorile permise sunt 1200, 2400, 4800, 9600 si 19200 bauds).
Rata de transfer specificata prin aceasta comanda are doar un efect local in cadrul comenzilor run si tmode. La intrarea in aceste comenzi se programeaza interfata seriala cu rata de tranfer stabilita prin comanda baud, iar la iesire se restabileste automat rata de transfer implicita de 9600 bauds, folosita de programul monitor.
Comanda este utila atunci cind se testeaza programe de aplicatie care comunica serial cu alte rate de transfer decit 9600 bauds.
Display Mode
Sintaxa:
> dmode
> dmode asc
> dmode hex
> dmode echo
Comanda permite stabilirea modului de afisare pe ecran a caracterelor receptionate sau transmise pe linia seriala, in cadrul comenzilor run si tmode.
Modul de afisare implicit este ascii, fara ecou local.
Prima forma a comenzii afiseaza programarea curenta.
A doua forma a comenzii stabileste modul de afisare ascii. Caracterele se afiseaza in format caracter, iar receptionarea caracterului 'r' (0DH), determina trecerea afisarii pe o linie noua.
A treia forma stabileste modul de afisare hexa. Caracterele se afiseaza in format hexa cu 2 cifre si sunt separate printr-un spatiu (ex. 05 06 FF A1 etc). Se afiseaza 25 de octeti pe o linie. Caracterul 'r'nu are nici un efect.
Ultima forma a comenzii permite folosirea ecoului local. Caracterele care se transmit pe linia seriala datorita apasarilor de taste, se afiseaza si pe ecran. Pentru a putea distinge caracterele receptionate de cele transmise (cu ecou local), acestea din urma se afiseaza mai intens.
La fiecare comanda dmode echo, starea ecoului se inverseaza (on, off, on .).
Simple Terminal Mode
Sintaxa:
> tmode
Comanda permite folosirea ecranului si a tastaturii PC-ului in modul de lucru terminal simplu. Functionarea este asemanatoare cu cea a unui terminal DAF. Caracterele receptionate pe linia seriala sunt afisate pe ecran in format ascii sau hexa (modul de afisare este stabilit prin comanda dmode asc sau dmode hex), iar cu ajutorul tastaturii se pot transmite caractere pe linia seriala, cu sau fara ecou local (facilitate stabilita prin comanda dmode echo).
Rata de transfer seriala se poate stabili prin comanda baud. La intrarea in tmode, se programeaza interfata seriala cu rata de transfer specificata, iar la iesirea din tmode se revine automat la rata de transfer folosita de monitor.
Iesirea din modul de lucru terminal simplu se face prin apasarea tastei Escape (codul tastei Escape se transmite si el pe linia seriala).
Comenzile run si tmode sunt asemanatoare, cu singura diferenta ca la run se efectueaza in plus si comutarile de memorie necesare pentru pornirea si oprirea programului utilizator.
Select Current Board
Sintaxa:
> board adresa
Comanda permite selectia placii curente folosite, prin specificarea adresei placii. Prin intermediul modulului BUS Extender, se pot lega la PC mai multe placi simultan (max.8), fiecare placa avind o adresa unica (0-7), dar Debugger-ul poate dialoga la un moment dat numai cu una dintre placi, si anume cu placa declarata curenta.
Urmatoarele comenzi sunt disponibile numai in modul de lucru Trace Mode
Execute one instruction
Sintaxa:
> t
Comanda poate fi folosita numai in modul de lucru Trace Mode.
Comanda determina executia unei singure instructiuni din program, dupa care se afiseaza pe 2 linii continutul registrelor SFR mai importante si continutul bank-ului 0. Pe a treia linie se afiseaza adresa curenta continuta in PC (program counter), codul si mnemonicul instructiunii curente
(instructiunea urmatoare celei care a fost executata).
Folosind aceasta comanda programul se poate executa pas cu pas si dupa fiecare instructiune executata se poate urmari modificarea registrelor SFR, a memoriei interne si externe.
Skip one instruction
Sintaxa:
> skip
Comanda poate fi folosita numai in modul de lucru Trace Mode.
Comanda permite ignorarea instructiunii curente, care nu va fi executata. Apoi se afiseaza instructiunea urmatoare celei care a fost ignorata.
Execute portion of code
Sintaxa:
> go
> go adresa
Comanda poate fi folosita numai in modul de lucru Trace Mode.
Comanda permite executia unor portiuni de cod din program.
Prima forma a comenzii permite executia programului incepind de la instructiunea curenta. Aceasta forma a comenzii trebuie folosita in combinatie cu stabilirea unor puncte de intrerupere, in care programul sa se opreasca.
A doua forma a comenzii permite executia programului incepind de la instructiunea curenta, pina la instructiunea de la adresa specificata (exclusiv), unde programul se opreste. Se afiseaza continutul registrelor SFR si instructiunea curenta in acelasi format ca si la comanda t. Aceasta forma a comenzii este echivalenta cu prima forma, daca adresa specificata este mai mare decit 7FFFH (adresele corecte sunt cuprinse intre 0000H si 7FFF, specificind locatii din RAM). Trebuie ca adresa specificata in comanda sa fie efectiv adresa de inceput a unei instructiuni.
Set / delete a breakpoint address
Sintaxa:
> break
> break numar
Comanda poate fi folosita numai in modul de lucru Trace Mode.
Comanda permite stabilirea unor puncte de intrerupere pentru program (maxim 2). Cind executia ajunge la adresa unde este stabilit un punct de intrerupere, programul se opreste si punctul de intrerupere este sters automat.
Modul de stabilire al punctelor de intrerupere este asemanator modului de lucru al comenzilor de modificare memorie (ex. mx, dx).
Prima forma a comenzii permite stabilirea/stergerea pe rind a tuturor punctelor de intrerupere.
A doua forma a comenzii permite stabilirea/stergerea numai a punctului de intrerupere specificat.
Pentru fiecare punct de intrerupere se afiseaza numarul, adresa curenta (daca punctul de intrerupere este stabilit) sau none (daca punctul nu este stabilit). Se poate introduce adresa unde programul se va opri (in format hexa, cu 4 cifre, folosind tastele de editare precizate la comanda mx), sau se poate introduce adresa FFFFH daca se doreste stergerea punctului de intrerupere.
Daca punctul de intrerupere a fost modificat, atunci in dreapta adresei introduse se afiseaza mesajul "changed", iar daca punctul de intrerupere a fost sters, atunci mesajul este "deleted".
Trebuie ca adresa specificata in comanda sa fie efectiv adresa de inceput a unei instructiuni.
Cap 5. Biblioteca de functii
Generalitati
Programatorul de aplicatii pentru sistemul de dezvoltare, are la dispozitie o importanta biblioteca de functii C pentru gestiunea principalelor resurse ale placii. Functiile din biblioteca pot fi apelate din programele de aplicatie scrise in limbajul C sau in limbaj de asamblare (respectind regulile de interfatare C/asamblare).
Biblioteca de functii se afla in directorul: LIB.
Fisierul: AP_LIB.H , este fisierul header care contine toate declaratiile si prototipurile de functii necesare pentru utilizarea bibliotecii. El trebuie inclus in programele de aplicatie:
#include ".LIBAP_LIB.H"
Biblioteca contine module .OBJ. Astfel:
LIB_UART.OBJ - functii pentru intirzieri, interfata seriala, initializare timer T0
LIB_EEP.OBJ - functii pentru memoria nevolatila EEPROM (I2C)
LIB_LCD.OBJ - functii pentru afisajul cu cristale lichide LCD
LIB_KEYB.OBJ - functii pentru tastatura
LIB_PORT.OBJ - functii pentru porturile de intrare/iesire, buzzer, intrarile analogice (ADC)
LIB_DAC.OBJ - functii pentru convertorul numeric-analogic (DAC)
LIB_ASM.OBJ - functii pentru initializarea modului de lucru Trace Mode
De asemenea este disponibil un modul .LIB, obtinut prin combinarea tuturor modulelor .OBJ intr-o singura biblioteca (folosind programul utilitar LIB51):
AP_LIB.LIB - biblioteca de functii pentru sistemul de dezvoltare
Aceste biblioteci (modulele .OBJ sau .LIB), trebuie legate de modulele programului de aplicatie in faza de link-editare (folosind programul utilitar L51).
Exemple de programe se afla in directorul: SAMPLES.
Fiecare din sub-directoarele directorului SAMPLES contine cite un program exemplu care foloseste functii din biblioteca de functii.
De asemenea aici se afla si fisierele: MAKE.BAT - pentru obtinerea programului executabil .HEX si PCMON.INI - pentru initializarea mediului integrat.
Acestea programe exemplu pot fi incarcate pe placa si testate, iar ulterior pot fi modificate si folosite ca model pentru dezvoltarea programelor proprii.
In directorul SAMPLES se afla si fisierul: UPDATE.BAT, care permite actualizarea tuturor programelor exemplu (compilare, link-editare si conversie la formatul .HEX).
Descrierea functiilor de biblioteca
Functii pentru intirzieri, interfata seriala, initializare timer T0
void Delay(unsigned miliseconds)
Functia genereaza o intirziere, exprimata in milisecunde, programabila prin parametrul de intrare miliseconds. Intirzierile sunt aproximative si vor fi ceva mai mari in cazul cind in program sunt activate unele intreruperi.
void uart_InitSerial(void)
Functia initializeaza interfata seriala a microcontrolerului, cu parametrii standard folositi si de programul monitor: modul 3, comunicatie multiprocesor, 9600 bauds, 11 biti de date, timer-ul T1 genereaza rata de transfer, nu genereaza intrerupere.
unsigned char uart_Transmit(unsigned char Data)
Functia transmite pe linia seriala octetul Data, daca transmisia este posibila (TI=1). Returneaza 1 daca octetul a fost transmis, 0 in caz contrar.
unsigned char uart_Receive(unsigned char *Data)
Functia receptioneaza un octet de pe linia seriala, daca receptia este posibila (RI=1). Returneaza 1 si memoreaza octetul receptionat in parametrul Data daca octetul a fost receptionat, si returneaza 0 in caz contrar.
void uart_Message(unsigned char *Text, unsigned miliseconds)
Functia transmite pe linia seriala sirul de caractere Text (terminat cu '0'), cu o pauza programabila intre caractere, specificata in milisecunde prin parametrul miliseconds.
void timer_InitTimer0(void)
Functia initializeaza si porneste timer-ul T0 in modul 1, timer pe 16 biti, genereaza intrerupere la 10 milisecunde. Daca se foloseste aceasta functie in program , atunci programul trebuie sa contina si rutina de intrerupere pentru timer-ul T0. De exemplu:
Timer0() interrupt 1
void timer_Delay(unsigned miliseconds)
Functia genereaza o intirziere, exprimata in milisecunde, programabila prin parametrul de intrare, folosind pentru masurarea intirzierii timer-ul T0. Intirzierea este exacta daca miliseconds este un multiplu de 10 milisecunde. Pentru ca functia de intirziere sa functioneze corect, este necesar ca timer-ul T0 sa fie pornit, iar in cadrul rutinei de intrerupere sa se apeleze functia:
delay_Update();
void timer_Update(void)
Functia trebuie sa fie prima instructie din rutina de intrerupere pentru timer-ul T0.
Ea reincarca valorile programate in registrele timer-ului la initializare si deasemenea reseteaza timer-ul T3 (watchdog).
void delay_Update(void)
Functia trebuie apelata numai din rutina de intrerupere pentru timer-ul T0, daca in programul de aplicatie se foloseste functia: timer_Delay. Ea asigura incrementarea contorului necesar pentru masurarea intirzierii programate.
Functii pentru memoria nevolatila EEPROM (I2C)
void eeprom_INIT(void)
Functia initializeaza interfata I2C a microcontrolerului.
unsigned char eeprom_READ(unsigned cellAddress)
Functia citeste si returneaza continutul locatiei din EEPROM, de la adresa specificata prin parametrul cellAddress (adrese valide 0-511).
void eeprom_SEQUENTIAL_READ(unsigned cellAddress,
unsigned char *bufData,unsigned cellsCounter)
Functia citeste continutul a cellsCounter locatii din EEPROM, incepind de la adresa cellAddress. Octetii se memoreaza succesiv in buffer-ul bufData.
void eeprom_WRITE(unsigned cellAddress,unsigned char cellData)
Functia scrie octetul cellData in locatia din EEPROM de la adresa cellAddress.
void eeprom_PAGE_WRITE(unsigned pageAddress,unsigned char *bufData)
Functia scrie 16 octeti din buffer-ul bufData in EEPROM succesiv, incepind de la adresa cellAddress.
Functii pentru afisajul cu cristale lichide LCD
void lcd_InitDisplay(void)
Functia initializeaza afisajul cu cristale lichide cu urmatorii parametrii: interfata de 8 biti, format 2 linii, matrice caracter 5*7.Toate celelalte functii pentru display pot fi folosite numai dupa initializarea lui. Dupa initializare, afisajul este sters, afisarea este activata, cursorul este pozitionat in prima pozitie caracter de pe prima linie a afisajului si este dezactivat.
void lcd_InitDisplay_1(bit font)
Functia permite initializarea unui afisaj cu cristale lichide cu o singura linie de caractere.
Functia initializeaza afisajul cu cristale lichide cu urmatorii parametrii: interfata de 8 biti, format 1 linie, matrice caracter 5*7 daca font este 0, sau matrice caracter 5*10 daca font este 1.
void lcd_CursorAtHome(void)
Functia muta cursorul pe linia 1, in pozitia caracter 1.
void lcd_BlinkOn(void)
Functia activeaza afisarea cursorului de tip bloc caracter intermitent.
void lcd_BlinkOff(void)
Functia dezactiveaza afisarea cursorului de tip bloc caracter intermitent.
void lcd_CursorOn(void)
Functia activeaza afisarea cursorului de tip linie continua (se afiseaza sub caracter).
void lcd_CursorOff(void)
Functia dezactiveaza afisarea cursorului de tip linie continua.
void lcd_DisplayOn(void)
Functia activeaza afisarea pe ecran a continutului memoriei interne a display-ului.
void lcd_DisplayOff(void)
Functia dezactiveaza afisarea pe ecran a continutului memoriei interne a display-ului. Mesajele nu se afiseaza pe ecran, dar se incarca in memoria interna a display-ului.
void lcd_MoveCursor(unsigned char Line,unsigned char x)
Functia muta cursorul pe linia Line (1-2), in pozitia caracter x (1-40). Cursorul trebuie activat in prealabil.
void lcd_ShiftCursorRight(void)
Functia deplaseaza cursorul cu o pozitie caracter la dreapta.
Din pozitia 40 a liniei 1, cursorul trece in pozitia 1 a liniei 2.
Din pozitia 40 a liniei 2, cursorul trece in pozitia 1 a liniei 1.
void lcd_ShiftCursorLeft(void)
Functia deplaseaza cursorul cu o pozitie caracter la stinga.
Din pozitia 1 a liniei 2, cursorul trece in pozitia 40 a liniei 1.
Din pozitia 1 a liniei 1, cursorul trece in pozitia 40 a liniei 2.
void lcd_ShiftDisplayRight(void)
Functia deplaseaza afisarea pe ecranul display-ului cu o pozitie caracter la dreapta in cadrul memoriei interne.
void lcd_ShiftDisplayLeft(void)
Functia deplaseaza afisarea pe ecranul display-ului cu o pozitie caracter la stinga in cadrul memoriei interne.
void lcd_WriteString(unsigned char Line,unsigned char x,unsigned char *Buffer) reentrant
Functia afiseaza sirul de caractere Buffer pe linia Line, incepind din pozitia caracter x a liniei. Mesajul poate aparea pe ecranul display-ului complet sau incomplet in functie de display-ul folosit (cu 16, 24 sau 40 de caractere pe linie).
void lcd_Write(unsigned char Line,unsigned char *Message)
Functia afiseaza mesajul Message pe linia Line, incepind din pozitia caracter 1 a liniei.
void lcd_ClearScreen(void)
Functia sterge complet ecranul display-ului.
De fapt se scrie caracterul 'blank' in toate locatiile din memoria interna a display-ului.
Functii pentru tastatura
void keyb_InitKeyboard(bit beeps,bit autorepeat)
Functia initializeaza tastatura. Prin parametrul beeps se poate programa functionarea in cazul apasarii unei taste invalidate prin masca KeyMask (functia keyb_ScanKeyboard) si anume: daca beeps are valoarea 1, atunci la apasarea tastei invalidate se genereaza 3 beep-uri scurte. Daca beeps este 0, atunci la apasarea tastei invalidate nu se genereaza nici un sunet.
Prin parametrul autorepeat se poate programa functionarea autorepeat-ului la apasarea mai lunga a unei taste. Daca autorepeat este 1 facilitatea este activata, altfel ea este dezactivata.
unsigned keyb_ScanKeyboard(unsigned KeysMask)
Functia scaneaza tastatura pentru determinarea apasarilor de taste. Functia trebuie apelata in bucla. Se considera ca o tasta a fost apasata, daca ea a fost apasata pentru cel putin 60 de milisecunde.
Apasarile mai scurte se considera ca au fost perturbatii si se ignora.
Prin parametrul KeysMask se pot valida sau invalida anumite taste. Se foloseste cite un bit pentru fiecare tasta (12 biti). Daca un anumit bit este pe 1, atunci tasta corespunzatoare este validata. La apasarea unei taste validate se genereaza un beep scurt. La apasarea unei taste invalidate, functionarea este stabilita la initializarea tastaturii prin functia: keyb_InitKeyboard.
Functia returneaza tasta apasata (bitul corespunzator din valoarea returnata este pe 1), dar numai in cazul in care tasta este validata.
Nu se permite apasarea a mai multe taste simultan.
La apasarea mai lunga a unei taste validate, poate exista facilitatea de autorepeat, daca ea e fost programata la initializarea tastaturii prin functia: keyb_InitKeyboard.
Interpretarea tastelor depinde de tastatura folosita. Se pot folosi tastaturi cu 12 taste, organizate in 3 grupe de 4 taste. In fisierul ap_lib.h, trebuie selectata configuratia corespunzatoare, sau trebuie creata o noua configuratie daca cele existente nu corespund tastaturii folosite.
Pentru ca functia de scanare sa functioneze corect, este necesar ca timer-ul T0 sa fie pornit, iar in cadrul rutinei de intrerupere sa apeleze functia:
keyb_Update();
void keyb_WaitKey(unsigned Key)
Functia permite oprirea unui program pina la apasarea unei taste. Daca parametrul Key este 0, atunci functia asteapta apasarea oricarei taste. Daca parametrul Key este diferit de 0, atunci functia asteapta apasarea tastei specificate prin Key.
void keyb_Update(void)
Functia trebuie apelata numai din rutina de intrerupere pentru timer-ul T0, daca in programul de aplicatie se foloseste tastatura. Ea asigura incrementarea contoarelor necesare pentru scanarea tastaturii.
Functii pentru porturile de intrare/iesire, buzzer, intrarile analogice (ADC)
void mem_Select(unsigned char N)
Functia selecteaza unul din cele 4 cip-uri de memorie externa pentru achizitie de date, in functie de parametrul N (0-3). Fiecare cip de memorie are dimensiunea de 32 Ko si toate sunt plasate la aceeasi adresa (suprapuse peste EEPROM). Cel mult un cip de memorie poate fi selectat la un moment dat.
Daca un cip de memorie este selectat, atunci zona de porturi I/O este deselectata.
void port_Select(void)
Functia selecteaza zona de porturi I/O (folosite pentru afisaj, tastatura, porturi de intrare/iesire etc).
Aceasta zona are dimensiunea de 32 Ko si este suprapusa ca adresa peste EEPROM.
Daca zona de porturi I/O este selectata, atunci toate cip-urile de memorie externa pentru achizitie de date sunt deselectate.
unsigned char inp_ReadPort(void)
Functia returneaza un octet care reprezinta valoarea curenta citita din portul de intrare.
void outp_WritePort(unsigned char Value)
Functia scrie octetul Value in portul de iesire.
void outp_WritePort_1(unsigned char Value)
Functia scrie octetul Value in portul de iesire de putere.
void buser_Frequence(unsigned char Frequence)
Functia porneste buzzer-ul, cu un anumit ton stabilit prin parametrul Frequence.
De fapt, se genereaza pe iesirea PWM0 a microcontrolerului, un semnal periodic, dreptunghiular, cu factor de umplere ½ si frecventa stabilita de Frequence (valoarea se incarca in registrul PWMP).
void buser_ON(void)
Functia porneste buzzer-ul, prin apelul functiei buser_Frequence.
void buser_OFF(void)
Functia opreste buzzer-ul.
void buser_Beep(unsigned miliseconds)
Functia genereaza un beep cu durata programabila prin parametrul miliseconds.
Nu se altereaza sunetul buzzer-ului stabilit cu functia buser_Frequence.
void buser_Beeps(unsigned miliseconds,unsigned char beeps)
Functia genereaza un numar de beeps beep-uri cu durata programabila prin miliseconds.
Nu se altereaza sunetul buzzer-ului stabilit cu functia buser_Frequence.
void buser_Blink(void)
Functia permite generarea unor semnale intermitente pe buzzer. La fiecare apel se inverseaza starea
buzzer-ului. Pentru a obtine un semnal intermitent, functia trebuie apelata periodic, dar numai dupa ce in prealabil a fost pornit buzzer-ul.
unsigned char adc_ReadInput(unsigned char Address,unsigned *Result)
Functia citeste una din intrarile analogice a portului P5, stabilita prin parametrul Address (0-7), realizeaza conversia analog-numerica, depune rezultatul (10 biti) in parametrul Result, apoi returneaza 1 daca operatia a reusit, sau 0 in caz contrar.
Functii pentru convertorul numeric-analogic (DAC)
void dac_Clear(void)
Functia sterge toate registrele interne ale convertorului.
void dac_WriteChannel_A(unsigned Data)
Functia inscrie valoarea parametrului Data in canalul A al convertorului.
void dac_WriteChannel_B(unsigned Data)
Functia inscrie valoarea parametrului Data in canalul B al convertorului.
void dac_WriteChannels(unsigned DataA, unsigned DataB)
Functia inscrie valoarea parametrului DataA in canalul A al convertorului, iar valoarea parametrului DataB in canalul B al convertorului.
Functie pentru initializarea modului de lucru Trace Mode
void asm_inittrace(void)
Functia este scrisa in limbaj de asamblare si permite initializarea modului de lucru Trace Mode, mod de lucru in care programele utilizator pot fi testate prin executie pas cu pas si puncte de intrerupere. Functia realizeaza urmatoarele operatii: initializeaza interfata seriala cu parametrii standard folositi de programul monitor (vezi functia uart_InitSerial), sterge registrele bank-ului 0, iar in final initializeaza si activeaza intreruperea externa INT1, care este folosita pentru executia pas cu pas. Programele care se doresc a fi executate in acest mod, trebuie sa contina la inceput un apel la acesta functie:
Exemplu pentru limbajul C
#include <reg552.h>
#include ".libap_lib.h"
void main(void)
Exemplu pentru limbajul de asamblare
extrn code (asm_inittrace)
start:
mov sp, #0D0h ; initializarea SP pentru apelul lui asm_inittrace
lcall asm_inittrace ; initializarea modului de lucru Trace Mode
instructiune ; prima intructiune a programului care va fi executata
.
end
Prima instructiune care se va executa in modul Trace Mode dupa pornirea acestuia, este prima instructiune din program aflata dupa apelul functiei asm_inittrace.
Pentru ca modul de lucru Trace Mode sa poata fi pornit, pe linga cele precizate mai sus, trebuie pozitionat un jumper in conectorul J7 (sau J14), intre INT1 - GND.
Politica de confidentialitate |
.com | Copyright ©
2024 - Toate drepturile rezervate. Toate documentele au caracter informativ cu scop educational. |
Personaje din literatura |
Baltagul – caracterizarea personajelor |
Caracterizare Alexandru Lapusneanul |
Caracterizarea lui Gavilescu |
Caracterizarea personajelor negative din basmul |
Tehnica si mecanica |
Cuplaje - definitii. notatii. exemple. repere istorice. |
Actionare macara |
Reprezentarea si cotarea filetelor |
Geografie |
Turismul pe terra |
Vulcanii Și mediul |
Padurile pe terra si industrializarea lemnului |
Termeni si conditii |
Contact |
Creeaza si tu |