Un sistema de desarrollo basado en el
miroontrolador 80592 on preproesador para
ontrol borroso
Autor: Avelino Herrera Morales
Tutor: Juan Albino Mendez Perez
24 de septiembre de 2002
Departamentode Fsia Fundamentaly Experimental,Eletroniay Sistemas
Centro Superior de Informatia
D. JUAN ALBINO MENDEZ PEREZ, Dotor en Informatia y profesor del Centro
Superior de Informatia de laUniversidad de La Laguna.
CERTIFICA:
Que D. Avelino Herrera Morales ha realizado bajo mi direion el presente proyeto,
on ttulo "Miroy: UN SISTEMA DE DESARROLLO BASADOEN EL
MICRO-CONTROLADOR 80592 CON PREPROCESADOR PARA CONTROL BORROSO".
Con esta feha, autorizola presentaion delmismo.
La Laguna, Septiembre de 2002.
A mispadres.
A minovia.
Indie General
1 Introduion 6
1.1 Objetivos . . . 6
1.1.1 Elsistema hardware en torno al80592 . . . 7
1.1.2 Elemulador ROM . . . 7 1.1.3 Elontrolador borroso . . . 7 1.2 Motivaiones . . . 8 2 El miroontrolador 9 2.1 El80592 . . . 9 2.2 Registros. . . 11 2.3 Organizaionde la memoria . . . 12 2.3.1 Memoriade programa . . . 13 2.3.2 Memoriade datos . . . 13 2.4 Puertosde entrada/salida . . . 16 2.5 Modos de direionamiento. . . 16 2.5.1 Direionamientoinmediato . . . 16 2.5.2 Direionamientodireto . . . 17
2.5.5 Direionamientoindireto indexadoporregistro . . . 18
2.5.6 Direionamientode bit . . . 18
2.6 Repertoriode instruiones. . . 18
2.6.1 Instruiones de transferenia . . . 19
2.6.2 Instruiones aritmetias . . . 20
2.6.3 Instruiones logias . . . 20
2.6.4 Instruiones booleanas. . . 20
2.6.5 Instruiones de ruptura de seuenia . . . 21
2.7 Lassalidas PWM . . . 21
2.8 ElADC . . . 23
2.9 Timers . . . 24
2.9.1 Lostimers 0 y 1. . . 24
2.9.2 Eltimer 2 . . . 26
2.9.3 Eltimer wath dog . . . 27
2.10 Interrupiones . . . 28
2.11 LaUART . . . 29
2.12 ElontroladorCAN inluido . . . 31
2.12.1 Elprotoolo CAN. . . 31
2.12.2 Conexionado del80592 on un bus CAN . . . 34
2.12.3 Programaiondelbus CAN en el80592 . . . 35
3 El sistema de desarrollo basio 39 3.1 Alimentaion . . . 39
3.3 Ciruitode reset . . . 41
3.4 LamemoriaFlash . . . 41
3.5 LaRAM . . . 42
3.6 Conexionadode lasmemoriasal 80592 . . . 43
3.7 Conexionde un onversor DA al prototipo . . . 44
3.8 Programaiondelprototipo . . . 46
3.8.1 Eltimer wath dog del80592 . . . 47
3.8.2 Puertos adiionales . . . 49
3.8.3 Vetores de interrupionadiionales . . . 49
3.9 Algunosodigos de ejemplo . . . 50
3.9.1 Conversion analogio digital . . . 50
3.9.2 Multipliaionde 16bits . . . 52
4 El emulador de FlashROM 56 4.1 Implementaiondel emuladorde FlashROM . . . 57
4.2 LaAPI del emulador . . . 60
4.3 Elsoftware para el emulador . . . 63
5 Miroy Fuzz : Apliaion de ontrol borroso 65 5.1 Elsoftware . . . 65
5.1.1 Lagramatiadel lenguaje fuzz . . . 68
5.2 Elejemplo de apliaion . . . 70
5.2.1 Conexionado de lagruaon elMiroy . . . 71
5.3 Utilizaionde fuzz en lazos de ontroltradiionales . . . 77
5.3.1 Lasoluion hardware . . . 79
5.3.2 Lasoluion software . . . 80
A El ompilador SDCC 82
B El software del emulador: ihxwrite e ihxtest 112
B.1 ihxwrite . . . 112
B.2 ihxtest . . . 115
Indie de Tablas
2.1 Organizaionde la memoriade datos del 80592 . . . 14
2.2 Funiones alternativaspara ada uno de lospuertosdel 80592 . . . 17
2.3 Instruiones de transferenia en la RAM interna . . . 19
2.4 Instruiones de transferenia en la RAM externa y auxiliar . . . 19
2.5 Instruiones aritmetias . . . 20
2.6 Instruiones logias . . . 21
2.7 Instruiones booleanas. . . 22
2.8 Instruiones de salto inondiional . . . 23
2.9 Instruiones de salto ondiional . . . 23
2.10 Instruiones quemodian losindiadores o banderas . . . 24
2.11 Elregistro de ontrolTMOD (0x89) . . . 25
2.12 ElSFR TM2CON (direion0xEA) . . . 26
2.13 ElSFR CTCON (0xEB) . . . 26
2.14 ElSFR TM2IR (0xC8) . . . 27
2.15 ElSFR STE (0xEE) . . . 27
2.16 ElSFR RTE (0xEF) . . . 28
2.17 Vetores de interrupiondel8051 y del80592 . . . 29
2.20 ElSFR IP0 (direion0xB8) . . . 30
2.21 ElSFR IP1 (direion0xF8) . . . 31
2.22 ElSFR SCON (0x98) . . . 31
3.1 Pines de alimentaiondelmiroontrolador . . . 40
4.1 Pines del puerto paralelo . . . 58
4.2 Datos(direionBASE). Letura/Esritura. . . 58
4.3 Estado(DireionBASE + 1).Sololetura. . . 58
Indie de Figuras
2.1 Pines del 80592 . . . 10
2.2 Enapsuladodel 80592 . . . 11
2.3 Mapa de memoriadel 8x592 . . . 12
2.4 Organizaionde la RAM prinipaldel80592 . . . 15
2.5 Modelo de transmisionsobre un bus basadoen una AND ableada . . . 32
2.6 Conexionadoentre el80592 y el transeptor CAN82250 . . . 35
2.7 Enapsuladodel transeptorCAN 82250 . . . 35
2.8 Detalledel80592 (izquierda)onetado al 82250(dereha) . . . 36
3.1 Ciruitode reset . . . 41
3.2 Enapsuladodel 29F010(FlashROM) . . . 42
3.3 Enapsuladodel 62256(RAM estatia) . . . 43
3.4 Demultiplexaionde los buses del80592 . . . 44
3.5 Enapsuladodel 74573(lathtriestado) . . . 45
3.6 Elsistema basio . . . 45
3.7 Esquemadel montaje delDACon elpuerto P4 . . . 46
3.8 Enapsuladodel 741 (ampliadoroperaional) . . . 46
3.9 Enapsuladodel DAC08 (DAC) . . . 47
4.2 EmuladorFlashROM . . . 57
4.3 Elemulador de FlashROM . . . 60
5.1 Ejemplode omo sedenen losonjuntos difusos . . . 66
5.2 Esquemade lagruaon laarga olgante . . . 71
5.3 Ciruitoparaaondiionar lase~nalprovenientedelsensor delangulode la arga . . . 73
5.4 Controlde posiiony anguloon desplazamiento. . . 76
5.5 Controlde posiiony anguloon osilaiones de laarga . . . 76
5.6 Osilaionlibre de laarga . . . 77
5.7 Controlde posiionon desplazamiento . . . 77
5.8 Fotografade todoel onjunto . . . 78
5.9 Lazo de ontrolutilizado . . . 78
5.10 Lazo de ontroltradiional . . . 79
5.11 Restadoranalogio en laentrada delmiroontrolador. . . 79
Introduion
Enelpresenteproyetosehaimplementadounsistemahardware ysoftwarede desarrollo
basado en el miroontrolador 80592. Los modulos basios del sistema desarrollado son
el miroontrolador,los modulos de memoriaRAM (32 Kbytes), el modulo de memoria
ROM (128 Kbytes) y un onversor DA para dotar al sistema de salidas analogias.Para
failitarel desarrollo y la depuraion de apliaiones sobre el miroontrolador tambien
seha implementadoun emuladorde FlashROM apartir de memoriasRAM.
Ademas de la implementaionhardware delprototipo,en este proyeto seha
desarro-lladouna apliaionpara implementarontroladores borrososen elsistemade desarrollo.
Para ellosereo un tradutor de lenguaje, para traduirodigo de altonivel (on elque
sedeneelontroladorborroso) alenguaje C. Comoapliaionseonsideroelontrolde
un prototipo aesala de un puente de grua.
1.1 Objetivos
A ontinuaionse enumeranlos objetivosplanteados en este proyeto:
1. Contruion de un sistema hardware basado en el proesador 80592 de la familia
MCS51.
2. Construion de un emulador ROM para agilizar el desarrollo de software para el
prototipo.
3. Implementaion de un ontroladorborroso en elprototipo.
Elprototipodesarrolladoesun sistemasenilloon unaonguraionbasiaformadapor
el proesador, una memoria FlashROM para odigo y una memoria RAM estatia para
datos. Las entradas y salidas de este sistema se orresponden on las entradas y salidas
propiasdel miroontrolador(entradas y salidas digitalesy varias entradasanalogias).
El miroontrolador 80592 esta basado en la familia de miroontroladores de 8 bits
MCS51 de Intel y se ompone de un nuleo basio de un 8051 al que se le han a~nadido
8entradas analogias,2 salidasPWM, un interfae de bus CAN2.0A, un timer adiional
de proposito general (T2) y un timer de wathdog (T3).
Este sistema hardware onstruido alrededor del 80592 posee 32 Kbytes de memoria
RAMdedatosy64KBytesdememoriaFlashdeprograma.Elprototiposehaompletado
on la inlusion de un onversor digital-analogio que permite disponer de una salida
analogia.
Esto resulta espeialmenteutil para la implementaionde lazos de ontrol.
1.1.2 El emulador ROM
Para failitareldesarrolloy ladepuraionde apliaionespara el80592,sehaa~nadidoun
emuladordeFlashROM.Dihodispositivoemulaelfunionamientodeuna memoriaash
29F010,tratandose,enrealidad,deunamemoriaRAMalimentadadeformaindependiente
y esribible desde un PC. El emulador permite emular una ROM de 32 Kbytes al estar
onstruido alrededor de una RAM estatia 62256.
Un emulador ROM permite aliviar la arga fsia de desarrollo al poder estar el
pro-totipo permanentemente en ontato on un PC desde el que se vuela el odigo para
ser ejeutado. De esta formaevitamos el uso de memoriasFlashROM para el proeso de
depuraion, utilizando pastillas de memoria no volatil solo para grabar programas para
suexplotaion.
1.1.3 El ontrolador borroso
Despues de la implementaion hardware de los dos puntos anteriores en el proyeto se
planteoeldesarrollodeuna soluionsoftware paraontrolborroso.Dihoontrolborroso
se aplio a un prototipo de grua (ontrol de posiion y ontrol de las osilaiones de la
arga olgante).
Elobjetivo de laimplementaioneselontrolde posiiondelprototipode grua
simul-taneado on un ontrolde lasosilaiones de la arga,prourando queesta semantenga
Existen multiplessistemasde desarrolloen elmerado basadosen miroontroladores de
lafamiliaMCS51.En este asose haoptadopor lafabriaiondesdeero, de un sistema
de desarrollo utilizandoplaas de prototipos.Al interespropio de desarrollar un sistema
deontrolborrososelea~nadeelhehode implementarloen unsistemapeque~node8bits,
El miroontrolador
Enesteaptulodesribiremoselfunionamientoylasaraterstiasdelmiroontrolador
80592:Repertoriodeinstruiones,organizaiondelamemoria,modosde
direionamien-toque soporta yotrasaraterstiasadiionalestalesomoelonversoranalogio-digital
queposee, lassalidas PWM,lostimers, lasfuentes de interrupiony elontroladorCAN
integradoen elhip, ompatibleon larevision2.0A delprotoolo.
2.1 El 80592
A prinipios de losa~nos 80, Intel introdue el miroontrolador8051 (perteneiente a la
familia MCS51). Se trata de un miroontrolador fabriado, en su version original, on
tenologa HMOS. Tanto el 8051, omo otros miroontroladores (8048, 8031, 8052, et)
formanpartedelallamadafamiliaMCS51.Dihafamiliade proesadoresestaonstruida
alrededor de un nuleobasio (denominado n uleo 8051)on funionalidadesadiionales
a~nadidassegun laversion.
La familiaMCS-51 seenuentra muy extendidaen elampoindustrial, habiendo
mu-hos automatas y tarjetas hip onstruidos on ellos (por itar algunos ejemplos). Por
otro ladoIntelrmoauerdos de produionon otras empresas tales omo Oki,Philips,
SiemensoSignetisparaqueestaspudiesenfabriarmiroontroladoresnuevosutilizando
el nuleo basio del 8051 (a~nadiendole DACs, ADCs, ontroladores de buses tales omo
elI2C, elCAN, et)
En nuestro aso se ha utilizadoel miroontrolador 80592de Philips Semiondutors.
Setrata,pues,de unproesadorbasadoen elnuleo8051de Intel(totalmente ompatible
a nivel software on su anteesor de Intel) al que se le ha a~nadido una interfaz CAN,
8 entradas analogias multiplexadas y un ADC de 10 bits, 6 puertos E/S de 8 bits, 15
fuentes de interrupionon 2 niveles de prioridady on una freuenia de reloj de entre
1.8 y 16MHz. Cada uno de los bits de lospuertos posee una funion alternativaa parte
XTAL2
/PWM0
/PWM1
AVref+
AVref−
STADC
XTAL1
CVss
Vss
Vdd
/EA
/PSEN
ALE
CRX0
CRX1
REF
AVss
AVdd
RST
/EW
P5.0
P5.1
P5.2
P5.3
P5.4
P5.5
P5.6
P5.7
P4.0
P4.1
P4.2
P4.3
P4.4
P4.5
P4.6
P4.7
ADC0
ADC1
ADC2
ADC3
ADC4
ADC5
ADC6
ADC7
CMSR0
CMSR1
CMSR2
CMSR3
CMSR4
CMSR5
CMT0
CMT1
funciones alternativas
P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
AD0
AD1
AD2
AD3
AD5
AD6
AD7
CT0 / INT2
CT1 / INT3
CT2 / INT4
CT3 / INT5
T2
RT2
CTX0
CTX1
AD4
P2.0
P2.1
P2.2
P2.3
P2.4
P2.5
P2.6
P2.7
A8
A9
A10
A11
A12
A13
A14
A15
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7
RXD / DATA
TXD / CLOCK
/INT0
/INT1
T0
T1
/WR
/RD
Parte baja del bus de direcciones
y bus de datos
Parte alta de bus de direcciones
funciones alternativas
8x592
Figura2.1: Pines del80592
El 80592, al igual que todos los suesores del 8051, es un miroontrolador de 8 bits,
on una ALU de 8 bits que permite realizar algunas operaiones de 16 bits
(multipli-aion y division) y algunas ooperaiones de 1 bit (mediante direionamiento de bit,
operaiones logias).Existeseparaionlogia entre losdatosy lasinstruionesaun
sien-do el bus de datos y de direiones omun a ambos mundos. Posee multiples modos de
direionamiento:
Inmediato.
Direto.
Por registro.
Indiretoporregistro.
Indiretoindexado por registro.
De bit.
A lolargode este aptulo seiraprofundizandoen ada una de lasaraterstias de este
P4.3 / CMSR3
P4.4 / CMSR4
P4.5 / CMSR5
P4.6 / CMT0
P4.7 / CMT1
RST
P1.0 / CT0I / INT2
P1.1 / CT1I / INT3
P1.2 / CT2I / INT4
P1.3 / CT3I / INT5
P1.4 / T2
P1.5 / RT2
CVss
P1.6 / CTX0
P1.7 / CTX1
P3.0 / RXD
P3.1 / TXD
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
AVdd
P5.7 / ADC7
P5.6 / ADC6
P5.5 / ADC5
P5.4 / ADC4
P5.3 / ADC3
P5.2 / ADC2
P5.1 / ADC1
P5.0 / ADC0
Vdd
STADC
/PWM0
/PWM1
/EW
P4.0 / CMSR0
P4.1 / CMSR1
P4.2 / CMSR2
5
6
7
8
9
4
3
2
1
68
67
66
65
64
63
62
61
/PSEN
ALE
/EA
P0.7 / AD7
P0.6 / AD6
P0.5 / AD5
P0.4 / AD4
P0.3 / AD3
P0.2 / AD2
P0.1 / AD1
P0.0 / AD0
REF
CRX1
CRX0
AVref−
AVref+
AVss
46
45
44
47
48
49
50
51
52
53
54
55
56
57
58
59
60
P2.5 / A13
P2.6 / A14
P2.7 / A15
P2.4 / A12
P2.3 / A11
P2.2 / A10
P2.1 / A9
P2.0 / A8
Vss
XTAL1
XTAL2
P3.7 / /RD
P3.6 / /WR
P3.5 / T1
P3.4 / T0
P3.2 / /INT0
P3.3 / /INT1
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
80C592
43
Figura2.2: Enapsulado del80592
2.2 Registros
Enel 80592, aligual que en elresto de ongeneres de la familiaMCS51, losregistros del
proesador se enuentran mapeados en la memoria RAM interna. Se pueden difereniar
entre 2 tiposde registros:
Registrosde funion espeial.
Registrode bano.
Dentro de los 256 bytes de memoria RAM prinipal interna del 80592, los registros de
funionespeialseenuentran enlos128 ultimosbytesuandoseaeden mediante
dire-ionamientodireto.Son estosSFRs losquepermitenelaesoapuertos, alaumulador,
al registro de multipliaion, et. A medida que se vayan expliando las apaidades
propiasdel miroontroladorse iraprofundizando en el resto de SFRs que posee.
Porotroladotenemoslosregistrosdebano.El80592posee4banosderegistros,ada
banoon 8 registros: R0a R7,y alojadosen la partebaja de laRAM priniaplinterna.
Solo un bano puede estar ativo en un instante determinado. Estos registros de bano
son de utilidadgeneraly sololos R0y R1de ada bano tienenomo utilidadespeialel
El miroontrolador permite direionar 64 Kbytes de memoria de programa externa,
posee256bytesdememoriaRAMinternadelosualeslos128primerossondireionables
de formadireta e indireta, mientras que los 128 restantes solo son direionables
indi-retamente (ver gura 2.3). Existe, ademas, una zona de memoria superpuesta a esta
zonade aeso indiretoyque ontienelosSFR (Speial Funtion Registers). Cuando
re-alizamosun aesoindiretoaedemosalaRAMinternaindiretayuandohaemos un
aeso direto aedemos a los SFR. Este proesador posee un tipo de direionamiento
adiional a los tradiionales, que es el direionamiento de bit. Diho direionamiento
soloesapliablea algunaszonasde losSFR (elpuerto P0,porejemploestarepresentado
en la RAM interna por un SFR situado en la direion 80h y, ademas sus bits P0.0 a
P0.7 pueden ser aedidos de forma individual mediante direionamiento de bit en las
direiones 80h a87h).
65535
16384
16383
0
(EA = 1)
(EA = 0)
interna
externa
externa
indirecto
indirecto
0
127
255
256
65535
INTERNA
EXTERNA
MEMORIA DE PROGRAMA
MEMORIA DE DATOS
RAM
auxiliar
(indirecto)
SFRs
(directo)
directo e
principal
RAM
espacio solapado
Figura 2.3: Mapa de memoriadel8x592
Sila RAM internano essuiente paranuestraapliaion, esposibledotar alsistema
de una RAM externa. El unio inonveniente de esta RAM externa es que,aparte de ser
maslentaporrazonesobvias,soloesposibleaederaellamediantelainstruionMOVX.
Noesposiblerealizar,portantooperaionesdiretamentesobrevariablesalojadasen esta
RAM.
La RAM auxiliaraunque es interna, no se trata omo tal, ya que es una zona de 256
bytes de RAM direionables omo si de una RAM externa se tratase, esto es: al
dire-ionar un dato en la memoria RAM externa entre la direion 0 y la 255 aederemos
realmente a la RAM auxiliar (alojada fsiamente dentro del miroontrolador),
mien-tras que si direionamos datos de la RAM externa entre la direion 256 y la 65535
aederemosa la RAMexterna y fsiamenteexterna.
Todala familiade miroontroladores MCS51 posee un bus de datos y de direiones
partealtadelbusde direiones,mientrasqueelpuerto0(bitsP0.0aP0.7)en unprimer
momento del ilo del bus india la parte baja del bus de direiones (on el pin ALE
(addresslath enable)a1)y en un segundomomentodeliloemite/lee los8 bitsdelbus
de datos (on el pin ALE a 0).Es preiso, por tanto, uandose va aesribir o a leer un
datoounainstruionatravesdelbus, "reordar"elvalorquetenanlos8bitsmasbajos
de la direion.
Medianteun lathmontadodiretamentealasalidadelpuertoP0podemosalmaenar
en ada ilo de bus el valor de la parte baja del bus de direiones simplemente on
onetar la salidaALE del miroontroladora laentrada LE (Lath Enable) dellath.
2.3.1 Memoria de programa
Algunosmodelosde 80592(enonreto losmodelos83592)poseen 16Kbytesde memoria
ROMdeprogramadentrodelpropiohip.Elmodeloquesehautilizadoeselmodelo80592
que no posee esta memoria. Esto signia que el hip depende, para su funionamiento
de una memoria externade programa.
El pin etiquetado omo /EA (ver gura 2.1) permite indiar al miroontrolador de
dondedebeleer losprimeros16Kbytesde memoriade programa(/EA =0,parautilizar
una pastilla externa, y /EA = 1 para utilizar la ROM interna; ver la gura 2.3). En
nuestro aso se ha ongurado el pin /EA permanentemente a 0, ya que se trata de un
modelosinROMinternay,desde elprimerbyte,elodigodebeser leidodesdeelexterior
del miroontrolador.
Elvetorderesetsesituaenladireion0x0000ylosvetoresdeinterrupionsesituan
enlasdireiones0x0003,0x000B,0x0013,0x001B... yassuesivamentehastaompletar
los 15vetores de interrupion soportadosporel miroontrolador.La pratia habitual
onsisteen oloar en ladireion0x0000una instruion"ljmp funion_main"para as
dejarlibres lasentradas de los vetores de interrupion. De esta manera, al ser el vetor
0x0000eldereset,uandosereiniieelproesadorseejeutaraestainstruion"ljmp"que
hara una salto hasta el programa prinipal a ejeutar (si oloasemos diretamente el
odigo prinipal a partir de la direion 0x0000 no podr
iamos utilizar los vetores de
interrupionque omienzan asi inmediatemente, a partir de la direion 0x0003).
2.3.2 Memoria de datos
Lamemoria de datos del80592 esta organizada segun semuestraen latabla 2.1.
La RAMprinipal puedeser aedida tanto de formadireta omo indireta,la RAM
auxiliar solo puede ser aedida mediante la instruion MOVX, omo si fuese RAM
Direto Indireto
Interna Prinipal 256 bytes 0a 127 X X R0 y R1
128 a 255 { X
Auxiliar 256 bytes 0a 255 { X R0, R1y DPTR
SFRs 128 bytes 128 a 255 X { {
Externa { 65280 bytes 256 a 65535 { X R0,R1 y DPTR
Tabla 2.1: Organizaion de lamemoria de datos del80592
MOVX mas alla de los 256 bytes de esta RAM auxiliar. En el 8051 original no existe
RAM auxiliary laRAM externa es aedida desde ladireion 0x0000.
La RAM interna
LaRAM interna esta divididaen 3 bloques:
La RAM prinipalde 256 bytes. Los 128 primeros direionables direta e
indire-tamente, y los128 ultimos direionablessolode forma indireta.
LosSFRoregistrosdefunionespeialalosqueseaedemediante
direionamien-todireto de los128 ultimosbytesde laRAM prinipal.
La RAM auxiliar a la que solo se puede aeder mediantela instruion MOVX y
quehae las vees de RAM externa dentrodelhip, de 256 bytesde tama~no.
Enlos primeros128 bytesde laRAM interna prinipal(direionables tantode forma
diretaomo indireta) nos enontramoson varias zonas:
Entre la direion 0x00 y la 0x1F hay 4 banos de registros, on 8 registros por
bano(elbano0entre 0x00y 0x07,elbano1entre 0x08y 0x0F,elbano2 entre
0x10y0x17,yelbano3entre 0x18y 0x1F).Cadaunodelosregistrosde unbano
sedenominan R0 aR7 y solopuede haberun bano ativo en ada instante.
Entre ladireion0x20y la 0x2F hayuna zona de 128 bits direionablea nivel de
bit(direiones de bitentre 0x00y 0x7F). Para uso general.
Entre la direion0x30y la 0x7F, 80bytespara uso general.
Enlagura2.4podemosverun graoquemuestralaorganizaionde laRAMinterna
prinipaldel miroontrolador.
Entre ladireion0x80 y la 0xFFy direionablesde forma direta,tenemos losSFR
o Speial Funtion Registers. Se trata de una serie de registros espeiales que poseen
Banco de registros 3
Banco de registros 2
Banco de registros 1
R7
R0
R7
R0
R7
R0
R7
16 bytes direccionables mediante
direccionamiento de bit
(128 bits: direcciones 0x00 a 0x7F)
80 bytes de usuario
128 bytes accesibles mediante
direccionamiento indirecto
(registros R0 y R1)
Direccionamiento de bit
(ACC, DPTR, SP, P0...P5, etc)
mediante direccionamiento directo
128 bytes de SFRs accesibles
0x08
0x0F
0x10
0x17
0x18
0x1F
0x07
0x00 R0
Banco de registros 0
0x20
0x2F
0x30
0x7F
0x80
0x80
0xFF
0xFF
directo o indirecto
Direccionamiento
directo o de bit
Direccionamiento
y mediante direccionamiento
de bit
(128 bits: direcciones 0x80 a 0xFF)
Figura2.4: Organizaionde la RAM prinipaldel80592
SP en 0x81: El puntero de pila.
DPL en 0x82:Parte baja del registropuntero DPTR.
DPH en 0x83:Parte altadelregistro puntero DPTR.
PSW en 0xD0: La palabra de estado del proesador. Posee los prinipales ags del
proesadordireionablesa nivel de bit:
Bit7 (CY) en 0xD7:Bit de aarreo.
Bit6 (AC) en 0xD6: Aarreo auxiliarpara BCD.
Bit5 (F0) en 0xD5:Bit de usuario.
Bit4 (RS1) en 0xD4:Bit 1 de seleion de bano.
Bit3 (RS0) en 0xD3:Bit 0 de seleion de bano.
Bit2 (OV) en 0xD2: Indiadorde desbordamiento.
Bit0 (P) en 0xD0: Indiadorde paridad.
Mediantelosbits RS0y RS1seleionamosquebanode registros(0a3)deseamos
B en 0xF0:Registro para multipliaiony division.
Hay que se~nalar que, aunque el registro del aumulador es el ACC, en el odigo
en-sambladorseutiliza elmnemonio"A"para haerrefereniaal aumulador.Para elresto
de registrosde funionespeial elnombre delregistrooinideon sudenominaionenel
odigo ensamblador.
Tenemos ademasun SFR porada puertodel miroontrolador,para elontrolde los
timers, para el ontrolde las omuniaiones CAN, para elontrol de laUART, para la
leturade lasentradas analogias, y ason todas laspeuliaridadespropias delhip.
El 80592 basa su ompatibilidad on el 8051 original en el heho de que los registros
heredadosdeesteultimoestanalojadosenlasmismasdireiones,ylosnuevosSFRspara
lasnuevas apaidades del80592 simplementesehan oloado en loshueos dejados por
Intel en esta zona de memoria.
El listado detallado de los registros de funion espeial del 80592 as omo su
fun-ionamiento y modo de empleo se pueden onsultar on detalle en la hoja de datos del
miroontrolador.
2.4 Puertos de entrada/salida
El 80592 posee 6 puertos de entrada/salida, etiquetados omo P0,P1, P2, P3, P4 y P5.
Los uatro primeros puertos (P0 al P3) son los mismos del 8051 original. Cada uno de
los6puertossepuedeutilizaromopuertoestandarbidireionalytambienomopuerto
espeial para determinados propositos (aeder a una memoria de odigo y/o de datos
externa, aeder a una lnea serial, et). Ver latabla 2.2.
2.5 Modos de direionamiento
El80592 posee un nuleo8051 y,portanto,todos losmodos de direionamientoson los
mismosque losde su anteesor.
2.5.1 Direionamiento inmediato
En el propio odigo de instruion es donde se enuentra el operando (memoria de
0 E/S Parte baja delbus de direiones
y bus de datos para memoriasexternas
1 E/S Entradas de aptura deltimer 2y
entradas de interrupionINT2 a INT5
Entradaevento deltimer 2 Desde un ontador externo
Entrada de reset deltimer 2 De un iruitode reset externo
Salida 0del ontrolador CAN
Salida 1del ontrolador CAN
2 E/S Parte altadelbus de direiones
3 E/S Entrada serial ala UART
Salida serialde laUART
Petiioninterrupion0
Petiioninterrupion1
Entrada timer 0 Entradaspara onteo
Entrada timer 1
Se~nal/WR para lamemoriaexterna
Se~nal /RDpara la memoriaexterna
4 E/S Comparaiony set/reset Salidas de omparaionde timer 2
5 E 8 analesde entrada del ADC
Tabla 2.2: Funiones alternativas para ada uno de los puertosdel80592
mov b,#47 ; arga en el SFR b el valor 47
mov a,#CONSTANTE ; arga en el aumulador el valor CONSTANTE
2.5.2 Direionamiento direto
Loque serefereniaen este aso es unadireiondireta dentro de laRAM prinipaldel
80592.
mov a,0x83 ; arga en el aumulador el valor ontenido en la dir 0x83
2.5.3 Direionamiento por registro
Losoperandos son registros delbano de registrosativo.
mov a,r0 ; arga en el aumulador el ontenido del registro r0
En este tipo de direionamiento se utiliza el ontenido de los registros R0 y R1, omo
puntero para argaro guardardatos dentrode laRAM interna.
mov r0,#0x40 ; arga el valor 0x40 en R0
mov a,r0 ; arga en el aumulador el ontenido del byte 0x40
2.5.5 Direionamiento indireto indexado por registro
Mediante este modo de direionamiento solo podemos aeder en modo letura a la
memoria de programa y la unia instruion que permite realizarlo es la instruion
MOVC A,A+reg_base, siendo reg_base DPTR (el puntero de uso general de 16 bits)
oPC (elontador de programa).
in a ; inrementamos a para ompensar la instruion ret
mov a,a+p ; a es argado on un 0x10 si a valia 0 antes del in
ret
db 0x10
db 0x18
db 0x49
2.5.6 Direionamiento de bit
Permite direionaralgunas zonas de lamemoria RAMprinipal as omo algunaszonas
de los SFR anivelde bit.
mov ,p2.7 ; esribe el bit 7 del puerto 2 en el bit CY
orl ,#0x02 ; CY := CY OR (bit de la direion 0x02)
anl ,/p4.1 ; CY := CY AND (inversa del bit 1 del puerto 4)
mov 0x33, ; Esribe en la direion de bit 0x33 el bit CY
2.6 Repertorio de instruiones
Elrepertorio de instruiones del80592 es de 256 instruiones (elmismo repertorioque
SonlasinstruionesqueutilizanlosmnemoniosMOV, PUSH,POP,XCH, XCHD,MOVXyMOVC.
En la tabla 2.3 se enuentran relaionados mnemonios de instruiones de movimiento
de datos que afetan aoperandos de la memoriaRAM interna (no la auxiliar).
LasinstruionesPUSHyPOPempujanosaan,respetivamente, delapilaunoperando
de tipo byte. Es preiso se~nalar que el puntero de pilaes un registro de funion espeial
(SFR) alojado en la direion 0x81 y que, tras el reset, se iniializa a 0x07 on lo que
se oloainiialmente justoporenima del bano de registros0; es posible, sin embargo
situar la pila del sistema donde queramos on tan solo esribir el valor deseado en este
registro. SP se inrementa antes de poner el dato (al haer un PUSH) y se derementa
despuesde saar eldato (POP).
Enlatabla2.4tenemoslasinstruionesdemovimientodedatosqueafetanalaRAM
auxiliary ala RAM externa al miroontrolador.
Ademas de las instruiones arriba itadas, existen un par de instruiones mas que
permitenreogerdatosde lamemoriade programa.LasinstruionesMOVC A,A+DPTR y
MOVC A,A+PC, argan en elaumuladorel valoralmaenadoen ladireionA+DPTRo
A+PC de lamemoriade programa.
Mnemonio Direionamiento Notas
Dir Ind Reg Inm
MOV A,<orig> x x x x MOV <dest>,A x x x MOV <dest>,<orig> x x x x MOV DPTR,#dato16 x PUSH <orig> x POP <dest> x
XCH A,<byte> x x x Interambialosvalores
XCHD A,Ri x Interambiaelnibble bajo
Tabla 2.3: Instruiones de transferenia en laRAM interna
Mnemonio Notas
MOVX A,Ri A :=valorapuntado porRi
MOVX Ri,A Posiionapuntada porRi :=A
MOVX A,DPTR A :=valorapuntado porDPTR
MOVX DPTR,A Posiionapuntada porDPTR := A
Las instruiones aritmetias estan agrupadas en los mnemonios ADD, ADDC, SUBB, INC,
DEC, MUL, DIVy DA. En la tabla2.5 sepuede observar eluso de estos mnemonios.
Notese el heho de que existen dos instruiones de suma y solo una de resta. La
instruionADDrealizaunasumasintenerenuentaelaarreo,mientrasquelainstruion
ADDC realiza la suma teniendo en uenta el indiador de aarreo (para realizar sumas
onseutivas o de preision mayor que 8 bits). Para restar existe una unia instruion
SUBB que siempre tiene en uenta el aarreo; esto es, uando queramos haer una resta
sin tener en uenta el aarreo deberemos borrar el indiador de aarreo a mano por si
estuviese ativado de anterioresoperaiones.
Mnemonio Direionamiento Notas
Dir Ind Reg Inm
ADD A,<byte> x x x x ADDC A,<byte> x x x x SUBB A,<byte> x x x x INC A INC <byte> x x x INC DPTR DEC A DEC <byte> x x x MUL AB B,A 16 := A B DIV AB A :=A /B, B :=A modB
DA A Ajuste deimalsobre BCD
Tabla 2.5: Instruiones aritmetias
2.6.3 Instruiones logias
Enla tabla 2.6se enumeran lasinstruiones logias queposee el80592.
2.6.4 Instruiones booleanas
En la tabla 2.7 estan enumeradas todas las instruiones booleanas del 80592 entre las
que seinluyen algunossaltos ondiionales. Destaar de entre todas las instruionesla
JBC bit,rel, que permite relizar un salto ondiional a la direionrel si el bit bitse
enuentraa1.Siseenuentraauno, proedearealizarelsalto y, ademas,ponea 0elbit
Dir Ind Reg Inm
ANL A,<byte> x x x x A := A and valor
ANL <byte>,A x
ANL <byte>,#dato x
ORL A,<byte> x x x x A := A orvalor
ORL <byte>,A x
ORL <byte>,#dato x
XRL A,<byte> x x x x A := A xorvalor
XRL <byte>,A x
XRL <byte>,#dato x
CLR A A := 0
CPL A A := not A
RL A Rotaiona la izquierdade A
RLC A Como RL pero on aarreo (CY)
RR A Rotaiona la dereha de A
RRC A Como RR pero on ararreo (CY)
SWAP A Interambianibbles altoy bajo
Tabla 2.6: Instruiones logias
2.6.5 Instruiones de ruptura de seuenia
Dentro de este grupo entran las instruiones de salto tanto ondiional omo
inondi-ional. Dentro de las instruiones de salto inondiional (ver la tabla 2.8) destaar la
instruion JMP A+DPTR on la que podemos realizar saltos a direiones uyo valor
puede ser alulado en tiempode ejeuion.
En latabla 2.9se enuentran indiadas las instruionesde salto ondiional.
Casi todas las instruiones del 80592 modian de alguna u otra formalos bits CY,
OV y AC de la palabra de estado. Diha palabra de estado, identiada omo PSW, es
un registro de funion espeial alojado en la direion 0xD0. En la tabla 2.10 se puede
verlarelaionentre adauna delasinstruionesmodiadorasdebanderas ylosvalores
que toma ada una de las banderas CY, OV y AC omo onseuenia de la ejeuion de
ada instruion.
2.7 Las salidas PWM
Elmiroontrolador80592posee dos salidasde pulsos moduladosen anhura: /PWM0y
/PWM1. Ambas salidas estan basadas en un unio ontador de 8 bits on un presaler.
Dihopresaler es el SFRPWMP, alojadoen la direion0xFE. La freuenia de pulsos
ANL C,bit CY :=CY and bit
ANL C,/bit CY :=CY and not bit
ORL C,bit CY :=CY or bit
ORL C,/bit CY :=CY or not bit
MOV C,bit CY :=bit
MOV bit,C bit:= CY
CLR C CY :=0
CLR bit bit:= 0
SETB C CY :=1
SETB bit bit:= 1
CPL C CY :=not CY
CPL bit bit:= not bit
JC rel Salto si CY=1
JNC rel Salto si CY=0
JB bit,rel Salto si bit=1
JNB bit,rel Salto si bit=0
JBC bit,rel Salto si bit=1y luegobit :=0
Tabla 2.7: Instruiones booleanas
f PWM = f CLK 2(PWMP +1)255
siendo PWMP el ontenido delSFR del mismo nombre y f
CLK
lafreuenia delreloj
del80592.Laanhura de pulsode ada unade lassalidasviene dadaporlosSFRPWM0
(en la direion 0xFC, para la salida /PWM0) y PWM1 (en la direion 0xFD, para la
salida /PWM1). Enambosasos:
=
PWMn
255 PWMn
SiendoPWMnelvalordelSFRorrespondienteyelilodetrabajo(duty yle)dela
se~nalde salida.Unvalor=0india quelalneaPWMnpermaneea0onstantemente,
unvalor=1indiaquelalneaPWMnorrespondientepermaneea1onstantemente,
mientras que valores 0 < < 1 indian ratios de tiempo entre el estado 0 y el estado 1
(porejemplo,on=0:5 tenemos lossemiilos1de lamismaanhura quelossemiilos
JMP dir Salto orto
LJMP dir Salto largo,16 bits
JMP A+DPTR
ACALL dir Llamadaorta
LCALL dir Llamadalarga, 16bits
RET
RETI
NOP
Tabla 2.8: Instruiones de salto inondiional
Mnemonio Notas
JZ rel Salto siA = 0
JNZ rel Salto siA 6= 0
DJNZ <byte>,rel Deremento y salto si6= 0
CJNE A,<byte>,rel Salto siA 6= <byte>
CJNE <byte>,#dato,rel Salto si<byte> 6=dato
Tabla 2.9: Instruiones de salto ondiional
2.8 El ADC
El 80592 posee un onversor analogio-digitalde 10 bits de resoluion y on 8 entradas
analogiasmultiplexadas(orrespondientesalos8pinesdelpuertoP5).LosSFRasoiados
alADC son elADCON (en la direion0xC5) y el ADCH (en ladireion0xC6).
7 6 5 4 3 2 1 0
ADC.1 ADC.0 ADEX ADCI ADCS AADR2 AADR1 AADR0
RegistroADCON (direion0xC5)
7 6 5 4 3 2 1 0
ADC.9 ADC.8 ADC.7 ADC.6 ADC.5 ADC.4 ADC.3 ADC.2
Registro ADCH (direion0xC6)
Para iniiarunaonversionseleionamosenlos3bitsmenossigniativosdelregistro
ADCONlaentradaanalogiaquevamosaleer yponemosa1 elbit3de ADCON(o,on
elbitADEXa1,disparamoslaonversiondesdeelexteriormedianteun anode subida
en el pin STDAC). Una vez hehoesto tenemos dos opiones:
1. Haer polling sobre el bit ADCI hasta que se ponga a 1 para poder leer el valor
CY OV AC CY OV AC
(bit 7) (bit 2) (bit 6) (bit 7) (bit 2) (bit 6)
ADD x x x SETB C 1
ADDC x x x CLR C 0
SUBB x x x CPL C x
MUL 0 x ANL C,bit x
DIV 0 x ANL C,/bit x
DA x ORL C,bit x
RRC x ORL C,/bit x
RLC x MOV C,bit x
CJNE x
Tabla 2.10: Instruiones que modian losindiadores obanderas
2. Congurarlas interrupiones para que sea elpropio onversor el que nos avise (ver
laseion sobre lasinterrupiones)de quese haterminado la onversion.
Enualquieradelosasos,unaveznalizadalaonversion,elSFRADCHontendralos
8bits massigniativosdelvalor,mientrasquelosbits menossigniativosseenuentran
en los bit6 y 7de ADCON.
Al nal de la onversiones preiso poner aero elbit4 (ADCI) por software.
2.9 Timers
El 80592 posee 3 timers de proposito general mas un timer adiional de wath dog. De
estos3timers,losdos primeros,el0yel1,orrespondenalosdos timersde suanteesor,
el8051.
2.9.1 Los timers 0 y 1
Los dos primeros timers, el 0y el 1,provienen delnuleo funional del 8051. Son timers
de 16 bits ada uno y sus valores pueden ser aedidos atraves de 4SFRs:
Para el timer 0:TL0 (partebaja) en 0x8A y TH0(parte alta) en 0x8C.
Para el timer 1:TL1 (partebaja) en 0x8B y TH1 (partealta) en 0x8D.
roontrolador.
Conteo: Eltimeresinrementado porunase~nalde reloj externa(P3.4paraeltimer
0,y P3.5 para eltimer 1).
MedianteelregistroTMOD(SFR alojadoen ladireion0x89) podemosongurarel
funionamiento de estos dos timers. El registro de 8 bits esta dividido en dos: los 4 bits
menos signiativos ontrolan el timer 0 y los 4 bit massigniativosontrolan el timer
1(ver tabla2.11). 7 6 5 4 3 2 1 0 GATE C/T M 1 M 0 GATE C/T M 1 M 0 Timer 1 Timer 0
Tabla 2.11: El registrode ontrolTMOD (0x89)
Si GATE = 1, el timer orrespondiente (x) esta habilitado solo uando su patilla de
entradaINTx estaa1 yelbitTRx delregistroTCONestaa1.SiGATE =0,eltimer x
estarahabilitadosiTRx=1.ElbitC/T deada timerpermiteseleionarelmodoentre
onteo y temporizaion: si este bitesta a0, el timer atuaomo temporizador,mientras
quesiestaa1,atuaomoontador.Enmodoontador,eltimer xse inrementaraada
vez que haya una transiion de 1 a 0 en la patilla Tx orrespondiente (la letura de las
patillasTx se realizade formasnronaen ada perodode maquina).
Losbits M
0 y M
1
delregistro TMODpermitenseleionar elmodode funionamiento
de los timers.
Modo 0 (M
1
=0 y M
0
=0). Contadorde 13bitsompatibleon losdelafamilia
MCS-48. Modo 1 (M 1 =0 y M 0 =1). Contador de 16bits. Modo 2 (M 1 =1 y M 0
=0). Contadorde8bits onreargaautomatia.Elontador en
ses elTLx (8 bits) y, uandoeste llega a 0,se reargaon el ontenidode THx.
Modo 3 (M
1
=1 y M
0 =1).
{ Timer 0. El registro TL0 aua omo ontador de 8 bits ontrolado por los
bits de ontrol del timer 0. TH0 es ongurado omo temporizador de 8 bits
ontrolado porlos bits deltimer 1.
{ Timer 1. Este timer permanee detenio.
Asoiado a lostimers 0 y 1se enuentratambien elregistro TCON (0x88), uyos bits
son direionables individualmente mediante direionamiento de bit en las direiones
0x88 a 0x8F. Este registro permite atuar sobre los timers para arranarlos o pararlos.
Este timer no se enuentra en el 8051. Se trata de un temporizador/ontador de 16 bits
on un presaler programable on fatores de division de 1, 2, 4 u 8. El timer puede ser
programado en tres modos diferentes: desonetado, dependiente de la se~nalde reloj del
sistema (temporizador) o omo ontador on una entrada de reloj externa. Es posible
habilitardos tiposde interrupionindependientes: una para eldesbordamientode 8 bits
yotraparaeldesbordamientode 16bits.Se~nalarqueeltimer2noesargableonvalores
desde software (ver tabla 2.12).
Bit Smbolo Funion
7 T2IS1 Para seleionar lainterrupion de desbordamientode 16 bits
6 T2IS0 Para seleionar lainterrupionde desbordamientode byte
5 T2ER Habilitarreset externo(pin RT2)
4 T2B0 Bandera de interrupionde desbordamientode byte
3 T2P1 Presaler. 00:reloj,
2 T2P0 01:1/2reloj 10:1/4 reloj, 11:1/8 reloj
1 T2MS1 Modo. 00:detenido,01:reloj=1/12 f
l k ,
0 T2MS0 10:onguraionreservada 11:reloj=pin T2
Tabla 2.12: El SFR TM2CON (direion0xEA)
Existen4registrosdeapturay3registrodeomparaionparaeltimer2.Losregistros
de aptura permiten, mediante una se~nal externa haer que el 80592 argue en ellos la
uentadeltimer.Losregistrosde apturasonCT0,CT1,CT2yCT3,yestanasoiadosa
lospines de entradaCT0I aCT3I, respetivamente(vertabla2.13). Asmismo esposible
tambien generar una interrupion en el momento en el que se realiza una aptura (ver
tabla 2.14).
Bit Smbolo Funion
Captura Evento de interrupion
7 CTN3 CT3I Flanode bajada
6 CTP3 Flanode subida
5 CTN2 CT2I Flanode bajada
4 CTP2 Flanode subida
3 CTN1 CT1I Flanode bajada
2 CTP1 Flanode subida
1 CTN0 CT0I Flanode bajada
0 CTP0 Flanode subida
Tabla 2.13: El SFRCTCON (0xEB)
El80592ompara,en todomomento,elvalordeltimer2on losvaloresdelosregistros
7 T2OV Desbordamiento de 16 bits 6 CMI2 Captura en CM2 5 CMI1 Captura en CM1 4 CMI0 Captura en CM0 3 CTI3 Comparaionen CT3 2 CTI2 Comparaionen CT2 1 CTI1 Comparaionen CT1 0 CTI0 Comparaionen CT0 Tabla 2.14: El SFR TM2IR (0xC8)
del timer y el valor de alguno de estos registros, se pueden ativar interrupiones y/o
ativaionesde pines en elpuerto P4:elregistro de omparaionCM0 permite poner a1
los pines P4.0 a P4.5, el registro de omparaion CM1 permite poner a 0 los pines P4.0
a P4.5, y el registro de omparaion CM2 permite onmutar de estado los pines P4.6 y
P4.7.
LosotrosdosSFRqueafetanaltimer2seenargande ontrolarelfunionamientode
los3 registros de omparaion anteriormente itados.
Estos son el STE (direion0xEE,
ver tabla 2.15) y el RTE (direion0xEF, ver tabla 2.16).
Bit Smbolo Funion
7 TG47 1: P4.7:=0en laproximaoinidenia de CM2
(sololetura) 0: P4.7:=1en laproximaoinidenia de CM2
6 TG46 1: P4.6:=0en laproximaoinidenia de CM2
(sololetura) 0: P4.6:=1en laproximaoinidenia de CM2
5 SP45 1: P4.5:=1uando haya oinidenia de CM0
4 SP44 1: P4.4:=1uando haya oinidenia de CM0
3 SP43 1: P4.3:=1uando haya oinidenia de CM0
2 SP42 1: P4.2:=1uando haya oinidenia de CM0
1 SP41 1: P4.1:=1uando haya oinidenia de CM0
0 SP40 1: P4.0:=1uando haya oinidenia de CM0
Tabla 2.15: El SFR STE (0xEE)
2.9.3 El timer wath dog
Enel80592existeunuartotimerespeial,denominadodewathdog.Estetimer,uando
sedesbordaprovoaun reset delmiroontroladory, portanto,elsoftware debe argarlo
regularmente. Su funion es la de evitar que el miroontrolador entre en algun bule
7 TP47 1: P4.7 basulauando haya oinideniade CM2
6 TG46 1: P4.6 basulauando haya oinideniade CM2
5 RP45 1:P4.5:=0 uandohaya oinideniade CM1
4 RP44 1:P4.4:=0 uandohaya oinideniade CM1
3 RP43 1:P4.3:=0 uandohaya oinideniade CM1
2 RP42 1:P4.2:=0 uandohaya oinideniade CM1
1 RP41 1:P4.1:=0 uandohaya oinideniade CM1
0 RP40 1:P4.0:=0 uandohaya oinideniade CM1
Tabla 2.16: ElSFR RTE (0xEF)
Medianteel pin /EW podemos ongurar elmodo de funionamientodelmiro desde
el exterior. Si ponemos este pin a 0 habilitaremos el WDT (wath dog), mientras que si
loponemosa 1,deshabilitaremos el wathdog y entraremosen modo power-down.
En el modopower-down, el proesador se para, manteniendo el ontenidode la RAM
internaintato.Elproesadorsolosaledelmodopower-down sise reseteaosireibeuna
interrupionde tipowake-up delontroladorCAN omo aviso de que aabade llegar un
paquete porese puerto.El modopower-down puedeser puesto tanto desde software (bit
1 del SFR PCON, en la direion 0x87) o por hardware, poniendo a 1 el pin /EW del
hip.
Enirunstaniasdeoperaionnormales,tendremoshabilitadoelWDTydeshabilitado
elmodo power-down (pin /EW a0).
Para argarel wath dog debemos, primero poner a 1el bit4del SFR PCON y luego
argarel SFR del wath dog (direion0xFF) on elvalordeseado.
2.10 Interrupiones
El 80592 permite manejar 15 vetores de interrupion, de los uales los 5 primeros son
heredados del 8051 (ver tabla 2.17). A ada interrupion se leasigna una prioridad. Los
niveles de prioridadson dos: baja y alta.
Mediante los registros IEN0 e IEN1 habilitamos o deshabilitamos las interrupiones,
mientras que on los registros IP0 e IP1 onguramos la prioridad de ada una de las
interrupiones.
Lastablas2.18 y2.20 seorrespondenon elregistrode habilitaionde interrupiones
0 y el registro de prioridad de interrupiones 0, que son registros presentes tanto en el
8051 omo en el 80592. Los registros IEN1 (en la direion 0xE8) e IP1 (en la
Externa 0 0x0003 8051 y 80592
Desbordamientodeltimer 0 0x000B 8051 y 80592
Externa 1 0x0013 8051 y 80592
Desbordamientodeltimer 1 0x001B 8051 y 80592
Serial0 (UART) 0x0023 8051 y 80592 Serial 1(CAN) 0x002B 80592 T2 aptura0 0x0033 80592 T2 aptura1 0x003B 80592 T2 aptura2 0x0043 80592 T2 aptura3 0x004B 80592
Conversion ADC ompletada 0x0053 80592
T2 omparaion0 0x005B 80592
T2 omparaion1 0x0063 80592
T2 omparaion2 0x006B 80592
Desbordamientodeltimer 2 0x0073 80592
Tabla 2.17: Vetores de interrupiondel8051 y del 80592
miroontrolador(verlas tablas 2.19 y 2.21).
Bit Smbolo Funion
7 EA Habilitaion/inhabilitaionglobal de todas lasinterrupiones
6 EAD Habilitarinterrupiones delADC
5 ES1 Habilitarinterrupiones del ontrolador CAN
4 ES0 Habilitar interrupiones de la UART
3 ET1 Habilitarinterrupionesdel timer 1
2 EX1 Habilitarinterrupiones externasdel pin /INT1
1 ET0 Habilitarinterrupionesdel timer 0
0 EX0 Habilitarinterrupiones externasdel pin /INT0
Tabla 2.18: El SFR IEN0 (direion0xA8)
2.11 La UART
El80592poseeunainterfazdeomuniaionesserieheredadadel8051.Seaedealpuerto
serie desde software mediante losSFR SBUF (direion0x99) y SCON (direion0x98).
Los pines asoiados al puerto serie son el RXD (bit 0 del puerto 3) y el TXD (bit 1 del
puerto3).
El SFR SCON permite ongurar el puerto serie, mientras que el registro SBUF es
el buer de transmisionreepion de la UART. Una esritura en este SFR provoa una
7 ET2 Habilitarinterrupionesde desbordamiento deltimer 2
6 ECM2 Habilitarinterrupionesdel omparadorCM2 deltimer 2
5 ECM1 Habilitarinterrupionesdel omparadorCM1 deltimer 2
4 ECM0 Habilitarinterrupionesdel omparadorCM1 deltimer 2
3 ECT3 Habilitarinterrupionesdel apturador CT3 deltimer 2
2 ECT2 Habilitarinterrupionesdel apturador CT2 deltimer 2
1 ECT1 Habilitarinterrupionesdel apturador CT1 deltimer 2
0 ECT0 Habilitarinterrupionesdel apturador CT0 deltimer 2
Tabla 2.19: El SFR IEN1 (direion 0xE8)
Bit Smbolo Funion
7 { Sin usar
6 PAD Nivelde prioridaddelADC
5 PS1 Nivelde prioridaddelCAN
4 PS0 Nivelde prioridadde la UART
3 PT1 Nivel de prioridaddeltimer 1
2 PX1 Nivelde prioridadde /INT1
1 PT0 Nivel de prioridaddeltimer 0
0 PX0 Nivelde prioridadde /INT0
Tabla 2.20: El SFR IP0 (direion0xB8)
2.22).
El puertoserie puede funionar en 4 modos diferentes:
Modo 0 (SM0 = 0, SM1 = 0). El puerto atua omo registro de desplazamiento,
utilizando el pin RXD on entrada/salida de datos y el pin TXD omo salida de
reloj. f
os
/12 bits por segundo.
Modo 1 (SM0 = 0, SM1 = 1). UARTen modofullduplex (1bitde start y otro de
stop). 8bits de datos. Bitsporsegundo variables(timer 1).
Modo 2 (SM0 = 1, SM1 = 0). UARTen modofullduplex (1bitde start y otro de
stop). 9bits de datos. f
os
/ 64o f
os
/ 32bits porsegundo.
Modo 3 (SM0 = 1, SM1 = 1). UARTen modofullduplex (1bitde start y otro de
stop). 9bits de datos. Bitsporsegundo variables(timer 1).
En modo 2 o 3, si SM2 = 1 , RI solo se pondra a 1 si el 9 o
bit es un 1. En modo 1,
si SM2 = 1, RI solose ativara al reibirse un bit de stop. En modo 0, el bitSM2 debe
estar a0.El bitRENsirvepara habilitarlareepion(on REN= 1).TB8es el9 o
bita
transmitiren losmodos 2 o3,mientras que RB8es el9 o
bitreibidoen losmodos 2o3.
7 PT2 Nivelde prioridaddeldesbordamientodeltimer 2
6 PCM2 Nivel de prioridaddel omparadorCM2
5 PCM1 Nivel de prioridaddel omparadorCM1
4 PCM0 Nivel de prioridaddel omparadorCM0
3 PCT3 Nivel de prioridad delapturadorCT3
2 PCT2 Nivel de prioridad delapturadorCT2
1 PCT1 Nivel de prioridad delapturadorCT1
0 PCT0 Nivel de prioridad delapturadorCT0
Tabla 2.21: ElSFR IP1 (direion0xF8)
0x9F 0x9E 0x9D 0x9C 0x9B 0x9A 0x99 0x98
SM0 SM1 SM2 REN TB8 RB8 TI RI
Modo
Tabla 2.22: El SFR SCON (0x98)
TI indiauandose haterminadouna transmision.Antes de volver atransmitir, debe
ser puesto a 0porsoftware. Elbit RI es elindiador de reepion, e indiauando se ha
reibidoel ultimobit de un paquete. Debetambien ser puesto a 0porel software.
2.12 El ontrolador CAN inluido
La onexion on el bus CAN el la araterstia mas ompleja de este miroontrolador.
Las entradas CAN del 80592 se loalizan en los pines CRX0 y CRX1, mientras que las
salidasCANformanpartedelpuertoP1(CTX0,seorresponde onelbit6,yCTX1 on
elbit 7).
2.12.1 El protoolo CAN
El protoolo CAN (Control Area Network) es un protoolo serie que, al igual que el
Ethernet, se basa en el uso de un par de ables on terminaiones de impedania ja
en los extremos y al que se pueden onetar nodos en ualquier punto de su longitud.
La impedaniaaraterstia en los buses CAN suele ser de 124 . Elprotoolo CAN es
un protoolo de tipo CSMA/CD (Carrier Sense Multiple Aess / Collision Detetion),
es deir; un protoolo de aeso multiple,en el que ada nodo es apaz de detetar una
transmision ualquiera y ademas es apaz de detetar olisiones entre paquetes de bits
que se esten enviando simultaneamente sobre el bus. Esto es, solo es posible un paquete
del bus en un instante determinado. Se utilizan las noiones de bit "dominante"y bit
"reesivo".
V+
Host 0
Host 1
Host 2
Bus
A
B
Figura2.5: Modelo de transmisionsobre un bus basadoen una AND ableada
ElbusCANutilizaun sistemaparatransportardatosmuysenillo:unaANDableada
(ver gura 2.5). Esto es, solosi TODOS losnodos onetados al bus estan en estado
re-esivo(a"1"), elbus seenontraraesestadoreesivo;sinembargo, onque un solonodo
enve un bitdominante al bus (un "0"), este pasara a estado dominante,
independiente-mente de que otros nodos esten enviando otros bits reesivos.De este fenomeno proviene
elnombre de "dominante"y"reesivo"para losbits 0y 1 delbus, respetivamente.
En el ejemplo de la gura 2.5, si todos los hosts envan un "1"(valor alto), todos los
transistores permaneen en orte y, por tanto el bus mantiene un voltaje V entre los
puntos A y B. En ambio, si uno de los hosts enva un "0", este ero provoara que el
transistor orrespondiente seponga en saturaion, ortoiruitando las l
ineas A y B; sin
importarlo que elresto de hosts este enviando.
Atualmente existen en la industria dos modalidades de protoolo CAN: CAN2.0A
y CAN2.0B. Las diferenias entre una y otra son m
inimas, permitiendo la version B,
direionar mayor antidad de nodos en una red. El 80592implementael CAN2.0A.
Dentro delprotoolo CAN tenemos 4 tiposde paquetes de datos:
Paquetes de datos,para transportar datos.
Paquetes de soliitud,para soliitardatos.
Paquetes de error,para indiar errores en la red.
Paquetes de sobrearga (no soportadorpor el80592).
Campo de arbitraje 11 bits on el identiador delpaquete masun
un bitRTR(dominante) (en la varianteCAN2.0B del
protoolo elidentiadores de 29 bits).
Campo de ontrol 6 bits, los dos primerosdominantes, y los 4
restantes indiando el numerode bytesen el
ampode datos.
Campo de datos Entre 0y 8bytes de longitud.Para ada bytese
enva primero elbitmas signiativo.
Campo de CRC 15 bits on el CRCmas un bitreesivo.
Campo ACK 2 bits reesivos.
Fin de frame 7 bits reesivos.
Tanto los11 bits delindentiador delpaquete omo los4 bits que indianel tama~no
del ampode datosse transmitenempezandoporelbitmassigniativo.El ampo
iden-tiadorNOpuedetenerlossietebitsmassigniativos(ID.10aID.4)todosdominantes.
De losdos bits reesivos del ampoACK, elprimero esta destinado para que el nodo
queestareibiendo elpaquete, lorelleneon un bitdominante, tras omprobar losdatos
y el ampo CRC. Elnodo transmisor que, mientras transmite, monitoriza lared, sabe si
el paquete ha llegado bien a su destino omprobando que la l
inea, en el primer bit del
ampo ACK, sepone en estado dominante.
Algopareido ourre on elampoRTR. Cuando un nododesea soliitar datosa otro
envaunpaqueteon elbitRTRreesivo(un paquetedesoliitud).Elnodoqueresponde
alasoliitudlohae enviando un paquetede datoson elmismoampoidentiadorque
elpaquetedesoliitud,peroonestebitenestadodominante.Sienelmismoinstanteque
elnodo soliitanteenva supaquete, el nodoon losdatos proede a enviar losdatos, no
ourre olisionalguna,al utilizarambosnodos el mismoidentiadory altransformarse,
debidoa la emisiondelbit dominantepor partedel nodoon los datos, elbit RTRa 0.
El ampo identiador en un paquete CAN, identia a ese paquete, no al nodo que
loenva o reibe. Unnodopuedeenviar diferentes paquetes on diferentes amposID en
adaunodeellosytambienreibirlospaquetesquereaonveniente. Lonormalesquese
utilizeelsistemaindiadoen elejemploanterior:unnodoAenvaunpaquetede soliitud
de datoson elidentiador=xy otro nodoB, queseenuentraa laesuhade paquetes
on ese identiador, responde on un paquete de datos y elampoidentiador= x.
Campo de arbitraje 11bits on elidentiadordel paquetemas un
un bit RTR (reesivo).
Campo de ontrol 6 bits, losdos primeros dominantes, y los4
restantes se ignoran.
Campo de CRC 15bits on elCRC masun bitreesivo.
Campo ACK 2 bits reesivos.
Fin de frame 7 bits reesivos.
Un paquete de error ontiene dos ampos: La superposiion de indiadores de error
(bits dominantes), seguidodel delimitadorde error.
Un nodoCAN puedeongurarse omo ativoo pasivoante loserrores. Enel aso de
queun nodosea "ErrorAtive"ydetete algunaondiionde erroren elbus, transmitira
6 bits dominantes onseutivos omo indiador de error 1
. El resto de nodos de la red
detetaran esta ondiion de error y enviaran sus respetivos indiadores de error sobre
elbus. Losnodos ongurados omo "Error Pasive"envan 6bits reesivos onseutivos.
Tras la superposiion de indiadores de error, y la deteion por parte de todos los
nodos de la ondiion de error, esperaran a que haya una transiion de dominante a
reesivo en elbus y dejaran 8bits reesivos omo delimitadordel error.
2.12.2 Conexionado del 80592 on un bus CAN
El miro utilizado posee un ontrolador de bus CAN inorporado. Este ontrolador no
posee, sin embargo, araterstias de transeptor; es deir, no podemos onetar
dire-tamente las patitas del bus CAN del 80592 a un bus, es preiso aondiionar la se~nal y
adaptarimpedanias.
Es por esto por lo que se hae neesario el uso del 82250. La onexion se realiza de
forma direta (ver la gura 2.6) y solo hay que tener en uenta desde el punto de vista
del hardware, elrespetar laimpedaniadelbus y en adeuar laspendientes de transiion
a la hora de transmitir (de 0 a 1 y de 1 a 0). Para ontrolar estas pendientes se ha
situado el poteniometro en el pin R
s
del transeptor 82250. Si oloamos el dial del
poteniometro en elextremo de 0voltios, obtenemos unas transiiones en latransmision
lo mas rapidas posible (para buses de alta veloidad), mientras que jugando on valores
intermedios obtendremos pendientes de transiion mas aordes on el tipo de able que
tengamos, elalane, et (buses de media y baja veloidad).
En la gura 2.8 se puede apreiar una fotografa del miroontrolador junto al
tran-septorCAN.
1
Estos6bits dominantes onseutivospermitendetetar unerrorporpartede ualquiernododela
red, ya quees imposible onfundirloon unpaquete de datos ode soliitud, a tener estos paquetesla
CTX0
CRX0
CRX1
TxD
RxD
Vref
Rs
Vcc
CANH
CANL
GND
100nF
+5 v
P8xC592
124
124
Bus CAN
82C250
100K
Figura2.6: Conexionado entre el80592 y el transeptorCAN 82250
1
2
3
4
5
6
7
8
TxD
GND
RxD
Vcc
Rs
CANH
CANL
Vref
82250
Figura2.7: Enapsulado deltranseptor CAN 82250
2.12.3 Programaion del bus CAN en el 80592
El aeso al ontrolador CAN en el 80592
El miroontrolador 80592 permite el aeso al ontrolador CAN inluido en el hip a
traves de losSFR:
CANSTA (en 0xD8): Para leer el status del ontrolador y esribir direiones para
haertransferenias DMA entre el ontroladorCAN y la RAMprinipal.
CANCON (en 0xD9): letura de los ags de interrupiony esritura de omandos al
ontrolador CAN.
CANDAT (en 0xDA): Para leer y esribir datosen un registro delontroladorCAN.
CANADR (en 0xDB): Para seleionar elregistro delontrolador CANal que
Por otro lado tenemos los registrosdelpropio ontroladorCAN:
0x00: Control Register (CR).Habilitaionde interrupiones en el lado del
on-trolador,voltajes de referenia, et.
0x01: Command Register (CMR). Conguraion de los pines de reepion CAN
(CRX0y CRX1) del80592,omandos espeialesparaborradodebuers, modos de
operaion, et.
0x02: Status Register (SR).Contiene losags queindianelestadodel
ontro-lador CAN.
0x03: Interrupt Register (IR).Registrode sololeturaquepermitealarutina
de serviio de interrupion que atiende las interrupiones del bus CAN, identiar
exatamentequetipode interrupionsehagenerado (reepion,transmision,error,
et).
0x04: Aeptane Code Register (ACR). Permite indiar que tipo de mensajes
CAN se van aaeptar en el buer de reepion (se omparaeste registroon los8
bits massigniativos delampoID delpaquete CAN).
0x05: Aeptane Mask Register (AMR). Permite denir que bits del registro
bus CAN.
0x07: But Timming Register 1 (BTR1).Segundoregistroparaelontroldel
tim-ming del bus CAN.
0x08: Output Control Register (OCR).Permiteongurarlasaraterstiaseletrias
de las salidasCTX0 y CTX1 delbus CAN.
0x0A a 0x13. El buer de transmision. Aqu el software esribe el paquete CAN
quedesea transmitir.
0x14 a 0x1D. El buer de reepion. Aqu el software lee los paquetes CAN
en-trantes. El 80592 posee 2 buers de reepion ongurados a modo de ola, este
sistema de doble buer queda oulto al usuario; de talforma que si tenemos 2
pa-quetesdiferentes enlosbuersdereepionenunaprimeraleturadesdeelsoftware
leeremoselprimerpaqueteen llegarmientras queon unasegunda leturaleeremos
elsegundo (no hay que indiarleal ontrolador ual es elbuer que queremos leer,
ya que seutiliza un sistema de olas: se leeprimero elprimero en llegar).
Si queremos, por ejemplo, aeder al registro CMR (Command Register), esribiremos
primero en el SFR CANADR el valor 0x01 (elndie del registro CMR en el
ontro-lador CAN) y a traves del SFR CANDAT ya podremos leer y/o esribir en el registro
seleionado.
Programaion del timming en el 80592
Laseiondel timmingdelbusCAN yde suprogramaiononstituyen un temaun tanto
osuroenlahojadedatosdel80592.Graiasaalgunasnotasdeapliaionenontradasen
internethasidoposibleobtenerlasformulasparaelalulodeltimmingyparaprogramar
losregistros BTR0y BTR1. f bit = f xtal (3+TSEG1+TSEG2(SJW +1))(BR P +1)2
Esta formularelaionalafreueniade bitdelbus CANonlafreueniadelristalde
uarzo del miroontrolador. Los valores TSEG1, TSEG2, SJW, et son ampos dentro
de los registrosBTR0 y BTR1 delontroladorCAN.
Como sepuede apreiar, en el demonimadortenemos una operaion. Enel aso del
timming en el bus CAN podemos denir una o
lgura a
la hora de alular el numero de
bits por segundo. Esta olgura permitiraa losiruitosde reepionser maspermisivosy
f xtal = 16Mhz TSEG1 = 3 TSEG2 = 4 SJW = 1 BR P = 23 f bit = 16000000 (3+3+4(1+1))(23+1)2 f bit = 16000000 (102)242 f bit = 16000000 (102)48
Sialulamos las dos euaiones resultantes de laeuaion anterior, en una utilizandoel
+del y en laotra utilizandoel del, obtenemos:
f bitmax = 41666 0 667bps f bitmin = 27777 0 778bps
Estas dos freuenias de bit determinan la freueniamaximay mnimaa la que el
on-troladorCAN puedereibirdatosdelbus. Lafreueniaalaqueelontroladortransmite
es: f bit = f xtal (3+TSEG1+TSEG2)(BR P +1)2
Notese se se ha eliminado la operaion sobre el valor (SJW +1). En este aso, la
veloidadde transmision sera:
f bit =33333 0 333bps El registroBTR0: SJW 1 SJW 0 BR P 5 BR P 4 BR P 3 BR P 2 BR P 1 BR P 0 El registroBTR1: SAM TSEG2 2 TSEG2 1 TSEG2 0 TSEG1 3 TSEG1 2 TSEG1 1 TSEG1 0
El bit SAM del registro BTR1 permite indiar la antidad de vees que se muestrea
una ranura de tiempo de un bit para determinar si esta a 0 o a 1. Si SAM=0 en ada
ranuradetiemposemuestreaunasolavezparadeterminarelbit,mientrasquesiSAM=1
en ada ranura de tiempo se muestrea 3 vees, de esta forma sedetermina si setrata de
un 0 oun 1pormayora.
El uso de un solomuestreo(SAM=0) seutiliza en buses de altaveloidad,el uso de 3
muestreos (SAM=1) seutiliza en buses de baja y mediaveloidad (menosde 1MHz). En
nuestro aso, el montaje delbus seha realizadoen base a un par trenzado on loque es
El sistema de desarrollo basio
El sistema basio onsta de los omponentes basios para el funionamiento del
miro-ontrolador.
Flash ROM : Una memoriaROM modelo 29F010de 128 Kbytes.
RAM : Unamemoria RAM estatia modelo 62256 de 32 Kbytes.
Miroontrolador: MCU 80592.
DAC: Un onversor digital-analogioexterno.
Medianteestosiruitosperiferiosal80592nosseraposibledesarrollarsoftwarede forma
omoda, mediante el uso de la memoria FlashROM, y dotar a nuestro proesador de
una salida analogia graias al DAC externo. Con la inorporaion de una pastilla RAM
externa aumentamos lamemoriade datos delmiroontroladorhasta 32Kbytes.
3.1 Alimentaion
Elmiroontroladorposeemultiplesentradasde alimentaionparaadaunadesuspartes
(ver tabla 3.1).
Se debe umplirque AV
ref+ > AV ref y, ademas,AV ref+ < AV dd y AV ref > AV ss . En nuestro aso: V dd = AV dd = AV ref+ = 5 voltios y V ss = AV ss = CV ss = AV ref
= Masa. El pin REF puede ser ongurado omo entrada, omo salida o sin uso: si se
ongura omo salida, lo que saa es un voltaje de 1 / 2 AV
dd
on el objetivo de que
sea utilizadoporun transeptor delbus CAN omovoltajede refenia para enviarlos0s
y 1s reibidos al 80592 a traves de las entradas CRX0 y/o CRX1. Si se ongura omo
dd
V
ss
Masa(0voltios) de la parte digital.
AV
dd
AlimentaiondelADC y la parte CAN(+5 voltios).
AV
ss
Masa(0voltios) delADC y la parte CAN.
CV
ss
Potenialde tierra para lassalidas CAN.
AV
ref
Valorde voltaje para laonguraion 0x000 en el ADC.
AV
ref+
Valorde voltaje para laonguraion 0x3FFen elADC.
REF Entrada/salidaopional on el valorde voltaje de referenia
paraleer losvalores de lasentradas CAN CRX0y CRX1.
Tabla 3.1: Pines de alimentaiondel miroontrolador
quelosomparadoresdelontroladorCANdel80592 puedanleer adeuadamentelosbits
quelelleganatravesde CRX0yCRX1. Laotraformadeongurarloesniomoentrada
niomo salida, en uyo aso se interpretan los bits omo sigue:
SinivelCRX0 >nivel CRX1=) bitreesivo.
SinivelCRX0 <nivel CRX1=) bitdominante.
SiseonguraelpinREFomopinsinutilizar(talyomosehapuestoenelprototipo)
debeir onetado, medianteun ondensador> 1nF a AV
ss .
3.2 Ciruito de reloj
Para generar la se~nal de reloj para el 80592 existen dos alternativas, segun la
dou-mentaionde Philips:
Utilizarun ristal de uarzo.
Utilizarun reloj externo.
En este aso se ha optado por la utilizaion de una fuente de reloj externa, ya que al
utilizar un ristal hubo problemas de distorsion en la onda uadrada. Se utilizo un reloj
auarzo yaenapsulado y que genera una se~nal muy establey on poadistorsion.
La se~nalde reloj se introdue diretamenteal pin XTAL1, dejando elpin XTAL2 sin
onetar. El osilador generauna onda de 1.8MHz, aunque esposible utilizar un ristal
Eliruitode resetmontadoalrededordelpinRSTdelmiroontroladoreselhabitualen
estetipodemontajes.Loquesehapuestoesunondensadorentreelpinderesetdel80592
y V
dd
, de tal formaque alsuministrar tension atodoelprototipoel miroontroladorse
reiniie(vergura 3.1).
MCU
RST
Vdd
Pulsador
RESET
+ 5v
Figura 3.1: Ciruitode reset
Ademasdeesteresetdearranque,sehaa~nadidounpulsadorenparaleloalondensador
paraqueelusuariopueda,enualquiermomentoreiniiarelproesadorsinqueporellose
pierda,porejemplo,el ontenido delaRAM externa osinneesidadde ortar laenerga.
3.4 La memoria Flash
Se trata de una memoriade 1 Mbit organizada en 131072direiones de 8bits ada una
(128 Kbytes) en la que estara ubiado el odigo delprograma. Aparte de las patillas de
datos(D0aD7)yde direiones(A0aA16),elhip poseeloshabitualespinesdeontrol.
/WE Entrada quese utiliza para programar y borrar laash,
en el montaje delprototipo sepone a1 (V
)para evitar
quesu ontenidose borre o reprograme poraidente.
/OE Unano de bajada emiteporel bus de datos (D0 a D7) el
ontenidode ladireionapuntada por lasentradas (A0a A16);
sise pone a 1,las salidas de datos pasan a altaimpedania.
/CE Chip Enable. Cuando se pone a 0habilita elhip, uando
esta a 1,todas las entradas y salidasdel integradopermaneen
en altaimpedania.
Lospines V
y V
ss
son lasentradas de alimentaiona lapastilla(V
= 5voltios,V
ss
A15
A12
A7
A5
A6
A4
A3
A2
A13
A8
A9
A11
/OE
A10
/CE
D7
D6
D5
D4
Vss
D2
D1
D0
A1
A0
D3
A16
NC
Vcc
/WE
NC
A14
29F010
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
18
19
20
21
22
23
24
25
26
27
28
17
29
30
31
32
Figura 3.2: Enapsuladodel 29F010(FlashROM)
3.5 La RAM
La memoriaRAM es de tipoestatio de 256 Kbits organizada en 32768 direiones de 8
bits ada una (32 Kbytes), este RAM seutilizaraomo memoriade datos externa. Enla
gura 3.3 semuestrael enapsulado de este hip.
Los pines son loshabituales en ualquierpastilla de RAM estatia:
/WE Unano de bajada en este pin provoa que seesriba en la
direionde memoria seleionada(A0 aA14) los8 bits de
datos presentes en lospines de datos (D0a D7). Lospines de
datos atuanomo entradas.
/OE Unano de bajada emiteporel bus de datos (D0 a D7) el
ontenidode ladireionapuntada por lasentradas (A0a A14).
Lospines de datos atuanomo salidas.
/CS Chip Selet.Cuando se pone a 0 habilitael hip tanto
para leer omo para esribir.Puesto a 1,pone todas lospines
del integrado en altaimpedania.
Notese que laonguraion /WE=0 y /OE=0 esuna onguraion ilegal.
Al igual que en el aso de la memoria ash, los pines V
y V
ss
son las entradas de
alimentaionde la pastilla(V
=5 voltios,V
ss