MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
4.4. OPERACIONES ARITMÉTICAS Y LÓGICAS EN PBASIC ________________ 12 4.4.1. PROGRAMAS DE EJEMPLO CON OPERACIONES MATEMÁTICAS _____________13
4.5. ORGANIZACIÓN DE LA MEMORIA RAM DE DATOS DEL BS2___________ 16
4.6. INSTRUCCIONES PBASIC ____________________________________________ 17 4.6.1. INSTRUCCIONES DE ENTRADA/SALIDA DIGITALES ________________________17 4.6.2. INSTRUCCIONES PARA BUCLES REPETITIVOS _____________________________17 4.6.3. INSTRUCCIONES DE SALTO ______________________________________________18 4.6.4 .INSTRUCCIONES NUMÉRICAS ____________________________________________18 4.6.5. INSTRUCCIONES DE E/S SERIE ASÍNCRONA________________________________18 4.6.6. INSTRUCCIONES DE E/S SERIE SÍNCRONA_________________________________18 4.6.7. INSTRUCCIONES DE E/S ANALÓGICA _____________________________________18 4.6.8. INSTRUCCIONES DE CONTROL DE TIEMPO ________________________________18 4.6.11. INSTRUCCIONES DE ACCESO A LA EEPROM ______________________________18 4.6.12. INSTRUCCIONES DE DEPURACIÓN DEL PROGRAMA_______________________18
5. PRACTICA 1: CONTROLANDO UN LED Y UN ZUMBADOR. ____________ 19
6. VARIABLES EN PBASIC. ___________________________________________ 20
6.1. VARIABLES DE NOMBRES FIJOS EN PBASIC. _________________________ 20
6.2. DECLARACIÓN DE VARIABLES DEL BS2 _____________________________ 20
6.3. DECLARACIÓN DE ARRAYS DE VARIABLES (Matrices)_________________ 22
6.4. MODIFICADORES (ALIAS) DE LAS VARIABLES. _______________________ 23
7. CONSTANTES EN PBASIC _________________________________________ 24
7.1 DECLARACIÓN DE CONSTANTES EN PBASIC__________________________ 24
8. PRACTICA2: INTERMITENCIA DE UN DIODO LED. __________________ 25
9. DIRECCIONAMIENTO DIGITAL DE ENTRADAS SALIDAS CONSIDERANDO EL MAPA DE MEMORIA._____________________________________________ 26
10. PRACTICA 3: CONFIGURACIÓN DE ENTRADAS-SALIDAS Y SALTO CONDICIONAL. _____________________________________________________ 27
11. PRACTICA 4: PROGRAMACION DE ECUACIONES LÓGICAS CON OPERADORES BOLEANOS. __________________________________________ 28
12. PRACTICA 5: CUENTA ATRÁS MEDIANTE DISPLAY DE 7 SEGMENTOS. 33
1. INTRODUCCIÓN A LA NOCIÓN DE MICROCONTROLADOR. En los cu rsos an te r io res se ha es tud iado en va r ias ocas iones , con
d i fe ren te n i ve l de p ro fund izac ión , l a a rqu i tec tu ra de l PC . A es te respec to , se ind icaba que un o rdenador e ra una máqu ina , eminen temen te e lec t rón ica , que e ra capaz de lee r , i n te rp re ta r y rea l i za r ope rac iones con un con jun to de ins t rucc iones y da tos lóg icos en fo rma de ce ros y unos .
Aunque es sab ido que la es t ruc tu ra in te rna de l PC es mucho más
comp le ja , podemos cons idera r que es tá fo rmada por t r es g randes b loques :
1 . M ic rop rocesador o CPU (Un idad Cen t ra l de Proceso ) . 2 . Memor ias . 3 . En t radas /Sa l idas (E /S) . Los d is t i n tos e lemen tos de l PC es tán conec tados a t r avés de los
BUSES y regu lados por los con t ro ladores de l t r á f i co de da tos ( Ch ipse t , t ecno log ía Hyper t ranspor t , e tc . . ) .
Una vez de f in idos de fo rma s imp l i s ta los b loques de un PC, podemos a f ron ta r e l concep to de m ic rocon t ro lador como un c i r cu i to i n teg rado que con t iene un o rdenador comp le to en su in te r io r , pe ro con ca rac te r í s t i cas s imp l i f i cadas respec to a é l . En es te sen t ido , l as p res tac iones de un m ic rocon t ro lador son mucho más l im i tadas y reduc idas que las de un PC, pe ro tamb ién es much ís imo más bara to y pequeño , l o que le hace aprop iado para se r u t i l i zado en mu l t i t ud de ap l i cac iones . Los m ic rocon t ro ladores son d ispos i t i vos que admi ten un con jun to de ins t rucc iones senc i l l o y poco numeroso . Su memor ia t i ene poca capac idad lo que cond ic iona e l tamaño de l p rog rama y de los da tos que se pueden mane ja r con es tos d ispos i t i vos . Ahora b ien , dado que su u t i l i zac ión se ap l i ca a e lemen tos conc re tos y de l im i tados se les sue le añad i r recu rsos ad ic iona les que les pe rm i tan la imp lemen tac ión en d is t in tos p royec tos . ¿Dónde se emp lean los m ic rocon t ro ladores? ; pues , en todos lados , m i ra en tu bo ls i l l o , s i l l evas un te lé fono móv i l en e l habrá dos o t res m ic rocon t ro ladores , en un rep roduc to r MP3 , en un m ic roondas , en un mando a d is tanc ia , en e l te lev iso r , en e l coche , en l a conso la , en una
máqu ina expendedora , en e l ra tón de l PC , en la impresora , en un ca r te l l uminoso , en cua lqu ie r robo t , e t c , e tc…. Para da rnos una idea de la impor tanc ia de los m ic rocon t ro ladores , bas ta f i j a r se en l as ven tas de es tos d ispos i t i vos a n i ve l mund ia l de l a empresa M ic roch ip , pasando de un consumo de 7 m i l l ones de un idades en 1990 a más de 500 m i l l ones en 2002 , e l l a ac tua l idad es ta c i f ra c rece exponenc ia lmen te . E l p r inc ipa l fab r i can te de m ic rocon t ro ladores a n i ve l mund ia l es la empresa Mo to ro ta , aunque en los ú l t imos años ha sub ido mucho la empresa M ic roch ip a t ravés de sus d ispos i t i vos P IC (C i rcu i t o I n teg rado Programab le ) . Aunque ex is ten m ic rocon t ro ladores de 4 , 8 , 16 y 32 b i t s l os más u t i l i zados a n i ve l de usuar io son los de 8 b i t s . Se comerc ia l i zan cua t ro se r ies de m ic rocon t ro ladores P IC de 8 b i t s , en t re l os que ex i s te más de un cen tenar de mode los d is t i n tos .
SERIE BÁSICA: Fami l ia P IC16C5x , sopor ta un con jun to de 33 ins t rucc iones de 12 b i t s cada una . Son senc i l l os y muy bara tos .
SERIE MEDIA : Fami l i a P IC16Cxxx , cuen tan con 35 ins t rucc iones de 14 b i t s . Es l a gama más amp l iamente comerc ia l i zada y t i ene mode los con encapsu lados que van de las 8 a las 68 pa t i l l as . Den t ro de l p rop io ch ip se sue len imp lemen ta r c i r cu i tos aux i l i a res para adap ta r su uso a ap l i cac iones concre tas .
GAMA ALTA: Fami l ia P IC17Cxxx , que sopor tan 58 i ns t rucc iones de 16 b i t s y es tán des t inados a ap l i cac iones con requer im ien tos técn icos e levados .
GAMA MEJORADA: Pueden func ionar a f r ecuenc ias de 40 MHz y d isponen de 77 ins t rucc iones de 16 b i t s . Es tos mode los se emp lean en p royec tos muy conc re tos .
2. ARQUITECTURA INTERNA DE LOS MICROCONTROLADORES PIC.
La a rqu i tec tu ra de un P IC se es t ruc tu ra en 4 b loques fundamen ta les :
P rocesador Memor ia de p rog rama Memor ia de da tos Recursos aux i l i a res
S i en la memor ia RAM de un o rdenador con t iene da tos e
ins t rucc iones , en los P IC ex is ten dos memor ias sepa radas , una que ún icamen te con t iene ins t rucc iones y l a o t ra que só lo con t iene da tos . Es te t i po de a rqu i tec tu ra se denomina Harva rd y se ca rac te r i za po r pe rm i t i r un acceso s imu l táneo a los da tos y a las ins t rucc iones , i nc remen tando as í e l r end im ien to de l P IC .
Además de las dos memor ias independ ien tes , e l m ic rocon t ro lador , d i spone de módu los de en t rada /sa l ida que no se han d ibu jado en la f i gu ra an te r io r . La memor ia de p rog rama con t iene las i ns t rucc iones que van a con t ro la r e l p roceso a que se des t ina e l m ic rocon t ro lador . Es ta memor ia admi te d i fe ren tes t i pos de tecno log ía según las ca rac te r í s t i cas de la ap l i cac ión . S i se van a neces i ta r g ran número de m ic rocon t ro ladores i dén t i cos con un mismo p rograma, se sue len u t i l i za r memor ias ROM (memor ia de só lo lec tu ra ) en l a que e l f ab r i can te g raba e l p rograma de usuar io , ob ten iéndose e lementos con g ran n ive l de segur idad y a p rec ios muy compe t i t i vos . S i l a ap l i cac ión de l m ic rocon t ro lador es tá des t inada a un uso menos gene ra l i zado , los P IC con t ienen una memor ia g rabab le y bo r rab le po r e l usuar io a t ravés de una g rabadora con la ayuda de un PC y e l so f tware adecuado . Hay memor ias de t i po EPROM, son g rabab les desde un PC, pe ro pa ra bor ra r las hay que somete r las a luz u l t r av io le ta du ran te un c ie r to t i empo a t ravés de una ven tana de cua rzo ex is ten te en e l encapsu lado de l m ic rocon t ro lador . Las más amp l iamen te u t i l i zadas son las EEPROM y las FLASH que se pueden g rabar y bo r ra r e léc t r i camen te desde un PC. Hay ve rs iones , denominadas OTP, que son muy económicas que son g rabab les po r e l usuar io una so la vez . La memor ia de da tos debe se r l e íb le y esc r ib ib le , po r es to se usan memor ias de t i po RAM, que t i enen e l i nconven ien te de pe rder l a i n fo rmac ión que con t i enen cuando se in te r rumpe la a l imen tac ión e léc t r i ca . Por ta l mo t i vo , se sue le comp lemen ta r l a memor ia RAM con un pequeño espac io de memor ia EEPROM le íb le y esc r ib ib le , pe ro no vo lá t i l . Un inconven ien te de las memor ias EEPROM es la l en t i tud de acceso . En cuan to a los recursos aux i l i a res que opc iona l y op ta t i vamen te se imp lemen tan en e l encapsu lado de l m ic rocon t ro lado r ex is te un aban ico de pos ib i l i dades en t re las que des tacan las s igu ien tes :
Conversor ana lóg ico -d ig i ta l (ADC) y d ig i ta l - ana lóg ico (DAC) . Tempor i zadores Puer tos de comun icac ión se r ie y pa ra le lo . Comparado res , cap tu rado tes de seña l y módu los PWM (Modu lac ión
3. PRINCIPALES CARACTERÍSITICAS DEL MÓDULO OEM BS2_IC Y EL PIC16C57
El P IC16C57 es e l mode lo de m ic rocon t ro lador de gama bás ica de los módu los PARALLAX des t inados a p rác t i cas y exper imen tac ión con e l que se t raba ja ra du ran te es te cu rso . Uno de esos módu los es e l OEM BS2- IC que se mues t ra en la f i gu ra donde e l P IC es e l ch ip de mayo r tamaño .
Las p r inc ipa les ca rac te r í s t i cas de l módu lo BS2- IC basado en e l
P IC16C57 son : M i c r o c o n t r o l a d o r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P I C 1 6 C 5 7 V e l o c i d a d d e e j e c u c i ó n d e l p r o g r a m a . . . . . . . . . . . . . . . . . . . . 4 0 0 0 i n s t r u c c i o n e s / s e g u n d o V e l o c i d a d d e l p r o c e s a d o r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 0 M H z C a p a c i d a d d e l a m e m o r i a d e p r o g r a m a E E P R O M . . . . . . 2 K B L o n g i t u d m á x i m a d e l p r o g r a m a . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 0 0 l í n e a s P B A S I C C a p a c i d a d d e l a m e m o r i a R A M d e d a t o s . . . . . . . . . . . . . . . . . 3 2 B y t e s ( 6 p a r a E / S y 2 6 p a r a
v a r i a b l e s N º d e p a t i t a s d e E / S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 6 ( P 0 a P 1 5 ) C o n s u m o d e c o r r i e n t e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 m A e n m o d o e j e c u c i ó n
1 0 0 A e n m o d o s l e e p
C o r r i e n t e p o r E / S s u m i n i s t r a d a / a b s o r b i d a . . . . . . . . . . . . . . 2 0 m A / 2 5 m A N º d e i n s t r u c c i o n e s P B A S I C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 6 I n t e r f a z c o n P C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P u e r t o s e r i e ( 9 6 0 0 b a u d i o s ) P r o g r a m a e d i t o r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . S T A M P 2 . E X E ( D O S ) S T A M P W . E X E ( W I N D O W S )
h t t p : / / w w w . m s e b i l b a o . c o m / n o t a s / s o f t w a r e / E d i t o r B A S I C S t a m p V 2 _ 2 m u l t i l e n g u a j e . e x e
E l modo de func ionamien to de es tos módu los es tá basado en depos i ta r e l p rog rama, con fecc ionado en PBASIC y ed i tado en e l PC , en una memor ia EEPROM, que puede lee rse y bo r ra rse para vo lve r a esc r i b i r se un mi l l ón de veces . Después , en e l i n te r i o r de l módu lo y de fo rma au tomát i ca , se va pasando e l p rog rama ins t rucc ión a ins t rucc ión a un m ic rocon t ro lador P IC de M ic roch ip en cuya memor ia es tá g rabado un p rograma In térpre te que t r aduce cada ins t rucc ión PBASIC en las ins t rucc iones máqu ina co r respond ien tes pa ra p rocede r a su e jecuc ión . Los dos e lemen tos p r inc ipa les de l módu lo BASIC S tamp son e l m ic rocon t ro lador g rabado con e l I n té rp re te PBASIC y l a EEPROM que con t iene e l p rog rama ed i tado en e l PC , pe ro tamb ién ex is ten o t ros e lemen tos aux i l i a res pa ra la es tab i l i zac ión de la tens ión , e l Rese t , e l osc i l ador de la f recuenc ia
En lo que respec ta a l ch ip de l m ic rocon t ro lador , l as pa t i t as OSC1 y
OSC2 se emp lean pa ra con t ro la r la f recuenc ia de t raba jo de l p rocesado r . En t re e l l as se sue le co locar un c r i s ta l de cuarzo o un resonador ce rámico (se puede obse rva r , en la f i gu ra de l ch ip , en la pa r te supe r io r i zqu ie rda en co lo r anaran jado ) con la f r ecuenc ia de func ionamien to 20 MHz. La pa t i l l a MCLR#/Vpp t i ene dos func iones . Obse rve que e l s ímbo lo # s ign i f i ca que su es tado ac t i vo es e l negado , po r l o cua l cuando pasa a n i ve l ba jo se p roduce un RESET o re in i c ia l i zac ión de l p rog rama. La o t ra func ión de es ta pa t i ta rep resen tada por Vpp s i r ve pa ra in t roduc i r po r e l l a , cuando se g raba e l p rog rama, la tens ión espec ia l que se neces i ta y que es de l o rden de 13 ,8 VDC. La pa t i l l a RTCC se usa para ap l i ca r en e l l a una
f recuenc ia ex te rna de func ionamien to de un tempor i zador que posee e l P IC . Cuando no se usa es tempor i zador conv iene conec ta r es ta pa t i ta a pos i t i vo para reduc i r e l consumo.
Las res tan tes pa t i l l as de l ch ip son l íneas de en t rada y sa l i da por las que e l m ic rocon t ro lador rec ibe o env ía la in fo rmac ión co r respond ien te a l p rocesamien to de l p rog rama. Las conex iones RA0-RA3 son 4 pa t i t as b id i r ecc iona les , de n i ve l TTL de la puer ta A pa ra la conex ión de pe r i fé r i cos ex te rnos . RB0-RB7 son 8 l í neas b id i r ecc iona les TTL de la pue r ta B y RC0-RC7 son 8 l í neas b id i r ecc ionaes TTL , pe r tenec ien tes a la puer ta C .
4. INTRODUCCIÓN AL LENGUAJE PBASIC. 4.1 LOS LENGUAJES UTILIZADOS POR LOS MICROCONTROLADORES.
Los m ic rocon t ro ladores se usan fundamenta lmen te t r es lengua jes : Lengua je Ensamb lador , de ba jo n i ve l . Lengua je C , de a l to n i ve l . Lengua je “BASIC” , de a l to n i ve l .
E l l engua je Ensamb lador se d ice que es de ba jo n i ve l po rque sus
ins t rucc iones son exac tamen te las que e l p rocesador sabe in te rp re ta r y e jecu ta r . En rea l idad , e l compu tador d ig i ta l só lo acep ta ins t rucc iones en cód igo b ina r io y e l Ensamb lador fac i l i t a su esc r i tu ra a l p rog ramador pe rm i t i endo expresar las med ian te nemón icos , que con t res o cua t ro le t ras s ign i f i ca t i vas expresan , en ing lés , l a operac ión que con l leva la i ns t rucc ión . Por e jemp lo una ins t rucc ión que “mueve ” un da to de un s i t i o (A) a o t ro (B) , en Ensamb lador se esc r i be MOV A ,B .
E l p rob lema su rge en e l Ensamb lador po r l a poca po tenc ia de las
ins t rucc iones que es capaz de e jecu ta r e l p rocesador . Norma lmen te los co r respond ien tes a los m ic rocon t ro ladores de 8 b i t s , que usaremos , saben sumar , r es ta r , hacer operac iones lóg icas AND, OR, XOR, saben ro ta r un da to de 8 b i t s , mover lo de un s i t i o a o t ro y muy poqu i to más . S i deseamos hacer una mu l t i p l i cac ión hay que con fecc ionar un p rograma que pa ra consegu i r lo rep i ta l as sumas las veces necesa r ias . Es un lengua je de “ba jo n i ve l ” . E l p rograma Ensamb lador l o ún ico que hace es t r aduc i r l os nemón icos con los que se esc r iben las ins t rucc iones a cód igo b ina r io pa ra que e l p rocesado r sea capaz de i n te rp re ta r las y e jecu ta r las . Desar ro l l a r p rogramas en lengua je Ensamb lador ex ige un conoc im ien to p ro fundo de la a rqu i tec tu ra in te rna de l p rocesado r lo que
supone una base muy só l i da de conoc im ien tos in fo rmá t i cos y e lec t rón icos , y su n i ve l va mucho más a l l á de es te cu rso . Los lengua jes de a l to n i ve l t i enen ins t rucc iones más po ten tes : saben mu l t i p l i ca r , saca r l a ra íz cuadrada y rea l i za r func iones y operac iones mucho más comp l i cadas que las que pueden hacer l as i ns t rucc iones de l a máqu ina . Pe ro como la máqu ina es l a m isma , l a rea l i zac ión de esas ins t rucc iones se t i ene que hace r con p rogramas de ins t rucc iones e lemen ta les . Cada ins t rucc ión de a l to n i ve l se conv ie r te en un pequeño p rograma de ins t rucc iones de ba jo n ive l . Por eso para que e l
p rocesador pueda e jecu ta r l as ins t rucc iones de un l engua je de a l to n ive l p rec isa o t ro p rog rama que las descomponga en las ins t rucc iones de ba jo n i ve l co r respond ien tes . A es tos p rogramas se l l ama compi ladores . Los comp i lado res se encargan de t raduc i r un p rograma con fecc ionado con ins t rucc iones de a l to n i ve l a o t ro equ i va len te con ins t rucc iones de ba jo n i ve l . Hay una va r ian te de es tos
p rogramas que rec iben e l nombre de in té rpre tes que rea l i zan d icha t r aducc ión pero ins t rucc ión por i ns t rucc ión , o sea , t raducen una i ns t rucc ión de a l to n i ve l en l as co r respond ien tes de ba jo n i ve l que e jecu ta e l p rocesado r y a con t inuac ión pasan a la s igu ien te . Los comp i ladores t raducen e l p rograma comp le to E l l engua je C es de t i po p ro fes iona l , muy comp le to y po ten te , pe ro su mane jo requ ie re un só l i da base en in fo rmá t i ca , y po r supues to , en la ap l i cac ión que nos ocupa se rá necesar io un conoc im ien to a fondo de la a rqu i tec tu ra i n te rna de l m ic rocon t ro lador . E l l engua je BASIC t i ene po ten tes ins t rucc iones que se esc r iben i gua l que se denominan en ing lés y su mane jo no requ ie re conoc im ien tos de a rqu i tec tu ra de p rocesadores , de e lec t rón ica y cas i tampoco de in fo rmát i ca ; es pa ra todos . A t í t u lo de e jemp lo e l s igu ien te p rog rama ca lcu la e l á rea de un c í r cu lo
1 0 I N P U T R ‘ N o s p i d e e l v a l o r d e l r a d i o 2 0 L E T S = 3 . 1 4 * R * R ‘ C a l c u l a e l á r e a 3 0 P R I N T S ‘ N o s m u e s t r a e l v a l o r d e l á r e a c a l c u l a d a 4 0 E N D ‘ F i n d e l p r o g r a m a
4.2. LOS MODULOS BASIC STAMP DE PARALLAX La empresa amer i cana Para l lax d iseño y comerc ia l i zó en 1992 e l p r imer módu lo BASIC-S tamp cuya o r i g ina l idad y u t i l i dad ha revo luc ionado e l mundo de l d i seño de la e lec t rón ica p rogramab le basada en los m ic rocon t ro ladores .
Su g ran apor tac ión cons is te en o f rece r un módu lo con todo e l ha rdware resue l to y l i s to pa ra acop la r l e l os pe r i fé r i cos a con t ro la r , y un so f tware acces ib le pa ra cua lqu ie r pe rsona a l es ta r basado en un lengua je BASIC, denominado PBASIC , que une la senc i l l ez de l BASIC y su adap tac ión a l m ic rocon t ro lador que emp lea . Es tos dos fabu losos i ng red ien tes l os mezc la con una po l í t i ca comerc ia l de comp le ta in fo rmac ión de sus p roduc tos y una g ran generos idad en la c reac ión y l i b re d ispos ic ión de manua les , p rog ramas , ap l i cac iones , cu rsos , as is tenc ia técn ica y una red de d is t r ibu ido res espa rc ida po r todo e l mundo .
Bas ta p inchar o inse r ta r e l módu lo BASIC S tamp en la t a r j e ta de ap l i cac ión que con t iene los pe r i fé r i cos a con t ro la r . Se conec ta después a l PC para ed i ta r e l p rog rama y vo lca r lo a l P IC para pone r en marcha e l s i s tema . Luego se puede mod i f i ca r e l p rograma d i rec tamen te sob re e l p ro to t ipo para l l eva r a cabo cua lqu ie r camb io o me jo ra .
E l modo de func ionamien to de es tos módu los es tá basado en depos i ta r e l p rog rama, con fecc ionado en PBASIC y ed i tado en e l PC , en una memor ia EEPROM, que puede lee rse y bo r ra rse para vo lve r a esc r i b i r se un mi l l ón de veces . Después , en e l i n te r i o r de l módu lo y de
fo rma au tomát i ca , se va pasando e l p rog rama ins t rucc ión a ins t rucc ión a un m ic rocon t ro lador P IC de M ic roch ip en cuya memor ia es tá g rabado un p rog rama In té rp re te que t raduce cada ins t rucc ión PBASIC en las ins t rucc iones máqu ina co r respond ien tes y p rocede a su e jecuc ión . Los
dos e lemen tos p r inc ipa les de l módu lo BASIC Stamp son e l m ic rocon t ro lador g rabado con e l I n té rp re te PBASIC y l a EEPROM que con t iene e l p rog rama ed i tado en e l PC , pe ro tamb ién ex is ten o t ros e lemen tos aux i l i a res . La memor ia EEPROM que u t i l i za e l módu lo OEM-BS2_ IC es l a denominada 24LC16B, en la que se a lmacena e l p rograma en PBASIC rec ib ido desde e l PC . Las ca rac te r ís t i cas más impor tan tes de es ta memor ia son :
Capac idad : 2KB C ic los de esc r i t u ra / lec tu ra : 1 m i l l ón Ve loc idad de esc r i tu ra : 10 ms F recuenc ia de func ionamien to : 400 KHz Tens ión de func ionamien to : de 2 ,5 a 5 ,5 VDC
Las memor ias EEPROM pueden se r l e ídas y esc r i tas . No son
vo lá t i l es , es dec i r , l a i n fo rmac ión a lmacenada se man t iene aún después de desconec ta r l a a l imen tac ión .
4.3. EDITOR PBASIC E l ed i to r PBASIC es e l p rog rama donde esc r ib imos e l con jun to de i ns t rucc iones para p rog ramar e l módu lo Bas ic S tamp. Es s im i la r en apar ienc ia a cua lqu ie r ed i to r de tex to de l s i s tema opera t i vo W indows . E l ed i to r con t iene una se r ie de he r ramien tas espec í f i cas como e l i den t i f i cado r de l módu lo Bas ic S tamp, co r rec to r o r tog rá f i co de s in tax i s , mapa de memor ia y ven tana de l depu rado r .
E l ed i to r t i ene la capac idad de abr i r 16 ven tanas s imu l táneamen te . Las operac iones de cop ia r , pegar y co r ta r f unc ionan de la m isma fo rma que en e l s i s tema ope ra t i vo Windows .
M a p a d e l a m e m o r i a E E P R O M
4.4. OPERACIONES ARITMÉTICAS Y LÓGICAS EN PBASIC E l l engua je de p rog ramac ión PBASIC fue c reado espec í f i camente para p rogramar los módu los BS2 de Para l l ax , aunque es un lengua je muy pa rec ido a l BASIC es a lgo menos po ten te y t i ene c ie r tas s ingu la r idades que habrá que tener en cuen ta en l a p rogramac ión . PBASIC e fec túa las operac iones ma temát i cas en e l o rden que se esc r iben de i zqu ie rda a de recha , s in segu i r l a p r io r idad adop tada un i ve rsa lmen te en ma temát i cas . En es te sen t i do , l a suma y l a res ta no suponen p rob lema a lguno , pe ro cuando u t i l i zamos la mu l t i p l i cac ión y l a d i v i s ión podemos encon t ra rnos resu l tados no deseados s i cons ide ramos las s ingu la r idades de es te lengua je de p rogramac ión . Cons ide remos , como e jemp lo , l a exp res ión :
2/4*56451 W
PBASIC reso lve r ía l a exp res ión de l a s igu ien te fo rma :
2022/404
4044*101
1015645
Ventana de l ident i f i cador de modulo y puerto a l que es tá
A f i n de reso l ve r e l i nconven ien te an te r io r se pueden u t i l i za r pa rén tes is (un máx imo de 8 por expres ión ) pa ra que la operac ión se e fec túe co r rec tamen te :
2/4*56451 W
En es te caso , e l r esu l tado se r ía :
15745112
1122/224
2244*56
O t ro cond ic ionan te impor tan te que se ha de tener en cuen ta , es que
PASIC no admi te números f racc ionar ios por l o que , a t í tu lo de e jemp lo , 3 ,1459 se debe expresar como 22 /7 .
En PBASIC todas las operac iones matemát i cas se rea l i zan con
can t idades pos i t i vas y con números en te ros de 0 a 65535 (2 1 6 d íg i tos b ina r ios ) . S i se u t i l i zan can t idades nega t i vas , en ese caso , l os va lo res máx imos y mín imos es ta r ían comprend idos en t re +32767 y -32767
En la s igu ien te tab la se ind ican los s ímbo los u t i l i zados para las
d i ve rsas operac iones pos ib les en PBASIC S Í M BO LO O P E R A C I Ó N
+ S u ma
- R e s t a
* M u l t ip l i c a c i ó n
* * M u l t ip l i c a c i ó n d e d o b le p r e c i s ió n ( d e v u e lv e ma s d e 1 6 b i t s )
/ D iv i s ió n
/ / D iv i s ió n ( d e v u e lv e e l r e s to )
M I N L i mi t a e l v a l o r má s b a j o
M AX L i mi t a e l v a l o r má s a l t o
D I G I T R e to r n a e l d íg i t o e s p ec i f i c ad o d e u n n ú me r o
< < D es p l az a mi e n to d e b i t s a l a i z q u i e r d a
> > D es p l az a mi e n to d e b i t s a l a d e r e ch a
R EV I n v e r s o d e l o s b i t s d e l n ú me r o e s p ec i f i c ad o
& O p e r a d o r l ó g i c o A N D
| O p e r a d o r l ó g i c o O R
^ O p e r a d o r l ó g i c o X O R
4.4.1. PROGRAMAS DE EJEMPLO CON OPERACIONES MATEMÁTICAS
An tes de abordar l os p rog ramas de e jemp lo exp l i ca remos la i ns t rucc ión DEBUG: S in tax is : DEBUG Dato1 { , Dato2…} Mues t ra los da tos espec i f i cados sobre la pan ta l la de l PC . E l tex to o números pueden es ta r en va r ios fo rma tos (B ina r io , Dec ima l , Hexadec ima l o ASCIL) y se usa como fo rma de depurac ión de p rograma. Los Datos pueden se r va r iab le /cons tan te /expres ión que espec i f i ca la i n fo rmac ión a mos t ra r . Los da tos pueden se r ca rac te res ASCI l ( tex to o
ca rac te res de con t ro l ) , números dec ima les (0 -65535) , números hexadec ima les ($0000 -$FFFF) o números b ina r ios (has ta %1111111111111111) . E jemp lo : W1 = 68 DEBUG W1 ‘Mues t ra la le t ra D , cuyo cód igo ASCIL es 68 DEBUG ?W1 ‘Mues t ra e l va lo r de la va r iab le W1=68 DEBUG “F in ” ‘Mues t ra e l mensa je F in Ejemplos con la operac ión suma (+ ) . Suma var iab les y cons tan tes , devue lve un resu l tado de 16 b i t s , t raba ja con can t idades en te ras en un rango de 0 a 65535 , s i e l resu l tado de la suma es mayor de 65535 , se p roduce un desbordamien to y e l r esu l tado se rá la d i fe renc ia de l desborde .
E jemplos con la operac ión res ta ( - ) . Res ta va r iab les y cons tan tes , devue lve e l resu l tado de 16 b i t , t raba ja con can t idades en te ras en un rango 0 -65535 , s i se desea cons ide ra r e l s igno se debe an teponer la expres ión SDEC.
Ejemplo con la operac ión d iv is ión ( / ) y res to ( / / ) D i v ide va r i ab les y cons tan tes devo l v iendo la pa r te en te ra de l a d i v i s ión con e l resu l tado de 16 b i t s . T raba ja con can t idades en te ras en un r ango de 0 a 65535 , deb iendo se r l as can t idades pos i t i vas .
Ejemplos con la operac ión mul t ip l icac ión ( * ) Mu l t i p l i ca va r iab les y cons tan tes , devo lv iendo resu l tados de has ta 16 b i t s . Pe rm i te u t i l i za r can t idades en te ras en un rango de 0 a 65535 , las can t i dades pueden se r pos i t i vas y nega t i vas . S i e l r esu l tado excede de 65535 , e l exceso se p ie rde , l a mu l t ip l i cac ión man t iene la reg la de los s ignos . S i se t raba ja con can t idades nega t i vas los resu l tados máx imos y m ín imos tendr ían un rango desde -32767 a +32767
Ejemplo de mul t ip l icac ión dob le ( * * ) Como se ha ind icado e l va lo r de una mu l t ip l i cac ión no puede excede r de l va lo r 65535 , como va lo r dec ima l máx imo . La mu l t i p l i cac ión dob le nos perm i te so luc ionar es te i nconven ien te pud iendo ca lcu la r va lo res de has ta 2 3 2 b i t s ( de 0 a 4 .292 .967 .295) . Para rea l i za r es ta operac ión hay que tener en cuen ta , que la mu l t ip l i cac ión dob le rea lmen te ca lcu la los 16 b i t s super io res de los 32 b i t s pos ib les , l os 16 b i t s i n fe r io res se ob t i enen con la mu l t ip l i cac ión norma l . En o t ras pa lab ras , l a mu l t i p l i cac ión dob le nos d ice cuan tas veces se desborda ron los 16 b i t s supe r io res .
En e l p rog rama an te r io r DEC5 i nd ica que mues t re e l resu l tado dec ima l en fo rma to de 5 d íg i tos , en tan to que , CR imp l i ca un re to rno de ca r ro para que e l r esu l tado de W4 lo mues t re en un reng lón d is t i n to que W3. E jemp lo de mu l t i p l i cac ión de f racc io nes de 8 b i t s (de 0 a 256) ( * / ) Qué sucede s i queremos mu l t i p l i ca r a lguna f racc ión po r un número en te ro , pues PBASIC só lo mane ja can t idades en te ras , aunque es pos ib le mane ja r f r acc iones para ob tener resu l tados en te ros . Tomemos como e jemp lo que deseamos mu l t i p l i ca r 100 *3 ,5 cuyo resu l tado es 350 y , po r t an to , en te ro . Sabemos que 3 ,5 es e l resu l tado de la d i v i s i ón de dos en te ros (7 /2 ) . ¿Qué resu l tado se ob t iene con e l s igu ien te p rograma?
E l resu l tado ob ten ido se r ía 300 pues e l r esu l tado de d i v id i r 7 /2=3 , que mu l t i p l i cado por 100 , da 00300 Para reso l ve r e l p rob lema e l p rograma deb ie ra es ta r esc r i t o de l s igu ien te modo : PBASIC e jecu ta : 100*7 = 700 ; 700 /3=350 , recuerde que se u t i l i za l a reg la de l as operac iones a r i tmé t i cas de i zqu ie rda a derecha
4.5. ORGANIZACIÓN DE LA MEMORIA RAM DE DATOS DEL BS2 La s igu ien te tab la mues t ra los nombres de los reg is t ros de en t rada , sa l i da y d i recc ionamien to de l pue r to de l BS2 . E l l engua je PBASIC reserva las p r imeras pos ic iones de la memor ia de da tos de l p rocesador . Las t res p r imeras pa lab ras se reservan para p ines de en t rada INS, p ines de sa l ida OUTS y b i t s de d i recc ionamien to de los p ines D IR , que s i se les ca rga con 0 ( ce ro ) as ignan e l p in co r respond ien te como en t rada y , s i se ca rgan con 1 , como sa l ida . Las 13 s igu ien tes pa lab ras de (W0-W12) que pueden u t i l i za rse en tamaño By te (B0 -B25) es tán d ispon ib les para guardar va r i ab les y da tos de l usuar io en los p rogramas . E l módu lo BS2- IC t iene 16 p ines de en t rada y sa l ida d ispon ib les para e l usuar io en donde se pueden co locar los pe r i f é r i cos a con t ro la r . Para con f i gu ra r a los 16 p ines como sa l ida hay que esc r ib i r en e l p rograma: D IRS=%1111111111111111
4.6. INSTRUCCIONES PBASIC Se o f rece segu idamen te un b reve resumen de las ins t rucc iones PBASIC pa ra los l engua jes de l i n te rp re te BS2- IC . A lgunas de e l l as se ana l i za rán más en p ro fund idad a med ida que se mon ten l as d is t in tas p rác t i cas .
NOTA: Las resistencias del LED y ZUMBADOR están conectadas según se indica en el entrenador Universal Trainer
5. PRACTICA 1: CONTROLANDO UN LED Y UN ZUMBADOR. En es ta exper ienc ia se t ra ta de encender du ran te 2 segundos e l
d iodo LED conec tado en la pa t i l l a P0 , m ien t ras duran te ese t i empo e l zumbador es tá en s i l enc io . Luego , du ran te 3 segundos , e l zumbador p roduce un p i t i do m ien t ras e l LED pe rmanece apagado . Además e l p rograma debe v i sua l i za r en l a pan ta l la de l depu rador e l nombre de l e je rc i c io “LUZ Y SONIDO” , as í como e l mensa je de “ ILUMINA” m ien t ras e l LED es tá encend ido y e l mensa je “P ITA” cuando suena e l zumbador . E l p rograma p ropues to es :
Una vez ed i tado e l p rograma conec te e l PC a l módu lo OEM BS2- IC que es ta rá conex ionado con los cab les a la fuen te y a los pe r i fé r i cos y conec te l a energ ía a l Un ive rsa l T ra ine r . E jecu te e l p rograma y s i t odo sa le b ien se enc iende 2 segundos e l LED y luego p i ta du ran te 3 segundos e l zumbador . Además en la pan ta l l a de l depurado r aparece e l mensa je ILUMINA cuando es tá encend ido e l LED y e l mensa je P ITA cuando e l zumbador suena .
ESQUEMA ELÉCRICO Y DE CONEXIONADO
D E B U G “ L U Z Y S O N I D O ” , C R ‘ S e mu e s t r a e n l a p an t a l l a d e l P C e l ‘ t e x t o L U Z y S O N I D O I N I C I O : D E B U G “ I L U MI N A ” , C R ‘ S e mu e s t r a en l a p an t a l l a d e l P C e l ‘ me n s a j e I L U M I N A H I G H 0 ‘ P o n e a u n o l ó g i c o l a p a t i t a 0 L O W 1 5 ‘ P o n e a c e r o l ó g i c o e l p in 1 5 P A U S E 2 0 0 0 ‘ S e p r o d u c e u n a p au s a d e 2 s e g . D E B U G “ S U E N A ” , C R ‘ S e m u e s t r a m e n s a j e e n e l P C L O W 0 ‘ P o n e a c e r o l ó g i c o e l p in 0 H I G H 1 5 ‘ P o n e a u n o l ó g i c o e l p in 1 P A U S E 3 0 0 0 ‘ S e p r o d u c e u n a p au s a d e 3 s e g . G O T O I N I C I O ‘ S a l t a a l a e t i q u e t a I N I C I O
6.1. VARIABLES DE NOMBRES FIJOS EN PBASIC. Las va r iab les son l os nombres dados a l os l ugares donde se
guardan los da tos en fo rma tempora l . Una va r iab le es un s ímbo lo que con t iene un c ie r to va lo r . Ese va lo r puede se r camb iado ba jo e l con t ro l de l p rograma y , po r lo t an to , e l va lo r de l as va r i ab les puede camb ia r , pe ro su nombre no .
PBASIC puede u t i l i za r nombres de var iab les p rede f in idas , como las
que se exponen en l a t ab la de memor ia de apar tado 4 .5 , o va r i ab les con nombres de f in idos po r e l usuar io .
Las va r iab les f i j as t i enen su o rden de je ra rqu ía (W0 es una va r iab le
t i po WORD de 16 B ITS, que con t iene a su vez a dos va r iab les t i po BYTE de 8 B i ts : B0 y B1) . Por e jemp lo suponga que la va r i ab le W0 con t i ene e l va lo r b ina r io (%0011101011101001) , en tonces B0 con t iene la pa r te ba ja de 8 B i ts y B1 la pa r te a l t a de l os 8 B i ts .
W0 = %0011101011101001 B0 = %11101001 B1 = %00111010 Las va r iab les p rede f in idas de fáb r i ca no neces i tan se r dec la radas
PBASIC las reconoce . Pero puede se r a lgo con fuso sobre todo cuando se t i ene un p rograma muy ex tenso .
A fo r tunadamente PBASIC da la l i ber tad de que us ted de f i na sus
p rop ias va r iab les con e l nombre más aprop iado a la acc ión a e jecu ta r . En o t ras pa lab ras us ted puede persona l i za r l os nombres e jemp lo : con teo_genera l = 56 , en vez de B1 = 56 , es mucho más fác i l r e lac ionar un nombre as ignado que un nombre f i j o como B1 .
En PBASIC , los nombres de las va r iab les pueden tene r una longi tud de hasta 32 carac teres . La long i tud de l nombre no t iene n inguna in f luenc ia en la ve loc idad de e jecuc ión de l p rograma. Por e jemp lo , l a ins t rucc ión : x = 38 , tendrá l a m isma ve loc idad de e jecuc ión que : es te_es_un_nombre_muy_ la rgo = 38 .
De cua lqu ie r manera , en l uga r de usa r l as va r i ab les p rede f i n idas es
recomendab le u t i l i za r un nombre espec i f i co pa ra cada va r iab le de acuerdo a a lgo re lac ionado con la ap l i cac ión u t i l i zada .
6.2. DECLARACIÓN DE VARIABLES DEL BS2 La dec la rac ión de va r iab les cons is te en f i j a r le un nombre de menos
de 32 ca rac te res y un tamaño en B i t s . Las dec la rac iones de va r iab les hay que rea l i za r l as a l p r inc ip io de l p rograma o an tes de u t i l i za r las . Pa ra dec la ra r va r iab les se u t i l i za e l comando VAR . La s in tax is es la s igu ien te :
Nombre_va r iab le es e l nombre que us ted le as ignara a l a va r i ab le no debe se r mayor de 32 ca rac te res , puede con tene r una secuenc ia de le t ras comb inadas con números tamb ién acep ta e l gu ión la rgo “_ ” . En PBASIC, l os nombre_var iab le no son sens ib le a mayúscu las y m inúscu las .
Tamaño es tab lece e l número de B i t s r ese rvados . PBASIC da 4 t i pos de tamaño :
Tipo E lementosVa lores
dec ima les pos ib les
BIT 1 b i t 2 1 2 (0 -1 )
N IB 4 b i t s 2 4 16 (0 -15 )
BYTE 8 b i t s 2 8 256 (0 -255)
WORD 16 b i t s 2 1 6 65536 (0 -65535)
E l espac io pa ra cada va r iab le es au tomá t i camen te reservado en la
memor ia de l Bas icS tamp. E l tamaño de las va r iab les a u t i l i za r depende de la can t idad de
va r iac iones que neces i temos , e jemp lo de a lgunos casos u t i l i zando nues t ras p rop ias de f in i c iones con l a sen tenc ia VAR: hormiga VAR b i t ‘ Puede tomar 2 e lemen tos 0 y 1 gato VAR n ib ‘ Puede tomar 16 e lemen tos desde 0 a 15 perro VAR byte ‘ Puede tomar 256 e lemen tos desde 0 a 255 e le fante VAR w ord ‘Puede tomar 65 ,536 e lemen tos desde 0 a 65 .535
S i po r e jemp lo neces i tamos l ee r una en t rada de l m ic rocon t ro lador
neces i tamos una va r i ab le t i po bi t , pues la en t rada só lo t i ene dos va lo res pos ib le 0 o 1 l óg ico . S i neces i tamos rea l i za r un con teo de l 1 a l 10 es su f i c ien te con una de t i po nib , pues es ta puede con tener 16 e lemen tos . En es te caso , se podr ía u t i l i za r una de t i po byte , pe ro la es ta r íamos in f rau t i l i zando .
S i queremos a lmacenar un con teo de 10 .000 neces i tamos una t i po
w ord , que puede a lmacenar has ta 65 .536 e lemen tos , l a t i po byte en es te caso se r ía menos que insu f i c ien te , pues só lo puede con tener 256 e lemen tos .
Practica de control Se p ropone a l l ec to r l a s igu ien te p rác t i ca : Se p re tende con t ro la r dos LEDs conec tados a los p ins 0 y 1 y
un zumbador conec tado a la pa t i l l a 3 med ian te un in te r rup to r conec tado a l p in 5 , de fo rma que se cump la l a s igu ien te secuenc ia :
S i e l p in 5 es tá a n i ve l ba jo luce e l d iodo LED1 conec tado en e l p in 0 du ran te 100 ms es tando los p ins 1 y 3 a ce ro (LED2 y zumbador apagados ) .
Si queremos almacenar un conteo de 10.000 necesitamos una tipo word, que puede almacenar hasta 65.536 elementos, la tipo byte en este caso sería menos que insuficiente, pues sólo puede contener 256 elementos
Pasados los 100 ms se apaga e l LED1 (p in 0 ) y se ac t i van e l zumbador y e l LED 2 duran te 75 ms .
T ras los 75 ms se vue lve a repe t i r e l c i c lo i n in te r rump idamen te has ta que l a en t rada 5 se ponga a 1 lóg ico , en cuyo caso , se apagará todo .
A l vo lve r a ce ro e l p in 5 se vue lve a repe t i r l a secuenc ia ind icada
6.3. DECLARACIÓN DE ARRAYS DE VARIABLES (Matrices) Las ma t r i ces de va r iab les se pueden c rea r de fo rma s im i la r a como
se c rean las va r iab les senc i l l as . nombre_variable VAR tamaño (n) Donde : • nombre_va r iab le y t amaño es e l m ismo de las dec la rac iones de
va r iab les . E l nuevo e lemen to es (n ) , y l e d i ce PBASIC cuan to espac io reserva r pa ra la m isma var iab le de l tamaño espec i f i cado .
A lgunos e jemp los de c reac ión de ma t r i ces son los s igu ien tes : automovi l VAR byte (10 ) ‘ C rea 10 va r iab les t i po by te La p r imera ub icac ión den t ro de a l ma t r i z es e l e lemen to ce ro . En la
ma t r i z au tomóv i l an te r i o r l os e lemen tos es tán numerados automovi l (0 ) a automovi l (9 ) con ten iendo 10 e lemen tos en to ta l . Dada l a f o rma en que las mat r i ces es tán loca l i zadas en memor ia hay l ím i tes de tamaño para cada t i po .
Tamaño Nº máx. de elementos BIT 208 NIB 52 BYTE 26 WORD 13
Los a r rays son muy conven ien tes pa ra reco lecc ión de da tos , en
v i s ta de que e l número de e lemen tos (n ) puede se r sus t i tu ido por o t ra va r iab le . Vea e l s igu ien te e jemp lo y l a sa l i da que gene ra :
FRUTAS VAR Byte(5) INDICE VAR Nib FRUTAS(1) = 42 FRUTAS(2) = 121 FRUTAS(3) = 214 FRUTAS(4) = 254 FOR INDICE = 0 TO 4 DEBUG ?FRUTAS(INDICE),CR NEXT STOP
6.4. MODIFICADORES (ALIAS) DE LAS VARIABLES. VAR puede se r usado para c rear un a l i as pa ra o t ra va r iab le . Es to es muy ú t i l pa ra acceder a l i n te r io r de una va r iab le . Dog VAR by te ‘Dog es una va r iab le de l t i po By te F ido VAR Dog ‘F ido es o t ro nombre de Dog En es te e jemp lo , F ido es e l a l i as de la va r iab le Dog . Cua lqu ie r va lo r a lmacenado en dog puede se r mos t rado por F ido y v i ceve rsa . Ambos nombres se re f ie ren a lo m ismo.
Con los a l i as podemos acceder en cua lqu ie r momen to a l i n te r io r de una va r iab le s in causar n inguna a l te rac ión a la va r iab le o r ig ina l . En la s igu ien te tab la se puede ve r l a j e ra rqu ía de l os mod i f i cadores o a l i as de l as va r iab les .
La sa l ida que p roduce e l p rograma an te r io r se puede aprec ia r en la
f i gu ra
7. CONSTANTES EN PBASIC
7.1 DECLARACIÓN DE CONSTANTES EN PBASIC Las l l amadas cons tan tes pueden se r c readas de manera s im i la r a
las va r iab les . A veces , puede se r más conven ien te u t i l i za r un nombre de cons tan te en luga r de un número .
' Ejemplo de definición de utilización de variables cuerpo_humano VAR Word cabeza VAR cuerpo_humano.HIGHBYTE extremidades VAR cuerpo_humano.BYTE0 ojos VAR cabeza.BIT0 nariz VAR cabeza.BIT1 oido VAR cabeza.BIT2 boca VAR cabeza.BIT3 pie_izquierdo VAR cuerpo_humano.LOWNIB pie_derecho VAR cuerpo_humano.HIGHNIB cabello VAR cuerpo_humano.LOWBIT dedo VAR cuerpo_humano.HIGHBIT cuerpo_humano=%1101101010011000 DEBUG BIN16 ?cuerpo_humano, CR DEBUG BIN16 ?cabeza, CR DEBUG BIN16 ?extremidades, CR DEBUG BIN16 ?ojos, CR DEBUG BIN16 ?nariz, CR DEBUG BIN16 ?oido, CR DEBUG BIN16 ?boca, CR DEBUG BIN16 ?pie_izquierdo, CR
Son c readas usando la pa lab ra c lave CON . S i e l número neces i ta se r camb iado , ún icamen te habr ía que camb ia r lo en un pa r te de l p rog rama donde se de f i ne l a cons tan te . No pueden gua rda rse da tos va r iab les den t ro de una cons tan te .
La s in tax is es la s igu ien te : nombre_cons tan te CON va lo r_numer ico Donde :
nombre_cons tan te es e l nombre que us ted le as igna ra a la va r iab le no debe se r mayor de 32 ca rac te res , puede con tene r una secuenc ia de le t ras comb inadas con números tamb ién acep ta e l gu ión la rgo “_ ” . En PBASIC, l os nombre_cons tan te no son sens ib les a mayúscu las y m inúscu las .
va lo r_numer ico es un va lo r de (0 -65535) . PBASIC pe rm i te de f i n i r cons tan tes numér i cas en t r es bases :
dec ima l , b ina r ia y hexadec ima l . Va lo res b ina r ios son de f in idos usando e l p re f i j o “%” y va lo res hexadec ima les usando e l p re f i j o “$ ” . Los va lo res dec ima les se toman por de fec to y no requ ie ren p re f i j o .
E jemp lo : 100 ’ va lo r dec ima l 100 %100 ‘ va lo r b ina r i o pa ra e l dec ima l 4 $100 ‘ va lo r hexadec ima l pa ra e l dec ima l 256 . “A” ‘ ASCI I equ iva len te a dec ima l ( 65 ) . A lgunos e jemp los son : bater ia CON 12 cont inentes CON 5 l ib ro CON $E7 encend ido CON %1101 detener CON “s” Es pos ib le ca lcu la r exp res iones a t ravés de cons tan tes p rev iamen te
de f i n idas : temperatura con 37 grados_c con ( temperatura*5 ) /9 g rados_f con (grados_c –32)
8. PRACTICA2: INTERMITENCIA DE UN DIODO LED. En es ta p rác t i ca se pers igue hacer pa rpadear un d iodo LED en unos
in te rva los p rev iamen te de f in idos med ian te la dec la rac ión de cons tan tes . E l p in donde se conec ta e l LED y e l i n te rva lo se de f inen p rev iamen te med ian te la dec la rac ión de l as cons tan tes pinLED e In te rva lo . As í m ismo , y a f i n de hacer una secuenc ia repe t i t i va , se in t roduce la e t i que ta COMIENZO l o que p rovoca un sa l to incond ic iona l desde l a l í nea de sa l to GOTO
ESQUEMA ELÉCTRICO Y DE CONEXIONADO DE LA PRÁCTICA.
9. DIRECCIONAMIENTO DIGITAL DE ENTRADAS SALIDAS CONSIDERANDO EL MAPA DE MEMORIA.
Si observamos el mapa de memoria del apartado 4.5. podemos apreciar que podemos trabajar con bits, nibbles, bytes y words.
De este modo podemos configurar los pines como entradas o como salidas y después asignamos un 0 o un 1 lógico a las direcciones previamente configuradas:
Ejemplo:
‘INTERMITENCIA DE UN DIODO LED ‘Declaración de constantes pinLED CON 0 ‘Establecemos a la variable pinLED la constante 0 Intervalo CON 500 ‘Retardo en milisegundos entre estados del LED COMIENZO: ‘Establecemos una etiqueta HIGH pinLED ‘Enciende el LED conectado al pin0 PAUSE Intervalo ‘Tiempo que el LED permanece encendido LOW pinLED ‘Apaga el LED conectado al pin0 PAUSE Intervalo ‘Tiempo que el LED permanece apagado GOTO COMIENZO ‘Salto a la etiqueta COMIENZO
DIR0=1 ‘El pin 0 – bit 0- se configura como salida DIR1=0 ‘La pin 1 – bit 1 - se configura como entrada DIRB=%0111 ‘En el nibble B se configuran los bits 4,5,6 como salidas y el ‘bit 7 como entrada OUT0= 1 ‘El pin 0 –bit 0- se pone a 1 ‘EL pin 1 –bit 1- queda a cero al no indicarle que se active OUT4 =1 ‘El pin 4 –bit 4- se pone a 1 OUT5 =0 ‘El pin 4 –bit 4- se pone a 0 OUT6 =1 ‘El pin 4 –bit 4- se pone a 1
'El presente programa configura bits y nibbles como E/S que pone a nivel alto o bajo 'en función del estado del bit 7, haciendo uso de un salto condicional INICIO: DIR0=1 'Configuramos el pin 0 -bit 0 - como salida DIR1=1 'Configuramos el pin 1 -bit 1 - como salida OUT0=1 'Ponemos el pin 0 -bit 0- a nivel alto OUT1=0 ‘Ponemos el pin 1 –bit 1- a nivel bajo LOW 15 'El pin 15 se pone a cero DIRB=%0111 'Configuramos el nibble B -bits 4,5,6 como salidas y el bit 7 como entrada OUT4=1 'Ponemos el pin 4 -bit 4- a nivel alto OUT5=0 'Ponemos el pin 5 -bit 5- a nivel bajo OUT6=1 'Ponemos el pin 6 -bit 6- a nivel alto DEBUG ?IN7 'Mostramos en pantalla el estado del pin 7 IF IN7=1 THEN salida 'Salto condicional. en el caso que el bit 7 esté a 1 saltar a la etiqueta SALIDA GOTO inicio 'Salto incondicional. Saltar a la posición de la etiqueta INICIO salida: 'Etiqueta salida HIGH 15 'Se pone a 1 la salida 15 IF IN7=0 THEN inicio 'Si el pin 7 -bit 7- esta a cero saltar a la etiqueta inicio si no seguir en la sig linea OUT4=0 'Ponemos el pin 4 -bit 4- a nivel bajo OUT5=1 'Ponemos el pin 5 -bit 5- a nivel alto OUT6=0 'Ponemos el pin 6 -bit 6- a nivel bajo DEBUG ?IN7 'Mostramos en pantalla el estado del pin 7 GOTO salida 'Salto incondicional. Saltar a la posición de la etiqueta SALIDA
DIODOS LEDP6 P5 P4 P1 +
5 V
GN
D
INTERRUPTOR
ESQUEMA DE CONEXIONADO
10. PRACTICA 3: CONFIGURACIÓN DE ENTRADAS-SALIDAS Y SALTO CONDICIONAL.
En es ta p rác t i ca con f igu ra remos d i fe ren tes p ines de l Bas ic S tamp como E /S y t raba ja remos con e t i que tas y sa l tos cond ic iona les . La p rác t i ca d ispone de 6 sa l i das y con t ro la 5 d iodos LED conec tados a los p ines 0 ,1 ,4 ,5 y 6 , y un zumbador conec tado a l P IN 15 . Como en t rada se ha con f igu rado e l P IN 7 . Para l a con f i gu rac ión de l as sa l idas de l os p ines 0 y 1 se ha u t i l i zado e l d i r ecc ionamien to de b i t med ian te la i ns t rucc ión D IR . Por o t r o l ado se ha con f i gu rado e l n ibb le B ( véase mapa de memor ia ) , donde e l b i t 7 se rá una en t rada y los b i t s 4 ,5 y 6 se rán sa l idas .
E l f unc ionamien to de l mon ta je es e l s igu ien te :
S i e l b i t7 es tá en 0 e l c i r cu i to se encuen t ra en e l es tado :
o P0=1 o P1=0 o P4=1 o P5=0 o P6=1
S i e l b i t 7 es tá a 1 e l es tad io de l c i r cu i to se rá :
d) Simplificamos la ecuación sacando factor común de a:
)(* lnaEa
Sea cual sea el método utilizado, llegamos a la conclusión que las ecuaciones
simplificadas de nuestro problema son:
lnaEl
lnaEn
lnaEa
**
**
)(*
4ª Fase. Representación del circuito eléctrico y de puertas lógicas:
Será este el momento, que en este caso particular, elegiremos para colocar el pulsador
del vaso.
Circuito eléctrico:
Pulsador del vaso
l
a
n
ElEn
n
a
l
Ea
a
ln
'**** AUTOMATISMO DE LA MÁQUINA DE REFRESCOS **** 'LO PRIMERO ES DIRECCIONAR LOS PINES A UTILIZAR DIR0=1 'Direccionamos el pin 0 como salida DIR1=1 'Direccionamos el pin 1 como salida DIR2=1 'Direccionamos el pin 2 como salida DIR5=0 'Direccionamos el pin 5 como entrada DIR6=0 'Direccionamos el pin 6 como entrada DIR7=0 'Direccionamos el pin 7 como entrada 'ASIGNAMOS LAS VARIABLES DE LOS PULSADORES DE ENTRADA A LOS PINES 5, 6 Y 7 P_agua VAR IN5 'asignamos a la variable pulsador del agua el valor de la entrada 5 -pin 5 P_naranja VAR IN6 'asignamos a la variable pulsador de la naranja el valor de la entrada 6 -pin 6 P_limon VAR IN7 'asignamos a la variable pulsador del limón el valor de la entrada 7 -pin 7 'DEFINIMOS LAS NEGADAS DE LOS PULSADORES P_agua_negada VAR Bit P_naranja_negada VAR Bit P_limon_negada VAR Bit 'ASIGNAMOS VARIABLES A LOS ESTADOS DE LAS PINES DE SALIDA salida_Ea VAR OUT0 'Asignamos el estado del pin 0 a la variable salida_Ea salida_En VAR OUT1 'Asignamos el estado del pin 1 a la variable salida_En salida_El VAR OUT2 'Asignamos el estado del pin 2 a la variable salida_El 'DEFINIMONS LAS VARIABLES DE LAS ECUACIONES DE LAS ELECTROVÁLVULAS DE SALIDA E_agua VAR Bit 'Definimos a la variable electroválvula del agua valor de bit E_naranja VAR Bit 'Definimos a la variable electroválvula de la naranja valor de bit E_limon VAR Bit 'Definimos a la variable electroválvula del limón valor de bit
INICIO: ' REALIZAMOS UNA OPERACIÓN XOR CON LAS VARIABLES DE LOS PULSADORES PARA OBTENER SUS NEGADAS P_agua_negada=P_agua^1 P_naranja_negada=P_naranja^1 P_limon_negada=P_limon^1 'DEFINIMOS LAS ECUACIONES DE CADA UNA DE LAS SALIDAS E_agua=P_agua & (p_naranja_negada |p_limon_negada) '& operador boleano AND y | operador boleano OR E_naranja=P_agua & P_naranja & P_limon_negada E_limon=P_agua & P_naranja_negada & P_limon ' ESTABLECEMOS LAS CONDICIONES LÓGICAS DE SALTO IF E_naranja=1 THEN naranja IF E_limon=1 THEN limon IF E_agua=1 THEN agua ' EN CASO DE NO CUMPLIRSE NINGUNA DE LAS ECUACIONES DEL AUTOMATISMOS PONEMOS A CERO TODAS LAS SALIDAS salida_Ea=0 salida_En=0 salida_El=0 GOTO INICIO 'Provocamos un salto incondicional a la etiqueta inicio para su ejecución recursiva agua: 'ETIQUETA DE LA ECUACION DE SALIDA DE LA ELECTROVÁLVULA DEL AGUA DEBUG "agua", CR salida_Ea=1 salida_En=0 salida_El=0 GOTO INICIO naranja: 'ETIQUETA DE LA ECUACION DE SALIDA DE LA ELECTROVÁLVULA DE LA NARANJA DEBUG "naranja y agua", CR salida_Ea=1 salida_En=1 salida_El=0 GOTO INICIO limon: 'ETIQUETA DE LA ELECTROVÁLVULA DEL LIMON DEBUG "limon y agua ", CR salida_Ea=1 salida_En=0 salida_El=1 GOTO INICIO
12. PRACTICA 5: CUENTA ATRÁS MEDIANTE DISPLAY DE 7 SEGMENTOS.
A través de la presente práctica se pretende instruir al lector en el control de un display de 7 segmentos mediante una práctica de cuenta atrás. Se estudiarán también la instrucción de almacenamiento de datos (DATA) en la memoria EEPROM y la generación de ondas senoidales de frecuencia y duración deseadas (FREQOUT). El display de 7 segmentos son 7 diodos LED encapsulados en una disposición tal que permita la representación de números y letras. Existe un octavo LED que es el punto decimal (dp), útil para representar números fraccionarios. Todos los LED del display tienen un terminal común, que en el caso del Universal Trainer V2 del aula taller el instituto, es el ánodo, por lo que, se dice que es de ánodo común (AC). La línea de todos los ánodos se ha de conectar a + 5V. El Universal Trainer tiene 3 display de 7 segmentos cuyo esquema de conexión se reprensenta en la siguiente figura:
Las resistencias conectadas en serie con los displays tienen la función de limitar la
tensión y la corriente aplicada a los LED.
Dado que el display es de ánodo común, habrá que introducir un cero lógico ( 0V ) en el
cátodo del diodo LED que se desee iluminar. Bajo estás premisas, y puesto que en la presente
práctica se pretende realizar una cuenta atrás, en la siguiente tabla se representan los valores
de los bits que habrá que aplicar a los cátodos de los LED para representar cada uno de los
números.
En la práctica únicamente representamos los dígitos 0, 1, 2, 3, 4 y 5, que se activarán
'PROGRAMA DE CUENTA ATRAS segundos VAR OUTL 'Asignamos la variable segundos al Byte bajo (bits 0 al 7) nums VAR Byte 'Asignamos a la variable numeros el valor de byte (hasta 256 estados) 'INTRODUCIMOS EN LA ETIQUETA "cuenta" DE LA MEMORIA EEPROM LOS VALORES REQUERIDOS 'PARA EL CONTROL DE LOS LEDS DEL DISPLAY cuenta DATA%10010010 'Patrón del bits para el numero 5 DATA%10011001 'Patrón del bits para el numero 4 DATA%10110000 'Patrón del bits para el numero 3 DATA%10100100 'Patrón del bits para el numero 2 DATA%11111001 'Patrón del bits para el numero 1 DATA%11000000 'Patrón del bits para el numero 0 DIRL=%11111111 'direccionamos el byte bajo como salidas OUTL=%11111111 'ponemos a 1 todas las salidas (todos LED apagados) activacion: 'etiqueta activación IF IN14=1 THEN atras ' Si el pin 14 está a 1 entonces saltar a etiqueta atras GOTO activacion 'salto incondicional a la eqiqueta acivación 'BUCLE PARA LA CUENTA ATRÁS atras: 'Etiqueta de incio de la cuenta atrás FOR nums=0 TO 5 'Cuenta de 0 a 5 READ(cuenta+nums),segundos 'lee de la EEPROM la etiqueta cuenta en la posición dada 'por el valor de la variable nums PAUSE 1000 'espera 1 sg FREQOUT 15,40,2000 'Genera un tono en la patilla 15 de 40 ms a 2000 Hz NEXT 'Fin del bucle FOR NEXT 'BUCLE PARA EL PITIDO FINAL SEÑALIZANDO FIN DE LA CUENTA ATRÁS aviso: FREQOUT 15,2500,1000 'Genera un pitido de 2,5 s a 1000 Hz GOTO activacion 'Salto incondicional a la etiqueta activación
Tal y como está estructurado el programa, atendiendo a la conexión indicada, si el pin
8 está a 0, se produce un efecto luminoso que da la sensación de desplazamiento de la luz a la
derecha. Al poner a 1 el pin 8, el efecto es de desplazamiento a la izquierda.
Se propone al lector la modificación del programa para que de la sensación que el
encendido del LED va de un lado a otro en un movimiento de vaivén de forma continuada.
Imagen y esquema de conexión del
montaje:
'DECLARACIÓN DE CONSTANTES TIEMPO CON 100 'Cargamos la variable TIEMPO con el valor constante 100 (ms) 'DECLARACIÓN DE VARIABLES MI_ARRAY VAR Byte(8) 'Declaramos un array de 8 Bytes INDEX VAR Byte 'Declaración de una variable de tipo Byte DIRL=%11111111 'Direccionamos el byte bajo como salidas (Bits 0 a 7) 'CARGAMOS EL ARRAY EN LA POSICION 0 CON EL BIT O A 1 MI_ARRAY(0)=DCD 0 ' BUCLE DE CARGA DE VALORES DE LAS POSICIONES DEL ARRAY FOR INDEX=0 TO 7 MI_ARRAY(INDEX)= DCD INDEX 'Cargamos el array con MI_ARRAY(0)=0000 0001, MI_ARRAY(1)=0000 0010, .... NEXT 'BLUCLE DE DESPLAZAMIENTO DEL ENCENDIDO DE LED HACIA LA IZQUIERDA DESPLAZAMIENTO_A_IZQUIERDA: 'Etiqueta IF IN8=0 THEN DESPLAZAMIENTO_A_DERECHA 'Si la entrada 8 está a 0 ir a la etiqueta des_derecha FOR INDEX=0 TO 7 'Recorremos el array desde la posisicion 0 a la 8 OUTL=MI_ARRAY(INDEX) 'Ponemos las salidas (LED) al valor cargado en la posicion actual del array PAUSE TIEMPO ‘'Tiempo de espera entre el cambio de posiciones del array NEXT GOTO DESPLAZAMIENTO_A_IZQUIERDA 'Salto incondicional a etiqueta desplazamiento_a_izquierda 'BLUCLE DE DESPLAZAMIENTO DEL ENCENDIDO DE LED HACIA LA DERECHA 'Misma explicacion que en el bucle anterior, pero con distinta dirección de desplazamiento DESPLAZAMIENTO_A_DERECHA: FOR INDEX=0 TO 7 OUTL=MI_ARRAY(7-INDEX) PAUSE TIEMPO NEXT GOTO DESPLAZAMIENTO_A_IZQUIERDA
Esquema eléctrico y de conexionado de la práctica.
Tal y como se puede apreciar se han montado dos LED para indicar el sentido de giro
del motor, que vendrá determinado por el estado del pin 8.
Programa
‘DECLARACION DE VARIABLES VELOCIDAD VAR Byte 'DECLARACIÓN DE CONSTANTES DIODO_I CON 12 DIODO_D CON 11 'CONFIGURACIÓN DE LAS ENTRADAS/SALIDAS DIRD=%1111 ' Ponemos el tercer NIBBLE como salidas. No es necesario 'configurar los pines de entrada porque cuando
‘Arranca 'BASIC STAMP tiene todos los pines como entradas por defectINICIO: 'COMENZAMOS CON UN CONDICIONAL QUE PERMITA ELEGIR EL SENTIDO DEGIRO INICIO: IF IN8=0 THEN GIRO_DERECHAS GIRO_IZQUIERDAS: 'Aunque no es una etiqueta necesaria da más claridad al programa HIGH DIODO_I 'Encendemos el LED que indica giro a Izquierdas LOW DIODO_D 'Apagamos el LED que indica giro a Derechas VELOCIDAD=INL 'Cargamos en la variable VELOCIDAD el valor en la entrada del BYTE bajo (bits 0 al 7) PWM 14, VELOCIDAD, 50 'Damos en el pin 14, 50 pulsos de 1ms la consigna de velocidad leida en los interruptores DEBUG ?VELOCIDAD, CR 'Mostramos por pantalla el valor decimal de la variable velocidad GOTO INICIO 'PROGRAMACIÓN DEL GIRO A DERECHAS GIRO_DERECHAS: LOW DIODO_I ' Apagamos el LED de giro a Izquierdas HIGH DIODO_D ' Activamos el LED de giro a derechas OUT14=0 'Ponemos a 0 la patilla 14 VELOCIDAD=INL 'Cargamos en la variable VELOCIDAD el valor en la entrada del BYTE bajo (bits 0 al 7) PWM 15, VELOCIDAD, 50 'Damos por el pin 15, 50 pulsos de 1ms la consigna de velocidad leida en los interruptores DEBUG ?VELOCIDAD, CR 'Mostramos por pantalla el valor decimal de la variable velocidad GOTO INICIO 'Salto incondicional para volver a realizar el ciclo
La manera en que la información puede ser mostrada mediante el comando DEBUG
puede ser ajustada mediante los modificadores de formato mostrados en la tabla siguiente:
Para ayudar a una mejor presentación de los datos en pantalla, la instrucción DEBUG
admite el uso de caracteres de control indicados en la tabla siguiente:
El siguiente programa utiliza la instrucción DEBUG para la presentación del valor de la
variable X.
' {$STAMP BS2} ' {$PBASIC 2.5} ' UTILIZACIÓN DE LA INSTRUCCION DEBUG X VAR Byte X =65 DEBUG ? X , "MUESTRA EL VALOR DECIMAL DE X EN PANTALLA" PAUSE 2000 'ESPERA 2 SEGUNDOS DEBUG CLS 'BORRA LA PANTALLA DEBUG ASC ? X, "MUESTRA EL CARACTER ASCIL DEL VALOR DECIMAL DE X " PAUSE 2000 'ESPERA 2 SEGUNDOS DEBUG CLS 'BORRA LA PANTALLA
La instrucción DEBUG podemos utilizar el código ASCIL, en vez del SÍMBOLO. Por
ejemplo:
La instrucción DO..LOOP permite generar un lazo iterativo que se repetirá cierta
cantidad de veces. Si se combina con la opción WHILE, el lazo se ejecutará mientras se
cumpla la condición; en caso de utilizar el UNTIL, se realizará hasta que la condición sea
verdadera. Si no se establecen condiciones, se hará un lazo infinito.
Pueden concatenarse hasta 16 lazos DO..LOOP.
La siguiente practica permite mostrar en pantalla el estado de las entradas conectadas
a los pines 7 y 8, lo utilizaremos para el control de los sensores de contacto de nuestro robot,
es por ello, que vamos a explicar también el circuito eléctrico y sus características particulares
para nuestra aplicación.
16. PRÁCTICA 8: CONTROL DE SENSORES DE CONTACTO. Como es sabido, los interruptores crean pequeños arcos en sus maniobras de cierre y
apertura que pueden ser detectados como varios ceros y unos lógicos en una misma
maniobra, si el nivel de tensión sobrepasa los niveles lógicos para VIH y VIL. Por ejemplo, el
circuito integrado SN74LS04 es un inversor séxtuple y el fabricante nos garantiza que si la
tensión de entrada VIL es menor de 0,8 V se considerará un nivel lógico LOW (cero) y para
garantizar que el circuito integrado considera un nivel de entrada lógico alto VIH (uno) la
tensión ha de ser 2<VIH<5 . ¿Y qué pasa entre 0,8 y 2?, pues que el circuito integrado lo puede
tomar como cero o como uno, pero además eso no es todo, es normal que en una misma
DEBUG DEC ? X, "MUESTRA EL VALOR DECIMAL DE X EN PANTALLA -de 1 a 5 dígitos-" PAUSE 2000 'ESPERA 2 SEGUNDOS DEBUG CLS 'BORRA LA PANTALLA DEBUG SDEC ? X, "MUESTRA EL VALOR DECIMAL DE X EN PANTALLA CON SIGNO- de 1 a 5 dígitos-" PAUSE 2000 'ESPERA 2 SEGUNDOS DEBUG CLS 'BORRA LA PANTALLA DEBUG SHEX ? X, "MUESTRA EL VALOR HEXADECIMAL DE X EN PANTALLA CON SIGNO -de 1 a 4 dígitos-" PAUSE 2000 'ESPERA 2 SEGUNDOS DEBUG CLS 'BORRA LA PANTALLA DEBUG SBIN ? X, "MUESTRA EL VALOR BINARIO DE X EN PANTALLA CON SIGNO -de 1 a 16 dígitos-" PAUSE 2000 'ESPERA 2 SEGUNDOS DEBUG CLS 'BORRA LA PANTALLA
DEBUG 0, 2, 40,12, “BS2 es Genial...”, 7,7,7 ‘Limpia la pantalla, (0) ‘Mueve el cursor a las coordenadas x=40, y=12, (2) ‘Imprime “BS2 es Genial... ‘Emite 3 sonidos acústicos, (7)
El programa de instrucciones para la detección de los estados de los sensores de
contacto es:
La ventana Debug Terminal muestra el estado de los sensores (en la figura esta
activado el del lado derecho).
' Visualizar las líneas de E/S conectadas a los SENSORES DE CONTACTO. ' {$STAMP BS2}. ' Directiva para indicar la version de Basic Stamp ' {$PBASIC 2.5}. 'directiva usada para indicar la versión de PBASIC DEBUG "ESTADO DE LOS SENSORES DE CONTACTO", CR,"Izda Dcha.", CR,"------ ------" DO 'bucle iterativo sin fin DEBUG CRSRXY, 0, 3,"P7 = ", BIN1 IN7," P8 = ", BIN1 IN8 'Visualiza en columna 0, fila 3 los datos PAUSE 50 ' espera 50 ms LOOP 'Volver al inicio del bucle
El siguiente ejemplo muestra como funciona este operador.
La salida del programa anterior se muestra en la siguiente figura.
Se puede hacer una ligera variación del programa anterior para hacer un complemento
a 1 del valor binario anteponiendo el símbolo ~ al operador DCD, con lo que la salida sería:
' {$STAMP BS2} ' {$PBASIC 2.5} 'UTILIZACIÓN DEL OPERADOR MATEMÁTICO DCD SALIDA VAR Word 'Declaramos la variable SALIDA con formato word I VAR Word 'Declaramos la variable I con formato word DEBUG CLS 'Borra la pantalla SALIDA = 0 'Asigna a la variable SALIDA valor 0 FOR I = 0 TO 15 'Se inicia un bucle que asigna a I los valores que van de 0 a 15 SALIDA = DCD I 'Asigamos a la variable SALIDA el valor 2^I DEBUG DEC2 I,"-",BIN16 SALIDA,"-",DEC5 SALIDA, CR 'Se muestra en pantalla el valor de I , el valor de 'la variable SALIDA en BINARIO y el valor de la 'variable SALIDA en DECIMAL con formato de 5 dígitos PAUSE 500 'Se hace una pausa de 0,5 seguntos antes de repetir el bucle NEXT STOP 'Fin de programa
19. PRÁCTICA 9: JUEGO DE LUCES DE GUSANO El siguiente programa realiza un juego de luces dando vueltas a través de un display de 7
segmentos simulando el movimiento de un gusano.
El programa anterior deja un LED encendido cuando se direcciona a la etiqueta FIN. Se
propone al lector que realice las modificaciones necesarias para que todo el display quede
apagado o bien, si se desea, todo quede encendido.
' {$STAMP BS2} ' {$PBASIC 2.5} ' JUEGO DE LUCES DE GUSANO AUX VAR Nib 'Declaramos la variable AUX con valor nible 2^4 (0 a 15 DIRL=%11111111 ‘Declaramos el byte bajo –bits 0 al 7 – como salidas inicio: FOR AUX=0 TO 5 'Se establece un contador de 6 bucles 0 a 5 PAUSE 75 'Pausa de 75 ms OUTL=~DCD AUX 'Asignamos al byte bajo (bit0 al bit7, ambos incluidos) el complemento a 1 de 2^AUX IF IN9=1 THEN fin 'Establecemos una salida del bucle en caso de que la entrada 9 se ponga a 1 NEXT GOTO INICIO FIN: PAUSE 2000 STOP
Esta práctica consiste en marcar un determinado número de teléfono en función del estado de unas entradas. Para esta práctica se utilizarán distintos comandos y operadores estudiados anteriormente. Hay que tener en cuenta ciertas consideraciones en esta práctica:
a) Se debe utilizar el circuito de adaptación de impedancias indicado en el apartado 17 anterior.
b) En estado de reposo la línea telefónica no debe estar conectada al transformador dado que si se descolgara otro teléfono de la vivienda se generaría ruido debido al acoplamiento en paralelo de impedancias.
c) Antes de la secuencia de marcado se debe activar la base del transistor que excita el relé electromagnético, consiguiendo conectar la línea telefónica al transformador adaptador de impedancias.
d) Tras activar el pulsador de colgar (bit 9) el relé se desactivará.
' {$STAMP BS2} ' {$PBASIC 2.5} ' UTILIZACIÓN DEL COMANDO BRANCH indice VAR Byte Principal: DEBUG CRSRXY,0, 3, "Seleccione una Fruta del [0 - 2]", CR 'Se sitúa el cursor a la coordenada 0,3 SERIN 16, 16468, [DEC1 indice] 'asigna a la variable índice el valor decimal introducido por teclado '16 (significa que utilizaremos el puerto de programación) y 16468 que se 'transmitirán 8 bits a 9600 baudios sin paridad BRANCH indice,[Uva, Pera, Manzana] DEBUG CLS DEBUG CRSRXY, 0, 3,"No ha seleccionado correctamente" PAUSE 1500 DEBUG CLS GOTO Principal Uva: DEBUG CRSRXY,2, 4,"Ha seleccionado Uva......" 'CRSRXY situa el cursor en la coordenada 2,4 GOTO Principal Pera: DEBUG CRSRXY,2, 4,"Ha seleccionado Pera....." GOTO Principal Manzana: DEBUG CRSRXY,2, 4,"Ha seleccionado Manzana.." GOTO Principal
' {$STAMP BS2} ' {$PBASIC 2.5} ' PROGRAMA DE MARCADO DE NÚMEROS DE TELÉFONO EN FUNCIÓN DEL ESTADO DE LAS ‘ ENTRADAS AUX VAR Nib 'Declara la variable AUX del tipo Nibble vueltas VAR Byte 'Declara la variable vueltas como byte DIRL=%11111111 'Declara los 8 bit bajos bit0 a bit7 como salidas, de ahí que los ponemos a 1 DIRC=%1101 'Declara en el Nibble C los bit 8, 10 y 11 como salidas y el 9 como 'entrada. LED indicación de tel descolgado en el bit8, pulsador de colgar bit9, 'salida de tonos Bit 10 y activación relé Bit 11 DIRD=0 'Declara los bits 12, 13, 14 y 15 como entradas -los pone a cero-
INICIO: OUT8=0 ' Pone a cero el LED que indica teléfono descolgado OUT11=0 ' Pone a cero el transistor de activación del relé OUTL=$FF ' Pone a cero el byte bajo de los LED del display AUX=NCD IND ' La variable AUX toma un valor de 1 a 4 que se corresponde con el bit ' de mayor peso puesto a 1 en el nibble D -bit12, bit13, bit14 y bit 15 DEBUG ?AUX ' Nos muestra en pantalla el valor adoptado por la variable AUX BRANCH AUX,[INICIO, UNO, DOS, TRES, CUATRO] ' Si AUX vale cero se va a la etiqueta INICIO. Si el bit 12 ' está a 1 y los bits 13, 14 y 15 están a cero salta a la ' etiqueta UNO. Si el bit de mayor peso puesto a 1 fuera el
' bit 13 saltaría a la etiqueta DOS y así sucesivamente. UNO: OUTL=%11111001 ' Muestra un 1 en el display de ánodo común GOSUB DESCOLGAR ' Salta a la subrutina DESCOLGAR DTMFOUT 10,[6,7,6,0,1,6,3,0,6] ' Marca por la patilla 10 el número de teléfono indicado GOTO CONVERSACION ' Direcciona la ejecución del programa a la etiqueta CONVERSACION DOS: OUTL=%10100100 'Muestra un 2 en el display de ánodo común GOSUB DESCOLGAR DTMFOUT 10,[9,6,7,2,1,5,3,5,4] GOTO CONVERSACION TRES: OUTL=%10110000 ' Muestra un 3 en el display de ánodo común GOSUB DESCOLGAR DTMFOUT 10,[9,6,7,0,1,6,3,0,6] GOTO CONVERSACION CUATRO: OUTL=%10011001 ' Muestra un 4 en el display de ánodo común GOSUB DESCOLGAR DTMFOUT 10,[8,7,8,0,1,5,3,8,0] GOTO CONVERSACION CONVERSACION: ' Etiqueta que nos indica que la línea telefónica está abierta tras el marcado del número FOR vueltas=0 TO 5 ' Ejecuta un bucle FOR NEXT para juego de luces de gusano girando PAUSE 150 ' Espera 150 ms OUTL=~DCD vueltas ' Asigna al byte bajo bit0 al bit 7 el complemento a 1 (~) de 2^vueltas. ' El complemento a 1 se hace por ser el display de ánodo común y necesitar ceros ' en las entradas a,b,c,d,e,f,g para su activación IF IN9=1 THEN INICIO 'Si pulsador=1 cortamos la conversación y para la ejecución del bucle NEXT GOTO CONVERSACION
DESCOLGAR: OUT8=1 ' Pone a 1 el LED indicando teléfono descolgado OUT11=1 ' Activa el transistor que activa el relé de cierre de la línea telefónica PAUSE 2000 ' Espera 2 segundos DTMFOUT 10,[0] ' Marca un 0 por el pin 10 entendiendo que estamos en un lugar con centralita telefónica PAUSE 1500 ' Espera 1,5 segundos a que la centralita nos de tono de marcado RETURN ' Retorna la ejecución del programa al punto de inicio de la subrutina
24. PRÁCTICA 11: POSICIONAMIENTO DE UN SERVOMOTOR. En esta práctica se posiciona un servomotor FUTABA S3003 mediante la siguiente
secuencia:
1. Supondremos que el estado de reposo corresponde a la posición de referencia del eje
apuntando a 90º trigonométricos.
2. Se posiciona el eje en posición de reposo y permanece 1 segundo parado
' {$STAMP BS2} ' {$PBASIC 2.5} ' EJEMPLO DE UTILIZACIÓN DELCOMANDO PULSOOUT LOW 15 ' Declara el Pin 15 como salida a un nivel lógico bajo PULSOUT 15, 50000 ' Genera un pulso de 100 ms por el Pin 15 STOP ' Detiene el programa
' {$STAMP BS2} ' {$PBASIC 2.5} ' EJEMPLO DE UTILIZACIÓN DELCOMANDO PULSOOUT HIGH 15 ' Declara el Pin 15 como salida a un nivel lógico alto PULSOUT 15, 50000 ' Genera un pulso de 100 ms por el Pin 15 STOP ' Detiene el programa
3. A partir de la posición de reposo giramos en sentido trigonométrico en intervalos de
unos 10º sexagesimales hasta la posición de 90º.
4. Se para el eje 3 segundos y retorna a la posición de reposo
5. Desde la posición de reposo gira en sentido antitrigonométrico en intervalos de 10º
hasta posicionar el eje en 0º trigonométricos.
6. Repite el ciclo ininterrumpidamente.
' {$STAMP BS2} ' {$PBASIC 2.5} 'POSICIONAMIENTO A INTERVALOS DE UN SERVO FUTABA 3003 servo CON 13 ' Declaramos como constante la variable servo y la asignamos al pin 13 x VAR Word ' Declaramos una variable x como PALABRA p VAR Word ' Declaramos la variable p como PALABRA INICIO: P=50 ' Asignamos a p valor de 0 'CENTRADO DEL EJE DEL SERVO EN POSICIÓN 90º FOR x=1 TO 20 PULSOUT servo,750 PAUSE 20 'generamos una pausa de 20 ms -duración del periodo NEXT PAUSE 1000 ' GIRO EN SENTIDO TRIGONOMÉTRICO FOR x=1 TO 9 'Hacemos bucles sumando 50 unidades al valor 750 iniciales hasta llegar a los '1200 de limite máx que se corresponden con los 180º tras las pruebas PULSOUT servo,750+p 'La primera vez que recorre el bucle el pulso es 750+50=800 PAUSE 20 'Esperamos 20 milisegundos DEBUG ? 700+p 'Muestra en pantalla el valor del pulso p=p+50 ' Incrementamos el valor de la variable P con cada pasada del bucle PAUSE 1000 ' Paramos el eje 1 segundo NEXT PAUSE 2000
'CENTRADO DEL EJE DEL SERVO EN POSICIÓN 90º FOR x=1 TO 20 PULSOUT servo,750 PAUSE 20 'Generamos una pausa de 20 ms -duración del periodo NEXT PAUSE 1000 ' GIRO DE 90º EN SENTIDO ANTITRIGONOMÉTRICO TRAS CENTRADO P=50 FOR x=1 TO 9 ' Hacemos bucles restando 50 unidades al valor 750 iniciales hasta llegar a los ' 300 de límite mínimo que se corresponden con los 0º tras las pruebas realizadas PULSOUT servo,750-p PAUSE 20 ' Esperamos 20 ms DEBUG ? 750-p ' Muestra en pantalla el valor del pulso P=P+50 PAUSE 1000 ' Hacemos una pausa de 1 s NEXT PAUSE 2000 GOTO inicio
NOTA: A efectos prácticos y dado que la duración del pulso es pequeña en relación al
periodo se suelen considerar, en cada ciclo, intervalos de 20 ms a nivel bajo a los que
se suma el tiempo del pulso. Esto mismo es lo que se muestra en la siguiente figura:
Considerando las condiciones anteriores, si deseamos que el servomotor gire en
sentido trigonométrico a velocidad máxima el programa sería:
En las pruebas realizadas, con alimentación a 5 V dc, se ha contabilizado una
velocidad angular de 52 r.p.m. con el eje vertical y sin carga.
GND
+ 5 V
PARALLAXCONTINOUS ROTATION
www.parallax.com
CONTROL
Vss = 0 V
Vdd = 5V
1,3 ms
20 ms
GIRO ANTITRIGONOMÉTRICO A VELOCIDAD MÁXIMA
GND
+ 5 V
PARALLAXCONTINOUS ROTATION
www.parallax.com
CONTROL
Vss = 0 V
Vdd = 5V
1,7 ms
20 ms
GIRO TRIGONOMÉTRICO A VELOCIDAD MÁXIMA
' {$STAMP BS2} ' {$PBASIC 2.5} ‘ GIRO EN SENTIDO TRIGONOMÉTRICO DE UN SERVOMOTOR DE ROTACIÓN CONTINUA INICIO: ' Etiqueta IF IN5=0 THEN FIN ' Si el Pin 5 esta a 1 fundiona el motor, si está a cero no funciona PULSOUT 15, 650 ' Genera un pulso de 1,3 ms (650 x 2 us x 10E-3 = 1,3 ms) PAUSE 20 ' Espera 20 ms FIN: ' Etiqueta GOTO INICIO ' Salto incondicional a la etiqueta INICIO
Se ha de observar que en las condiciones del montaje anterior el microcontrolador da
un uno lógico cuando no se detecta objeto, que cambia a cero lógico al detectarlo.
' {$STAMP BS2} ' {$PBASIC 2.5} ‘ PRUEBA DE FUNCIONAMIENTO DE LOS EMISORES Y DETECTORES DE IR DET_DER VAR Bit DET_IZQ VAR Bit DEBUG "Estado SENSORES DE INFRAROJOS", CR,"Izda Dcha.", CR,"------ ------" DO FREQOUT 0, 1, 30000 'EMISOR DERECHO: Emite pulsos de 1 ms por el pin 0 de 38500 Hz de frecuencia DET_DER=IN1 'ASIGNA LA VARIABLE DET_DER A LA INTRADA 1 FREQOUT 15, 1, 30000 'EMISOR IZQUIERDO: Emite pulsos de 1 ms por el pin 0 de 38500 Hz de frecuencia DET_IZQ =IN14 ' ASIGNA LA VARIABLE DET_DER A LA INTRADA 14 DEBUG CRSRXY, 0, 3,"DER =" , BIN1 DET_DER, " IZQ =", BIN1 DET_IZQ 'Muestra en coordenadas 0, 3 información PAUSE 100 LOOP
En definitiva, con el montaje de la figura podemos concluir que en los pines del
microcontrolador tendremos:
Si la superficie sobre la que está situado el CNY 70 es clara tendremos un 1 lógico.
Si la superficie sobre la que esta situado el CNY 70 es oscura o negra tendremos un 0
lógico.
Para probar el correcto de funcionamiento de los sensores ópticos CNY 70 utilizaremos el
siguiente programa:
Con el programa anterior la ventana DEBUG Terminal mostrará los siguientes resultados: Los dos sensores sobre la superficie negra
Sensor del lado derecho sobre superficie blanca y el izquierdo sobre negra
' Visualizar las líneas de E/S conectadas a los SENSORES OPTICO-REFLEXIVOS CNY 70 . ' {$STAMP BS2}. ' Directiva para indicar la version de Basic Stamp ' {$PBASIC 2.5}. 'directiva usada para indicar la versión de PBASIC DEBUG "Estado SENSORES CNY70", CR,"Izda Dcha.", CR,"------ ------" DO 'bucle iterativo sin fin DEBUG CRSRXY, 0, 3,"P5 = ", BIN1 IN5," P4 = ", BIN1 IN4 'Visualiza estado BINARIO EN LA columna 0, fila 3
‘los datos PAUSE 50 ' espera 50 ms LOOP ' Volver al inicio del bucle