<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6561333251154900986</id><updated>2011-10-08T13:55:35.719+02:00</updated><category term='ensamblador'/><category term='cuestionarios'/><category term='videos recomendados'/><category term='control'/><category term='entradas digitales'/><category term='actividades'/><category term='miniproyecto'/><category term='clase 1'/><category term='borland c++'/><category term='ciclos máquina y tiempos ejecución'/><category term='bloque I'/><category term='examen segundo parcial'/><category term='audio'/><category term='autoevaluación'/><category term='máscaras'/><category term='Prácticas C'/><category term='interrupciones'/><category term='Programación C'/><category term='escribiendo código C'/><category term='bibliografía'/><category term='keil'/><category term='clase ensamblador'/><category term='Tablas MCS-51'/><category term='ejercicios bloque I'/><category term='clase 4'/><category term='vuestras dudas'/><category term='Prácticas NI USB 6008'/><category term='Teoría'/><category term='clase 2'/><category term='puertos'/><category term='complementar un registro'/><category term='chips'/><category term='repaso'/><category term='personal'/><category term='complemento a dos'/><category term='problemas pre-examen'/><category term='entender un datasheet'/><category term='operadores en C'/><category term='segundo cuatrimestre'/><category term='Prácticas microcontroladores'/><category term='videos'/><category term='daq rf digital link'/><category term='temporizadores'/><category term='ez web lynx'/><category term='clase 5'/><category term='definir bien los registros sfr'/><category term='port redefinition'/><category term='primer bloque'/><category term='errores de programación'/><category term='entender el conversor A/D'/><category term='clase 3'/><category term='ciclos máquina y temporizadores'/><category term='drivers NI USB 6008'/><category term='clase temporizadores'/><category term='sensor remoto'/><category term='modo autorrecarga'/><title type='text'>Blog de la asignatura Informática Industrial · ETSID UPV · Apuntes teoría y prácticas del curso</title><subtitle type='html'>Apuntes teoría sensores y material de prácticas para la asignatura del curso Informática Industrial · ETSID · Universidad Politécnica de Valencia</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default?start-index=101&amp;max-results=100'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>147</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-6113150626678223217</id><published>2011-06-07T08:42:00.000+02:00</published><updated>2011-06-07T08:42:21.031+02:00</updated><title type='text'>Cuatro problemas</title><content type='html'>Descargar ejercicio &lt;a href="http://www.bitschips.com/infoind/cuatro_problemas_2.pdf"&gt;aquí&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-6113150626678223217?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/6113150626678223217/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=6113150626678223217&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/6113150626678223217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/6113150626678223217'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/06/cuatro-problemas.html' title='Cuatro problemas'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-4538858634944948763</id><published>2011-05-31T08:42:00.000+02:00</published><updated>2011-05-31T08:42:39.016+02:00</updated><title type='text'>Cuestionario final sobre interrupciones y temporizadores</title><content type='html'>Descargar &lt;a href="http://www.bitschips.com/infoind/cuestionario_int_v.pdf"&gt;aquí&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-4538858634944948763?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/4538858634944948763/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=4538858634944948763&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/4538858634944948763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/4538858634944948763'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/05/cuestionario-final-sobre-interrupciones.html' title='Cuestionario final sobre interrupciones y temporizadores'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-4311258141963127677</id><published>2011-05-24T00:07:00.000+02:00</published><updated>2011-05-24T00:07:44.422+02:00</updated><title type='text'>Cuestionario martes 24 de mayo</title><content type='html'>Os dejo &lt;a href="http://www.bitschips.com/infoind/cuestionario_iv.pdf"&gt;aquí &lt;/a&gt;el cuestionario con los problemas que hay que resolver.&lt;br /&gt;Por favor, entregádselo a Carlos Domínguez o bien me lo podéis dar la semana que viene.&lt;br /&gt;&lt;br /&gt;Un saludo,&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-4311258141963127677?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/4311258141963127677/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=4311258141963127677&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/4311258141963127677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/4311258141963127677'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/05/cuestionario-martes-24-de-mayo.html' title='Cuestionario martes 24 de mayo'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-2926925355457427677</id><published>2011-05-17T08:40:00.008+02:00</published><updated>2011-05-22T14:51:02.896+02:00</updated><title type='text'>Ejercicios de repaso (puertos, temporizadores e interrupciones)</title><content type='html'>Descargar &lt;a href="http://www.bitschips.com/infoind/repaso1.pdf"&gt;aquí&lt;/a&gt;&lt;br /&gt;&lt;div style="color: red;"&gt;&lt;b&gt;&lt;a href="http://www.bitschips.com/infoind/p_int0_t0.pdf" style="color: red;"&gt;Aclaración&lt;/a&gt; &lt;/b&gt;&lt;span style="color: black;"&gt;del problema que usa la interrupción externa "INT0" y el temporizador.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-2926925355457427677?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/2926925355457427677/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=2926925355457427677&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/2926925355457427677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/2926925355457427677'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/05/ejercicios-de-repaso-puertos-y.html' title='Ejercicios de repaso (puertos, temporizadores e interrupciones)'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-8292439068772558024</id><published>2011-05-10T13:11:00.000+02:00</published><updated>2011-05-10T13:11:14.787+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='chips'/><title type='text'>Navegación 3D (gracias Francisco)</title><content type='html'>&lt;iframe allowfullscreen="" frameborder="0" height="390" src="http://www.youtube.com/embed/zKLAeq1m2TY" width="480"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-8292439068772558024?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/8292439068772558024/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=8292439068772558024&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/8292439068772558024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/8292439068772558024'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/05/navegacion-3d-gracias-francisco.html' title='Navegación 3D (gracias Francisco)'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/zKLAeq1m2TY/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-2722844500390270985</id><published>2011-05-10T07:21:00.002+02:00</published><updated>2011-05-10T08:06:37.809+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='interrupciones'/><category scheme='http://www.blogger.com/atom/ns#' term='segundo cuatrimestre'/><title type='text'>Interrupciones</title><content type='html'>&lt;a href="http://www.bitschips.com/infoind/tema_int.pdf"&gt;Teoría&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.bitschips.com/infoind/cuestionario_interrupciones.pdf"&gt;- Cuestionario I (hecho) &lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.bitschips.com/infoind/cuestionario_interrupciones_2.pdf"&gt;- Cuestionario 2 (hacer hoy)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-2722844500390270985?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/2722844500390270985/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=2722844500390270985&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/2722844500390270985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/2722844500390270985'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/05/interrupciones.html' title='Interrupciones'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-1181811256248406950</id><published>2011-04-27T09:51:00.001+02:00</published><updated>2011-04-27T10:18:31.302+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='examen segundo parcial'/><category scheme='http://www.blogger.com/atom/ns#' term='segundo cuatrimestre'/><title type='text'>Revisiones de los problemas 1 y 2 del control</title><content type='html'>Os dejo aquí algunas notas de revisión de los problemas corregidos del control (preguntas 1 y 2).&lt;br /&gt;Descargar pdf &lt;a href="http://www.bitschips.com/infoind/problemas1y2.pdf"&gt;aquí&lt;/a&gt;.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-fc1E0J9XBIw/TbfRL0KwqjI/AAAAAAAAE0E/fbOoBA9FULM/s1600/pdf.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-1181811256248406950?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/1181811256248406950/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=1181811256248406950&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/1181811256248406950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/1181811256248406950'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/04/revisiones-de-los-problemas-1-y-del.html' title='Revisiones de los problemas 1 y 2 del control'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-4523401797369388536</id><published>2011-04-21T21:03:00.001+02:00</published><updated>2011-04-21T21:08:16.804+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vuestras dudas'/><category scheme='http://www.blogger.com/atom/ns#' term='chips'/><title type='text'>Como buscar información sobre microcontroladores</title><content type='html'>Un alumno (Óscar) me plantea la siguiente pregunta por correo: &lt;em&gt;"Buenas Luis, tengo que prestar ayuda a un compañero de trabajo ex-alumno tuyo. Necesita encontrar información detallada sobre micros, en concreto de 8 bits, para realizar su proyecto final de carrera. Sería de Motorola e Intel.&amp;nbsp;Si puedes facilitarme algún enlace o archivos pdf de consulta te lo agradecería".&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Aprovecho para publicar mi respuesta&amp;nbsp;por si a alguien le resulta de interés:&lt;br /&gt;&lt;br /&gt;Bueno, yo creo que la primera opción es entrar en&amp;nbsp;las páginas de los fabricantes.&amp;nbsp;Supongo que estará buscando algunos micros en concreto, allí&amp;nbsp;podrá encontrar&amp;nbsp;los datasheets correspondientes.&lt;br /&gt;&lt;br /&gt;Otra opción es buscar&amp;nbsp;estos micros en&amp;nbsp;un proveedor de componentes electrónicos como &lt;a href="http://www.farnell.com/"&gt;Farnell&lt;/a&gt;, &lt;a href="http://es.rs-online.com/web/home.html"&gt;RS&lt;/a&gt;, &lt;a href="http://www.digikey.es/"&gt;Digikey&lt;/a&gt; u otros, allí encontrará información detallada. &lt;br /&gt;&lt;br /&gt;En este blog, en la columna de la derecha y abajo hay una&amp;nbsp;lista de sitios web de componentes electrónicos que podría servir.&lt;br /&gt;&lt;br /&gt;También puede mirar en sitios como &lt;a href="http://es.scribd.com/"&gt;Scribd&lt;/a&gt;&amp;nbsp; o &lt;a href="http://www.slideshare.net/"&gt;Slideshare&lt;/a&gt;&amp;nbsp; donde se comparten ppts y documentos de todo tipo, también de electrónica, micros, informática..&lt;br /&gt;&lt;br /&gt;Por último se me ocurre que &lt;a href="http://www.youtube.com/"&gt;Youtube&lt;/a&gt; es una opción muy interesante donde los aficionandos a la electrónica publican sus experimentos y donde se puede aprender, buscando como lo harías en Google, poniendo el tipo de micro en el cuadro de búsqueda y navegando por los resultados.&lt;br /&gt;&lt;br /&gt;Si alguien quiere&amp;nbsp;recomendar algún sitio web, que ponga un comentario en este post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-4523401797369388536?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/4523401797369388536/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=4523401797369388536&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/4523401797369388536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/4523401797369388536'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/04/como-buscar-informacion-sobre.html' title='Como buscar información sobre microcontroladores'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-6257569809450583462</id><published>2011-04-19T18:56:00.001+02:00</published><updated>2011-04-19T18:59:57.921+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='errores de programación'/><category scheme='http://www.blogger.com/atom/ns#' term='vuestras dudas'/><category scheme='http://www.blogger.com/atom/ns#' term='Prácticas microcontroladores'/><category scheme='http://www.blogger.com/atom/ns#' term='segundo cuatrimestre'/><title type='text'>Access violation..Error al depurar un programa en Keil</title><content type='html'>Cuando ejecutas en Keil paso a paso un programa para un microcontrolador y no has incluido el bucle "while(1){..}" tu programa se ejecutará sólo una vez y al llegar al final, continuará buscando instrucciones, produciendo un error. Supongamos que tenemos un programa así:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-CsOSZNuJuPM/Ta2983hxgdI/AAAAAAAAEz8/Fvb9rHqJt6o/s1600/while.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-CsOSZNuJuPM/Ta2983hxgdI/AAAAAAAAEz8/Fvb9rHqJt6o/s1600/while.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Debes añadir un bucle "while(1)" para que no termine su ejecución. Quedaría así:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-S5s6HjNd99c/Ta2-eVDTa8I/AAAAAAAAE0A/WHPepNH2Vo4/s1600/while2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-S5s6HjNd99c/Ta2-eVDTa8I/AAAAAAAAE0A/WHPepNH2Vo4/s1600/while2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Descarga el programa &lt;a href="http://www.bitschips.com/infoind/while.txt"&gt;aquí&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-6257569809450583462?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/6257569809450583462/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=6257569809450583462&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/6257569809450583462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/6257569809450583462'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/04/access-violationerror-al-depurar-un.html' title='Access violation..Error al depurar un programa en Keil'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-CsOSZNuJuPM/Ta2983hxgdI/AAAAAAAAEz8/Fvb9rHqJt6o/s72-c/while.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-7433484316170407174</id><published>2011-04-19T15:43:00.004+02:00</published><updated>2011-04-21T13:46:52.481+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vuestras dudas'/><category scheme='http://www.blogger.com/atom/ns#' term='segundo cuatrimestre'/><title type='text'>Bucle "while" con dos condiciones</title><content type='html'>En ocasiones necesitamos controlar la ejecución de ciertas instrucciones. Se pùede hacer utilizando sentencias tipo "while". Este tipo de sentencias permiten ejecutar las instrucciones del bucle (aquellas que están entre las llaves), mientras la condición&amp;nbsp;sea cierta (flecha verde).&lt;br /&gt;&lt;br /&gt;Cuando dicha condición no se cumple (flecha roja), se sale del bucle y se ejecutan las instrucciones que están fuera del mismo. &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Pt2XaNdC98k/Ta2P9l_cHZI/AAAAAAAAEzs/kVwtGrA3PTQ/s1600/bucle.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="340" src="http://2.bp.blogspot.com/-Pt2XaNdC98k/Ta2P9l_cHZI/AAAAAAAAEzs/kVwtGrA3PTQ/s400/bucle.png" width="400" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Si deseamos controlar 15 desbordamientos, nuestro bucle sólo tendrá una condición &amp;gt;&amp;gt; que el número de desbordes sea menor que quince:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-yZlYkj2BysU/Ta2Tqab-kpI/AAAAAAAAEzw/VvdYfj--6AA/s1600/bucle2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="343" src="http://3.bp.blogspot.com/-yZlYkj2BysU/Ta2Tqab-kpI/AAAAAAAAEzw/VvdYfj--6AA/s400/bucle2.png" width="400" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;El bucle anterior ejecutará las instrucciones mientras la condición sea cierta (desbordes&amp;lt;15). Como se ejecutan las instrucciones del bucle, se comprueba si el temporizador desborda mirando "TF0" e incrementando la variable. Cuando llegue a quince,&amp;nbsp;el bucle termina. En este caso sólo hay una condición.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;b&gt;&amp;nbsp; Pero ¿cómo haríamos para detener el temporizador si el usuario pulsa "P0_0"?&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; color: blue; text-align: center;"&gt;&lt;u&gt;&lt;b&gt;OPCIÓN I&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Si incluimos otra condición que compruebe el puerto, conseguiremos que el temporizador no llegue a la cuenta especificada, ya que saldrá del bucle, pero habrá que detenerlo incluyendo la instrucción "TR0=0":&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-NMFkUsrrlbc/Ta2dfio4ieI/AAAAAAAAEz0/7sPFAxPjiFA/s1600/bucle3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="351" src="http://1.bp.blogspot.com/-NMFkUsrrlbc/Ta2dfio4ieI/AAAAAAAAEz0/7sPFAxPjiFA/s400/bucle3.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;La explicación es sencilla. El bucle se ejecuta si se cumplan las dos condiciones: &lt;b style="color: blue;"&gt;que no llegue al máximo de desbordes&lt;/b&gt; Y &lt;b style="color: blue;"&gt;que NO se pulse P0_0&lt;/b&gt;.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;Cuando se pulse P0_0, al estar negado, su valor en la condición será "0" y&amp;nbsp;la condición será "FALSE" (es una AND) y se terminará el bucle saltando a las instrucciones que haya detrás del mismo, en este caso, la instrucción que desactiva el temporizador (TR0=0).&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; color: blue; text-align: center;"&gt;&lt;b&gt;OPCIÓN 2 (mejor)&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;También podemos incluir dentro del bucle la comprobación del puerto, de este modo, podemos detener el temporizador, pero nos mantenemos en el bucle, pudiendo reanudar la temporización cuando se deje de pulsar "P0_0". Es una gran diferencia.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-L5-HBLM4Fd4/Ta2hF-kjgeI/AAAAAAAAEz4/9Ki2Oj5qIZI/s1600/bucle4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="367" src="http://3.bp.blogspot.com/-L5-HBLM4Fd4/Ta2hF-kjgeI/AAAAAAAAEz4/9Ki2Oj5qIZI/s400/bucle4.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;﻿&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-7433484316170407174?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/7433484316170407174/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=7433484316170407174&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/7433484316170407174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/7433484316170407174'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/04/bucles-while-con-dos-condiciones.html' title='Bucle &quot;while&quot; con dos condiciones'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-Pt2XaNdC98k/Ta2P9l_cHZI/AAAAAAAAEzs/kVwtGrA3PTQ/s72-c/bucle.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-808564112036526300</id><published>2011-04-17T12:07:00.001+02:00</published><updated>2011-04-17T12:09:37.907+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vuestras dudas'/><category scheme='http://www.blogger.com/atom/ns#' term='segundo cuatrimestre'/><category scheme='http://www.blogger.com/atom/ns#' term='puertos'/><title type='text'>Leer los bits 0 y 4 del puerto "P0"</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-JmC4-OLbtQ8/Taq7t2ixoyI/AAAAAAAAEzo/1PIq9sKZiWk/s1600/ex1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-JmC4-OLbtQ8/Taq7t2ixoyI/AAAAAAAAEzo/1PIq9sKZiWk/s1600/ex1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Observa que la parte del programa principal es "void main(void)" porque no devuelve ningún valor. Sólo realiza una tarea: comprobar los bits 0 y 4 del puerto "P0", pero no devuelve ningún dato. &lt;br /&gt;&lt;a href="http://www.bitschips.com/infoind/ex1.txt"&gt;&amp;nbsp;Descargar programa.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-808564112036526300?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/808564112036526300/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=808564112036526300&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/808564112036526300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/808564112036526300'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/04/leer-los-bits-0-y-4-del-puerto-p0.html' title='Leer los bits 0 y 4 del puerto &quot;P0&quot;'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-JmC4-OLbtQ8/Taq7t2ixoyI/AAAAAAAAEzo/1PIq9sKZiWk/s72-c/ex1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-4219522444021407665</id><published>2011-04-17T11:25:00.001+02:00</published><updated>2011-04-17T12:05:43.601+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vuestras dudas'/><category scheme='http://www.blogger.com/atom/ns#' term='segundo cuatrimestre'/><title type='text'>Puedo poner sólo void main (void)</title><content type='html'>En el ejercicio del examen, se pedía que se leyeran los bits "b0" y "b4" del puerto "P0" y si alguno de ellos fuera "1" entonces se pusiera a "1" todos los bits del puerto "P1".&lt;br /&gt;&lt;br /&gt;Algunos de vosotros en el programa habéis puesto "int main (void)" en el punto de entrada al programa. Recuerda que sólo si el programa devuelve un dato, debes utilizar "int". En nuestro caso, el programa controla unos bits de entrada y activa unos bits de salida, pero no devuelve ningún valor.&lt;br /&gt;&lt;br /&gt;El caso en que sí se haría, por ejemplo sería en el caso del cálculo del área de un círculo. Al programa se le pasa el radio y devolvería un entero con el valor del área.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-4219522444021407665?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/4219522444021407665/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=4219522444021407665&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/4219522444021407665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/4219522444021407665'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/04/puedo-poner-solo-void-main-void.html' title='Puedo poner sólo void main (void)'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-7999132214627675087</id><published>2011-04-14T23:02:00.003+02:00</published><updated>2011-04-14T23:02:30.623+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='chips'/><title type='text'>Concept Nokia: Morph (gracias anónimo)</title><content type='html'>&lt;iframe allowfullscreen="" frameborder="0" height="390" src="http://www.youtube.com/embed/pwtMrwjFxns" title="YouTube video player" width="640"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-7999132214627675087?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/7999132214627675087/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=7999132214627675087&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/7999132214627675087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/7999132214627675087'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/04/concept-nokia-morph.html' title='Concept Nokia: Morph (gracias anónimo)'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/pwtMrwjFxns/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-8141086677899109162</id><published>2011-04-14T22:26:00.002+02:00</published><updated>2011-04-14T22:27:21.417+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='chips'/><title type='text'>Futuros usos del grafeno (gracias Alfredo)</title><content type='html'>&lt;iframe allowfullscreen="" frameborder="0" height="390" src="http://www.youtube.com/embed/-YbS-YyvCl4" title="YouTube video player" width="480"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-8141086677899109162?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/8141086677899109162/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=8141086677899109162&amp;isPopup=true' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/8141086677899109162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/8141086677899109162'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/04/futuros-usos-del-grafeno.html' title='Futuros usos del grafeno (gracias Alfredo)'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/-YbS-YyvCl4/default.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-6566031930637900347</id><published>2011-04-11T13:33:00.003+02:00</published><updated>2011-04-11T13:39:32.398+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='temporizadores'/><category scheme='http://www.blogger.com/atom/ns#' term='segundo cuatrimestre'/><title type='text'>Temporizadores · Contar desbordamientos</title><content type='html'>Cuando el tiempo que deseamos temporizar es mayor que un desbordamiento, entonces necesitamos una variable externa (por ejemplo un entero) donde ir "acumulando" los desbordamientos.&lt;br /&gt;&lt;br /&gt;Suponiendo que usamos 16bits@12Mhz...&lt;br /&gt;- 1 desbordamiento --&amp;gt; 65.536µs...variable desbordes=1..&lt;br /&gt;- 2 desbordamientos --&amp;gt;&amp;nbsp; 131.072µs...variable desbordes=2..&lt;br /&gt;- 3 desbordamientos --&amp;gt;&amp;nbsp; 196.608µs...variable desbordes=3..&lt;br /&gt;&lt;br /&gt;Es la manera que tenemos de temporizar cantidades grandes. En estos casos, seguimos necesitando controlar cuando se produce el desbordamiento (mirando TF0) para ir incrementando la variable "desbordes".&lt;br /&gt;&lt;br /&gt;Pero sucede que necesitaremos comprobar cuando la variable "desbordes" alcance un valor determinado. Supongamos que deseamos temporizar 1s..&lt;br /&gt;&lt;br /&gt;- 1s = 1000000µs =&amp;gt; dividimos entre un desborde completo 65536 = 15 (parte entera).&lt;br /&gt;Por lo tanto para el caso de temporizar 1 segundo, en el bucle de control, tendré que controlar cuando la variable "desbordes" alcanza el valor de 15. Aquí puedes ver un ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-mQ7dtgMTavc/TaLm2eJRV4I/AAAAAAAAEzk/Dow62xy7VLM/s1600/t1s.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-mQ7dtgMTavc/TaLm2eJRV4I/AAAAAAAAEzk/Dow62xy7VLM/s1600/t1s.png" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Observa que en el bucle "while" hemos añadido la condición "desbordes&amp;lt;15" para controlar cuando se alcanza el tiempo acumulado correspondiente. Dentro del mismo, debe seguir comprobándose "TF0" para detectar el debordamiento e incrementar la variable.&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;* Puedes descargar el código &lt;a href="http://www.bitschips.com/infoind/t1s.txt"&gt;aquí&lt;/a&gt;. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-6566031930637900347?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/6566031930637900347/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=6566031930637900347&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/6566031930637900347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/6566031930637900347'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/04/temporizadores-contar-desbordamientos.html' title='Temporizadores · Contar desbordamientos'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-mQ7dtgMTavc/TaLm2eJRV4I/AAAAAAAAEzk/Dow62xy7VLM/s72-c/t1s.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-3223027192959331410</id><published>2011-04-11T12:29:00.013+02:00</published><updated>2011-04-11T13:39:14.172+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='temporizadores'/><category scheme='http://www.blogger.com/atom/ns#' term='segundo cuatrimestre'/><title type='text'>Temporización de 10 ms</title><content type='html'>En el ejemplo, se pedía temporizar 10ms usando el micro visto en clase. Como en todos los ejercicios de temporizadores, hay que seguir unos pasos sencillos:&lt;br /&gt;&lt;br /&gt;1. &lt;b style="color: blue;"&gt;Definir &lt;/b&gt;&lt;b&gt;&lt;span style="color: blue;"&gt;todos los registros necesarios con "sfr" y "sbit"&lt;/span&gt;&lt;/b&gt;.&lt;br /&gt;Necesitamos: "&lt;span style="color: blue;"&gt;TMOD&lt;/span&gt;", "&lt;span style="color: blue;"&gt;TCON&lt;/span&gt;", "&lt;span style="color: blue;"&gt;TL0&lt;/span&gt;" y "&lt;span style="color: blue;"&gt;TH0&lt;/span&gt;", además de algunos bits como: "&lt;span style="color: blue;"&gt;TR0&lt;/span&gt;" y "&lt;span style="color: blue;"&gt;TF0&lt;/span&gt;".&lt;br /&gt;&lt;br /&gt;2. &lt;b&gt;&lt;span style="color: blue;"&gt;Escribir el bloque principal de tu programa&lt;/span&gt;&lt;/b&gt;.&lt;br /&gt;Todo programa debe tener un bloque "&lt;span style="color: blue;"&gt;void main(void) { }&lt;/span&gt;"donde se escriben las instrucciones.&lt;br /&gt;&lt;br /&gt;3. &lt;b&gt;&lt;span style="color: blue;"&gt;Calcular la cuenta inicial&lt;/span&gt;&lt;/b&gt;.&lt;br /&gt;Nos piden 10ms=10000microsegundos --&amp;gt; 65.536-10.000=55536=0xD8F0. &lt;br /&gt;&lt;br /&gt;3. &lt;b&gt;&lt;span style="color: blue;"&gt;Asignar &lt;/span&gt;&lt;span style="color: blue;"&gt;los valores a los registros&lt;/span&gt;&lt;/b&gt;.&lt;br /&gt;Configurar el modo de funcionamiento del temporizador y fijar la cuenta inicial (10ms=0xD8F0). &lt;br /&gt;&lt;br /&gt;4. &lt;b style="color: blue;"&gt;Empezar la temporización&amp;nbsp;&lt;/b&gt;&lt;b&gt;&lt;span style="color: blue;"&gt;y esperar el desborde&lt;/span&gt;&lt;/b&gt;.&lt;br /&gt;El temporizador se pone en marcha con "&lt;span style="color: blue;"&gt;TR0&lt;/span&gt;" y se espera el desborde mirando "&lt;span style="color: blue;"&gt;TF0&lt;/span&gt;". Se puede hacer cómodamente con una instrucción while. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-xhAVlihFDZA/TaLV8l5sVDI/AAAAAAAAEzg/MKzYrEe6oe8/s1600/tem.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-xhAVlihFDZA/TaLV8l5sVDI/AAAAAAAAEzg/MKzYrEe6oe8/s1600/tem.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;La instrucción "while" funciona del siguiente modo:&lt;br /&gt;&lt;br /&gt;- Si "&lt;span style="color: blue;"&gt;TF0&lt;/span&gt;" es "0" entonces la condición del bucle es "1" (está negada) y se queda en el bucle..&lt;br /&gt;- Si "&lt;span style="color: blue;"&gt;TF0&lt;/span&gt;" es "1" entonces la condición del bucle es "0" (está negada) y sale del bucle, ejecutando las instrucciones que tengamos más adelante. Por lo tanto dichas instrucciones se ejecutarán cuando finalice la temporización. Como puedes ver, es una de las muchas maneras que puedes usar para controlar los debordamientos.&lt;br /&gt;&lt;br /&gt;* Puedes descargar el ejercicio &lt;a href="http://www.bitschips.com/infoind/ej1.txt"&gt;aquí&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-3223027192959331410?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/3223027192959331410/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=3223027192959331410&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/3223027192959331410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/3223027192959331410'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/04/temporizacion-de-10-ms.html' title='Temporización de 10 ms'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-xhAVlihFDZA/TaLV8l5sVDI/AAAAAAAAEzg/MKzYrEe6oe8/s72-c/tem.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-3882959453608795941</id><published>2011-04-10T20:41:00.005+02:00</published><updated>2011-04-10T21:06:01.422+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='temporizadores'/><category scheme='http://www.blogger.com/atom/ns#' term='segundo cuatrimestre'/><title type='text'>Temporizadores  y condiciones de carrera</title><content type='html'>Un alumno me ha preguntado sobre las condiciones de carrera en los temporizadores. Por ejemplo cuando un temporizador está en modo "contador" para contar piezas, va almacenando el valor en dos registros, que como ya sabéis, son "TH0" y "TL0" para el temporizador "T0".&lt;br /&gt;&lt;br /&gt;Para conocer el valor de la cuenta en un momento dado, el micro mira primero la parte baja del temporizador "TL0" (para ello consume un poco de tiempo). Instantes después mira la para alta del temporizador "TH0" y entonces es cuando ya se tiene el valor real de la cuenta que se almacena en una variable de tu programa.&lt;br /&gt;&lt;br /&gt;Pero, ¿qué ocurre si entre las dos instrucciones de lectura, se produce una interrupción y el programa debe saltar a otra zona de código? Para cuando la ejecución prosiga y si el temporizador no se ha detenido, el valor del temporizador puede haber cambiado, habrá seguido incrementándose y la cuenta podría ser incoherente.&lt;br /&gt;&lt;br /&gt;&lt;div style="color: red;"&gt;Un caso típico sería cuando tenemos: "TH0=11111111" y "TL0=11111111". Si se lee primero "TL0" tendremos "11111111". Imagina que en ese momento el programa salta a otra zona de código. El temporizador no se detiene y se producirá un desbordamiento (la cuenta empezará de cero).&lt;br /&gt;&lt;br /&gt;Cuando a la vuelta de la interrupción (pasado un tiempo desconocido) se lea "TH0", se podría tener "00000000" y el valor de "TL0" que habíamos guardado tampoco seria el real (que ha vuelto a empezar de cero incrementándose).&lt;/div&gt;&lt;br /&gt;Para evitar estas "&lt;b&gt;condiciones de carrera&lt;/b&gt;", antes de realizar una lectura del valor del temporizador, siempre se detendrá con la instrucción "TR0=0" y se leerá entonces los registros. De este modo se evitarán las condiciones de carrera (resultados incoherentes), poniéndose en marcha inmediatamente con "TR0=1". En la figura puedes ver como se aplica en este ejemplo de contador de vehículos:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-cXpIT5ulJBQ/TaH_Y3-onCI/AAAAAAAAEzc/hrPVMZYWHtU/s1600/carrera.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="428" src="http://4.bp.blogspot.com/-cXpIT5ulJBQ/TaH_Y3-onCI/AAAAAAAAEzc/hrPVMZYWHtU/s640/carrera.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://es.wikipedia.org/wiki/Condici%C3%B3n_de_carrera"&gt;Condiciones de carrera por Wikipedia&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-3882959453608795941?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/3882959453608795941/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=3882959453608795941&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/3882959453608795941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/3882959453608795941'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/04/temporizadores-y-condiciones-de-carrera.html' title='Temporizadores  y condiciones de carrera'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-cXpIT5ulJBQ/TaH_Y3-onCI/AAAAAAAAEzc/hrPVMZYWHtU/s72-c/carrera.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-4047669126324475104</id><published>2011-04-10T20:08:00.004+02:00</published><updated>2011-04-10T20:16:03.349+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='temporizadores'/><category scheme='http://www.blogger.com/atom/ns#' term='segundo cuatrimestre'/><title type='text'>Uso de máscaras en los temporizadores</title><content type='html'>En este ejemplo que vimos en clase, se configuraba el temporizador "T0" con un valor determinado. Nos fijaremos en las instrucciones: "&lt;b&gt;TMOD |= 0x01 y TMOD &amp;amp;= 0xF1&lt;/b&gt;". En realidad fijan el modo de funcionamiento del temporizador (si es contador/temporizador, el número de bits, etc..) modificando las posiciones de bit del registro.&lt;br /&gt;&lt;br /&gt;La cuestión es ¿por qué para ello hemos utilizado dos operaciones?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Z9qe5cjQA5o/TZqoVDOXkpI/AAAAAAAAEy0/IhvQkDBRtUI/s1600/pr%25C3%25A1ctica_tem.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-Z9qe5cjQA5o/TZqoVDOXkpI/AAAAAAAAEy0/IhvQkDBRtUI/s1600/pr%25C3%25A1ctica_tem.png" /&gt;&lt;/a&gt;&lt;/div&gt;Cuando aplicamos la primera operación "TMOD |= 0x01" hacemos una "OR" al registro "TMOD" y ponemos a "1" sólo el primer bit --&amp;gt; 0x01 = 0000000&lt;b style="color: red;"&gt;1&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Lo importante es que al utilizar una "OR", sólo tocamos el bit donde hemos puesto "1s", &lt;b style="color: red;"&gt;por lo tanto los demás bits se quedan como estaban&lt;/b&gt;. La operación "OR" nos permite poner a "1" los bits que necesitemos manteniendo su estado anterior (sin tocar otros bits).&lt;br /&gt;&lt;br /&gt;No hemos terminado de configurar el registro "TMOD", sólo hemos puesto los "1s". Ahora nos falta poner "0s" en otras posiciones de bit y para ello usaremo la operación "AND". De hecho la línea "TMOD &amp;amp;= 0xF1" pone a cero tres posiciones del registro --&amp;gt; 0xF1 = 1111&lt;b style="color: red;"&gt;000&lt;/b&gt;1, &lt;b&gt;&lt;span style="color: red;"&gt;dejando los demás bits sin tocar&lt;/span&gt;&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Como resumen, cuando queramos poner "1s" y "0s" en un registro, manteniendo los valores anteriores, debemos usar las máscaras y además hacerlo en dos pasos (OR para poner a "1" y AND para poner a "0").&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Y queda la pregunta del millón, ¿por qué querríamos hacerlo de esta manera? pues porque quizá otro programa podría estar usando el temporizador "T1" y los bits que controlan su funcionamiento están también en el mismo registro "TMOD". Si no usáramos máscaras y lo hiciéramos en una sóla operación, estaríamos "machacando" los valores en los bits que controlan el otro temporizador y si se estuviera usando, podríamos alterar su funcionamiento. Sencillo ¿no?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-4047669126324475104?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/4047669126324475104/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=4047669126324475104&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/4047669126324475104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/4047669126324475104'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/04/uso-de-mascaras-en-los-temporizadores.html' title='Uso de máscaras en los temporizadores'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-Z9qe5cjQA5o/TZqoVDOXkpI/AAAAAAAAEy0/IhvQkDBRtUI/s72-c/pr%25C3%25A1ctica_tem.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-826527509034214057</id><published>2011-04-10T15:29:00.006+02:00</published><updated>2011-04-10T19:45:50.884+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='temporizadores'/><category scheme='http://www.blogger.com/atom/ns#' term='segundo cuatrimestre'/><title type='text'>Temporizadores y frecuencia de reloj (2)</title><content type='html'>Otro caso, veamos el microcontrolador EM6580 de la empresa &lt;a href="http://www.emmicroelectronic.com/default.asp"&gt;EM Microelectronic&lt;/a&gt;. Echemos un vistazo a su arquitectura en la hoja de características. Indica que tiene un reloj interno, que no necesita componentes externo y que puede funcionar entre 30khz y 800khz. También puede verse que tiene un temporizador de 10 bits, por lo tanto un desbordamiento completo se producirá en 2^10=1024 cuentas.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-x2S4Ykilxjk/TaGx29q5RqI/AAAAAAAAEzQ/odDJFI2phVE/s1600/emm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-x2S4Ykilxjk/TaGx29q5RqI/AAAAAAAAEzQ/odDJFI2phVE/s400/emm.png" width="382" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Ahora miramos, en la hoja de características del micro, el esquema del temporizador para saber a qué frecuencia trabaja y que relación tiene con el reloj del sistema. Se puede ver en la figura siguiente: &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-JrySNWfMDAM/TaHKUcyZCRI/AAAAAAAAEzU/hO8QHp_i7pY/s1600/emm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="371" src="http://4.bp.blogspot.com/-JrySNWfMDAM/TaHKUcyZCRI/AAAAAAAAEzU/hO8QHp_i7pY/s640/emm.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Lo que podemos ver aquí es que la señal que incrementa el temporizador "Out-ck", no depende de la señal de reloj del sistema. No podemos ver algo como en el caso del PIC, donde la señal de reloj se divide para alimentar el temporizador. Lo que vemos es que hay una serie de frecuencias que pueden seleccionarse, desde 1hz (la mínima) hasta 16khz (la máxima). Se podrá elegir entre ellas.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Supongamos que tomamos la frecuencia mínima: 1hz. Su periodo T=1/1hz=1s.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Esto quiere decir que a cada tic (1segundo), el temporizador se incrementa. &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Si utilizamos 10bits, un desbordamiento completo será 2^10=1024s= 17,07minutos.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Si miramos un poco más adelante en la hoja de características, veremos que coincide este valor (texto señalado en color rojo). También puedes ver que utilizando una frecuencia mayor, el tiempo de desbordamiento será mucho menor.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-FyHzrhbgCBM/TaHM2Rc2AFI/AAAAAAAAEzY/JOKHbfh7PnU/s1600/emm2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="179" src="http://3.bp.blogspot.com/-FyHzrhbgCBM/TaHM2Rc2AFI/AAAAAAAAEzY/JOKHbfh7PnU/s640/emm2.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Como has podido comprobar en este ejemplo, la frecuencia de reloj utilizada para el temporizador, no está relacionada con la frecuencia de reloj del sistema en un factor proporcional como en otros micros. Aquí hay disponibles las frecuencias de 1hz, 8hz, 128hz, 512hz, 2khz y 16khz y para cada una de ellas, el tiempo de desbordamiento será diferente.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-826527509034214057?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/826527509034214057/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=826527509034214057&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/826527509034214057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/826527509034214057'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/04/temporizadores-y-frecuencia-de-reloj-2.html' title='Temporizadores y frecuencia de reloj (2)'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-x2S4Ykilxjk/TaGx29q5RqI/AAAAAAAAEzQ/odDJFI2phVE/s72-c/emm.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-9020622333247459209</id><published>2011-04-09T19:08:00.003+02:00</published><updated>2011-04-10T15:24:21.284+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='temporizadores'/><category scheme='http://www.blogger.com/atom/ns#' term='segundo cuatrimestre'/><title type='text'>Temporizadores y frecuencia de reloj</title><content type='html'>Cuando trabajamos con temporizadores, lo primero que debemos tener en cuenta en su frecuencia de trabajo, que está relacionada directamente con el reloj del sistema. Sólo tienes que mirar las tablas y localizar el esquema del temporizador: Por ejemplo, en la figura de abajo, puedes ver el esquema del temporizador de un PIC16F84. Observa que está alimentado por 1/4 de la frecuencia del reloj. Este dato es importante, porque así puedes saber a cuanto tiempo corresponde un desbordamiento completo.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-j_6lW3IXl4Q/TaCQzoab9oI/AAAAAAAAEzM/t6Wc1bToq3E/s1600/timepic.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="251" src="http://1.bp.blogspot.com/-j_6lW3IXl4Q/TaCQzoab9oI/AAAAAAAAEzM/t6Wc1bToq3E/s640/timepic.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;Supongamos que este micro funciona con un reloj a 4Mhz. El periodo T=0,25µs.&lt;br /&gt;Según este esquema, el temporizador funcionaría a 4Mhz/4=1Mhz. El periodo T=1µs.&lt;br /&gt;&lt;br /&gt;Esto quiere decir que la cuenta del temporizador para este micro se incrementa cada 1µs.&lt;br /&gt;Para un temporizador de 16bit@4Mhz, una cuenta completa temporizará 65536µs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-9020622333247459209?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/9020622333247459209/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=9020622333247459209&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/9020622333247459209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/9020622333247459209'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/04/temporizadores-y-frecuencia-de-reloj.html' title='Temporizadores y frecuencia de reloj'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-j_6lW3IXl4Q/TaCQzoab9oI/AAAAAAAAEzM/t6Wc1bToq3E/s72-c/timepic.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-4259325519359786653</id><published>2011-04-09T08:57:00.004+02:00</published><updated>2011-04-09T17:57:29.728+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='temporizadores'/><category scheme='http://www.blogger.com/atom/ns#' term='segundo cuatrimestre'/><title type='text'>Temporizador en el micro AT89S8253</title><content type='html'>Aquí puedes ver la estructura interna de un microcontrolador. Algunos tienen el oscilador interno, otros necesitan algunos componentes externos como en este caso. Observa el rectángulo remarcado en verde. Es el oscilador encargado de generar la señal de reloj que sincroniza todas las operaciones y que también es utilizada como base de tiempos para los temporizadores.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-JsLZkMNUTRU/TaACfoZUHLI/AAAAAAAAEy8/_xALqangLoY/s1600/timer.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="632" src="http://4.bp.blogspot.com/-JsLZkMNUTRU/TaACfoZUHLI/AAAAAAAAEy8/_xALqangLoY/s640/timer.png" width="640" /&gt; &lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;En este caso, que corresponde al micro visto en clase, puedes ver que hay que añadir dos condensadores y un cristal de cuarzo que determina la frecuencia del reloj. Nosotros usamos un cristal de 12Mhz pero en función del micro, podrás utilizar otros cristales. En la web de &lt;a href="http://sites.google.com/site/rubenloredoamaro/microcontroladores/practica-1-programador-at89s8253"&gt;Rubén Loredo&lt;/a&gt; puedes ver un esquema de un programador para este micro. Puedes descargar el esquemático y fabricarte tu placa. En el diagrama, señalado en color rojo, puedes ver el espacio para los dos condensadores y el cristal de cuarzo que configuran el reloj del sistema:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://sites.google.com/site/rubenloredoamaro/microcontroladores/practica-1-programador-at89s8253"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-lzSoushZ6bk/TaCAKhPlxFI/AAAAAAAAEzE/YCg_pQs2ovY/s400/reloj.png" width="328" /&gt; Página de Rubén Laredo&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Este micro necesita elementos externos para activar el reloj, en otros micros se hacen innecesarios.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-4259325519359786653?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/4259325519359786653/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=4259325519359786653&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/4259325519359786653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/4259325519359786653'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/04/temporizador-en-el-micro-at89s8253.html' title='Temporizador en el micro AT89S8253'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-JsLZkMNUTRU/TaACfoZUHLI/AAAAAAAAEy8/_xALqangLoY/s72-c/timer.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-6302679507760001773</id><published>2011-04-08T17:44:00.003+02:00</published><updated>2011-04-10T19:47:39.387+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='temporizadores'/><category scheme='http://www.blogger.com/atom/ns#' term='segundo cuatrimestre'/><title type='text'>¿De qué depende la cuenta máxima de un temporizador?</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Cuando usamos temporizadores, la cuenta se almacena en un registro que puede tener ser de 8, 13 ó 16 bits. Cada vez que el reloj del sistema hace "clic", el temporizador incrementa la cuenta. En el micro visto en clase, sabemos que el temporizador se incrementa cada microsegundo, por lo tanto su máxima cuenta será la que pueda alcanzar hasta que desborde. Recuerda que cuando llega a la máxima cuenta, vuelve a empezar desde cero.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="329" src="http://3.bp.blogspot.com/-oo9_bK11JYM/TZ8tVIU5IPI/AAAAAAAAEy4/mQIjw06a-qQ/s640/nbits.png" width="640" /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-6302679507760001773?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/6302679507760001773/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=6302679507760001773&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/6302679507760001773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/6302679507760001773'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/04/de-que-depende-la-cuenta-maxima-de-un.html' title='¿De qué depende la cuenta máxima de un temporizador?'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-oo9_bK11JYM/TZ8tVIU5IPI/AAAAAAAAEy4/mQIjw06a-qQ/s72-c/nbits.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-4469139019682119341</id><published>2011-04-05T07:17:00.005+02:00</published><updated>2011-04-05T08:04:39.609+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='temporizadores'/><category scheme='http://www.blogger.com/atom/ns#' term='segundo cuatrimestre'/><title type='text'>Más temporizadores</title><content type='html'>Hoy terminaremos el tema de temporizadores. Veremos como se usan las interrupciones y haremos ejercicios que grabaremos en Keil para comprobar la temporización.&lt;br /&gt;&lt;br /&gt;Realizar el &lt;a href="http://www.bitschips.com/infoind/interrupciones.pdf"&gt;cuestionario&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Práctica 1&lt;/b&gt; · Escribe este programa en Keil. Corrige los errores y comprueba que realiza la temporización, definiendo una salida 0 del puerto "P0". ¿Cuánto tiempo está temporizando?&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Z9qe5cjQA5o/TZqoVDOXkpI/AAAAAAAAEy0/IhvQkDBRtUI/s1600/pr%25C3%25A1ctica_tem.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="247" src="http://4.bp.blogspot.com/-Z9qe5cjQA5o/TZqoVDOXkpI/AAAAAAAAEy0/IhvQkDBRtUI/s400/pr%25C3%25A1ctica_tem.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Práctica 2&lt;/b&gt; · Reescribe el programa anterior para conseguir una temporización de 5 segundos. Añade la opción de ponerlo en marcha sólo cuando el pin "P0.4" esté activo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-4469139019682119341?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/4469139019682119341/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=4469139019682119341&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/4469139019682119341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/4469139019682119341'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/04/mas-temporizadores.html' title='Más temporizadores'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-Z9qe5cjQA5o/TZqoVDOXkpI/AAAAAAAAEy0/IhvQkDBRtUI/s72-c/pr%25C3%25A1ctica_tem.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-3453445418906326681</id><published>2011-03-28T16:06:00.007+02:00</published><updated>2011-04-19T08:14:14.538+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='clase temporizadores'/><title type='text'>Uso de temporizadores</title><content type='html'>Empezamos el estudio de los temporizadores.&lt;br /&gt;&lt;br /&gt;1. Descarga y estudia el tema &lt;a href="http://www.bitschips.com/infoind/tema_temporizadores.pdf"&gt;aquí&lt;/a&gt;.&lt;br /&gt;2. Realiza los ejercicios del &lt;a href="http://www.bitschips.com/infoind/cuestionario_temporizadores.pdf"&gt;cuestionario&lt;/a&gt;.&lt;br /&gt;3. Repasa haciendo estos 4 &lt;a href="http://www.bitschips.com/infoind/4ejercicios.pdf"&gt;ejercicios&lt;/a&gt;.&lt;br /&gt;4. Ejercicios &lt;a href="http://www.bitschips.com/infoind/ejercicios_temporizadores.pdf"&gt;temporizadores/contadores&lt;/a&gt;.&lt;br /&gt;5. Dos &lt;a href="http://www.bitschips.com/infoind/problemas_examen.pdf"&gt;problemas &lt;/a&gt;de examen (temporizadores por consulta).&lt;br /&gt;6. Cuatro &lt;a href="http://www.bitschips.com/infoind/problemas_temporizadores_int.pdf"&gt;problemas &lt;/a&gt;de temporizadores por interrupción.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-3453445418906326681?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/3453445418906326681/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=3453445418906326681&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/3453445418906326681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/3453445418906326681'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/03/uso-de-temporizadores.html' title='Uso de temporizadores'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-8789641872107193341</id><published>2011-03-27T21:23:00.006+02:00</published><updated>2011-03-28T16:03:53.758+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ciclos máquina y tiempos ejecución'/><title type='text'>Calcular el tiempo de ejecución de una instrucción</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: left;"&gt;Se trata de calcular el tiempo de ejecución de las instrucciones "PUSH directo" y "NOP" teniendo en cuenta una frecuencia de reloj de 12Mhz y el micro visto en clase (ATMEL). Aquí podéis algunas soluciones. Sobre todo cuando se trata de calcular el tiempo de ejecución de un programa hay que tener en cuenta sólo las instrucciones que aparecen dentro del bucle.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-lwBHQyCu09g/TY-Omzv6JDI/AAAAAAAAEyA/fQ5NEksN344/s1600/Save0003.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://4.bp.blogspot.com/-lwBHQyCu09g/TY-Omzv6JDI/AAAAAAAAEyA/fQ5NEksN344/s640/Save0003.JPG" width="451" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-PX5BSVTbnoQ/TY-OnxPaAcI/AAAAAAAAEyE/YlkUBoCW0ck/s1600/Save0004.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="387" src="http://4.bp.blogspot.com/-PX5BSVTbnoQ/TY-OnxPaAcI/AAAAAAAAEyE/YlkUBoCW0ck/s400/Save0004.JPG" width="400" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Otras soluciones y el cálculo del tiempo de ejecución de un programa en ensamblador:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-dgWejNlm77Y/TY-QFG7UsjI/AAAAAAAAEyM/zpJQnMrQKUM/s1600/Save0006.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://1.bp.blogspot.com/-dgWejNlm77Y/TY-QFG7UsjI/AAAAAAAAEyM/zpJQnMrQKUM/s640/Save0006.JPG" width="452" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-QyOP8sWtMAc/TY-QF2BUjFI/AAAAAAAAEyQ/bi95nfH-r-o/s1600/Save0007.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://3.bp.blogspot.com/-QyOP8sWtMAc/TY-QF2BUjFI/AAAAAAAAEyQ/bi95nfH-r-o/s640/Save0007.JPG" width="452" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Uu9hvgEWLWM/TY-QESMBJqI/AAAAAAAAEyI/xGeT4Lhe3nQ/s1600/Save0008.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://1.bp.blogspot.com/-Uu9hvgEWLWM/TY-QESMBJqI/AAAAAAAAEyI/xGeT4Lhe3nQ/s640/Save0008.JPG" width="452" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-8789641872107193341?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/8789641872107193341/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=8789641872107193341&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/8789641872107193341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/8789641872107193341'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/03/calcular-el-tiempo-de-ejecucion-de-una.html' title='Calcular el tiempo de ejecución de una instrucción'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-lwBHQyCu09g/TY-Omzv6JDI/AAAAAAAAEyA/fQ5NEksN344/s72-c/Save0003.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-3872383523596698755</id><published>2011-03-22T21:29:00.002+01:00</published><updated>2011-04-04T18:45:38.467+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='clase ensamblador'/><title type='text'>Repaso de la clase de ensamblador</title><content type='html'>Hoy ha sido un día un poco duro, hemos vuelto de las Fallas de 2011 y todos estamos un poco "desconectados" de la rutina, pero eso se arregla rápidamente.&lt;br /&gt;&lt;br /&gt;Lo que hemos hecho en clase hoy ha sido repasar los conceptos básicos de la programación en ensamblador, tipos datos, instrucciones, modos de direccionamiento, etc, pasando a realizar las actividades de la teoría.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Os deben quedar claros los conceptos:&lt;/b&gt;&lt;br /&gt;- Cada instrucción en ensamblador se "desgranará" ocupando uno o varios bytes que serán almacenados en la memoria del micro.&lt;br /&gt;- Cada instrucción tiene un tiempo de ejecución diferente, por ejemplo las más simples como "NOP" tardan poco (1CM) otras más complejas durarán varios ciclos de máquina, por ejemplo "MUL AB" (4CM).&lt;br /&gt;&lt;br /&gt;- El modo de direccionamiento no es más que el modo que tienen las instrucciones de "buscar" los datos en memoria. &lt;br /&gt;&lt;br /&gt;- Cuando el dato está en la propia instrucción, se habla de inmediato y se representa con un símbolo "#", por ejemplo: "MOV A,#34h" mueve dicho dato al acumulador (sin necesidad de ir a ninguna posición de memoria).&lt;br /&gt;&lt;br /&gt;- Cuando hay que buscar el dato en una posición de memoria, se habla de direccionamiento directo, por ejemplo: "MOV A,0x90" debe ir a la posición de memoria "0x90" a recoger el dato, moviéndolo al acumulador.&lt;br /&gt;&lt;br /&gt;- El modo indirecto parece algo complicado, se utiliza con el símbolo "@", indicando que el dato está un poco más lejos, por ejemplo la instrucción: "MOV A,@R1", indica que en R1 está la DIRECCIÓN del DATO, por lo tanto, primero tenemos que mirar en R1, apuntar dicha dirección (como si hubiéramos mirado la dirección en un mapa) y entonces ir a dicha dirección a por el DATO que se moverá al acumulador.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;REPASO:&lt;/b&gt;&lt;br /&gt;Algunos de vosotros todavía tenéis un poco de lío con la creación de un proyecto para compilar un programa con Keil. Pasos:&lt;br /&gt;&lt;br /&gt;1. Crear proyecto nuevo..&lt;br /&gt;2. Elegir el micro..&lt;br /&gt;3. Escribir el código y guardarlo en .asm..&lt;br /&gt;4. Vincularlo con el proyecto (botón derecho..Add file..)..&lt;br /&gt;&lt;br /&gt;..y ya se puede compilar ah! y no hay que olvidar marcar la opción para que el compilador genere el ejecutable (el .hex) q más tarde grabaremos en el micro real.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;OTRA COSA:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Por último hemos estado viendo en la práctica tres programitas sencillos, uno que sumaba dós números, otro donde los números se leen de los puertos "P0" y "P1" y otro que realiza una operación diferente en función de un bit del puerto.&lt;br /&gt;&lt;br /&gt;Cuando los datos de tu programa se leen de los puertos, simular es una muy buena opción porque podemos ver como se comporta nuestro código cuando se producen estos cambios (sin conectar nada físicamente). Para simular hay que hacer clic en el icono en forma de letra "D" de color rojo situada en la barra de herramientas arriba a la derecha.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://es.wikipedia.org/wiki/Mnem%C3%B3nico"&gt;Mnemónicos&lt;/a&gt; por Wikipedia.&lt;br /&gt;&lt;a href="http://es.wikipedia.org/wiki/Lenguaje_de_m%C3%A1quina"&gt;Lenguaje máquina&lt;/a&gt; por Wikipedia.&lt;br /&gt;&lt;a href="http://es.wikipedia.org/wiki/Modos_de_direccionamiento"&gt;Modos de direccionamiento&lt;/a&gt; por Wikipedia.&lt;br /&gt;&lt;a href="http://es.wikipedia.org/wiki/Lenguaje_ensamblador"&gt;Lenguaje ensamblador&lt;/a&gt; por Wikipedia.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-3872383523596698755?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/3872383523596698755/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=3872383523596698755&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/3872383523596698755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/3872383523596698755'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/03/repaso-de-la-clase-de-ensamblador.html' title='Repaso de la clase de ensamblador'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-9015526208723800467</id><published>2011-03-21T23:52:00.008+01:00</published><updated>2011-03-23T15:09:52.185+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='clase ensamblador'/><title type='text'>Clase ensamblador</title><content type='html'>Con esta clase y las actividades realizadas (ambos documentos), daremos por finalizado el tema de ensamblador.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.bitschips.com/infoind/intro_asm.pdf"&gt;Intro ensamblador&lt;/a&gt;.&lt;br /&gt;&lt;a href="http://www.bitschips.com/infoind/instrucciones.pdf"&gt;Juego de instrucciones.&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.bitschips.com/infoind/tablas2.pdf"&gt;Tablas&lt;/a&gt; &lt;br /&gt;Realizad todas las actividades.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Aplicación para detección de personas usando un micro y un sensor volumétrico:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe allowfullscreen="" frameborder="0" height="390" src="http://www.youtube.com/embed/2ahks1bK9K8" title="YouTube video player" width="480"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Aplicación para detección de movimiento de personas con cámaras de video:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe allowfullscreen="" frameborder="0" height="390" src="http://www.youtube.com/embed/1F9OvkuoFoo" title="YouTube video player" width="480"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ejemplo de reconocimiento de imágenes en tiempo real:&lt;br /&gt;&lt;br /&gt;¿Qué problema puede haber para el procesado en el caso de las cámaras de video?&lt;br /&gt;¿Qué tipo de sensores puedes utilizar para el primer caso?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-9015526208723800467?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/9015526208723800467/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=9015526208723800467&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/9015526208723800467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/9015526208723800467'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/03/clase-ensamblador.html' title='Clase ensamblador'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/2ahks1bK9K8/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-8102658138984446868</id><published>2011-03-20T20:16:00.008+01:00</published><updated>2011-03-20T23:03:20.267+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='actividades'/><category scheme='http://www.blogger.com/atom/ns#' term='ensamblador'/><title type='text'>Problemas ensamblador</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;strong&gt;Estos ejercicios servirán para repasar la programación en ensamblador, el cálculo de los tiempos de ejecución a una frecuencia determinada (12Mhz) y los usaremos en las prácticas con la placas y el compilador Keil.&lt;/strong&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;strong&gt;Ejercicio nº1&lt;/strong&gt; · Calcular el tiempo de ejecución, las posiciones de memoria ocupadas&amp;nbsp;por el&amp;nbsp;programa y determinar su funcionalidad. Compruébalo con el compilador Keil.﻿ Determinar los puertos que se utilizan.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-HIrFrmkTnT0/TYZb_20_YnI/AAAAAAAAExk/cWDlXGMyU3A/s1600/sumar2num.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" r6="true" src="https://lh5.googleusercontent.com/-HIrFrmkTnT0/TYZb_20_YnI/AAAAAAAAExk/cWDlXGMyU3A/s320/sumar2num.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;strong&gt;Ejercicio nº2&lt;/strong&gt; · Calcular el tiempo de ejecución, las posiciones de memoria ocupadas por el programa y determinar su funcionalidad. Compruébalo con el compilador Keil.﻿ Determinar los puertos que se utilizan.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-Yp6Zd3TG8Hk/TYZwUX2PcsI/AAAAAAAAExs/FK4YcuFoEYQ/s1600/asm2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" r6="true" src="https://lh3.googleusercontent.com/-Yp6Zd3TG8Hk/TYZwUX2PcsI/AAAAAAAAExs/FK4YcuFoEYQ/s200/asm2.png" width="196" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Ejercicio nº3&lt;/strong&gt; · Calcular el tiempo de ejecución, las posiciones de memoria ocupadas por el programa y determinar su funcionalidad. Compruébalo con el compilador Keil.﻿ Determinar los puertos que se utilizan.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/--KAZLk6AewU/TYZ4CTCzJVI/AAAAAAAAExw/XjyCLHcpq7U/s1600/asm3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" r6="true" src="https://lh3.googleusercontent.com/--KAZLk6AewU/TYZ4CTCzJVI/AAAAAAAAExw/XjyCLHcpq7U/s400/asm3.png" width="211" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;﻿&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-8102658138984446868?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/8102658138984446868/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=8102658138984446868&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/8102658138984446868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/8102658138984446868'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/03/problemas-ensamblador.html' title='Problemas ensamblador'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh5.googleusercontent.com/-HIrFrmkTnT0/TYZb_20_YnI/AAAAAAAAExk/cWDlXGMyU3A/s72-c/sumar2num.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-7315735818297366881</id><published>2011-03-14T10:37:00.017+01:00</published><updated>2011-03-23T15:22:40.638+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ez web lynx'/><category scheme='http://www.blogger.com/atom/ns#' term='chips'/><title type='text'>Ez Web Lynx · Tus diseños electrónicos online</title><content type='html'>Hoy me he encontrado &lt;a href="http://www.ezweblynx.com/"&gt;aquí&lt;/a&gt; por casualidad con algo muy interesante. Imagina que diseñas una placa con un microcontrolador que activa un motor y necesitas poder controlarlo a distancia. Te encantaría poder hacerlo a través de Internet. Necesitas un dispositivo que añada la conexión a red. Aquí tienes un ejemplo, lo conectas por un lado a tu router ADSL y por el otro a tu circuito usando los pines de entrada/salida del mismo. En realidad funciona como un servidor web en miniatura. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.ezweblynx.com/"&gt;&lt;img border="0" height="175" src="https://lh5.googleusercontent.com/-3YKNiyGo_RI/TX3gUnOBL_I/AAAAAAAAExU/nHY4wvSfEjY/s200/index37.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Te estarás preguntando como se puede configurar. Se hace todo por HTML. Cuando lo conectes al router, podrás acceder al dispositivo a través de tu navegador, como cuando lo haces al configurar tu router en casa para abrir algunos puertos, tecleando 192.168.... Es un magnífico dispositivo, dispone de pines digitales y analógicos, sensor de temperatura y permite que tus diseños puedan estar "conectados". Su precio está sobre los $49 y $59 para las versiones de 5V y 3,3V respectivamente (a fecha 14/03/11).&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://www.ezweblynx.com/"&gt;Enlace &lt;/a&gt;al fabricante.&lt;br /&gt;- Un buen &lt;a href="http://www.msebilbao.com/notas/downloads/Manual%20rapido%20de%20usuario%20EXWEBLYNX.pdf"&gt;manual&lt;/a&gt; en castellano para empezar a trastear (fuente MSE).&lt;br /&gt;- &lt;a href="http://www.redeweb.com/_txt/643/86.pdf"&gt;Artículo&lt;/a&gt; sobre la configuración del dispositivo (I. Angulo, J,M. Angulo).&lt;br /&gt;- Un buen libro y otros &lt;a href="http://www.lvr.com/ethernet.htm#articles"&gt;dispositivos&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Aquí puedes ver una aplicación, un puente levadizo controlado desde Internet:&lt;br /&gt;&lt;br /&gt;&lt;iframe allowfullscreen="" frameborder="0" height="390" src="http://www.youtube.com/embed/1V1so0GatK0" title="YouTube video player" width="480"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.redeweb.com/_txt/643/86.pdf"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe allowtransparency="true" frameborder="0" scrolling="no" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Finfoind-etsid-upv.blogspot.com%2F&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=450&amp;amp;action=like&amp;amp;font=verdana&amp;amp;colorscheme=light&amp;amp;height=80" style="border: medium none; height: 80px; overflow: hidden; width: 450px;"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-7315735818297366881?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/7315735818297366881/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=7315735818297366881&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/7315735818297366881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/7315735818297366881'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/03/hoy-me-he-encontrado-aqui-por.html' title='Ez Web Lynx · Tus diseños electrónicos online'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh5.googleusercontent.com/-3YKNiyGo_RI/TX3gUnOBL_I/AAAAAAAAExU/nHY4wvSfEjY/s72-c/index37.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-4370714399251578528</id><published>2011-03-13T17:45:00.011+01:00</published><updated>2011-03-16T12:52:52.077+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='actividades'/><category scheme='http://www.blogger.com/atom/ns#' term='entender un datasheet'/><category scheme='http://www.blogger.com/atom/ns#' term='videos recomendados'/><title type='text'>Lectura de datasheets · video recomendado</title><content type='html'>Para&amp;nbsp;aquellos que empezáis a utilizar un micro, lo primero es echar un vistazo a su hoja de características. En este video se repasa el micro 16F87 y se hace referencia a conceptos importantes como la elección del micro en un diseño, el tipo de encapsulado, etc.&lt;br /&gt;&lt;br /&gt;&lt;iframe allowfullscreen="" frameborder="0" height="349" src="http://www.youtube.com/embed/eUPbStNFNbE?rel=0" title="YouTube video player" width="560"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Finfoind-etsid-upv.blogspot.com%2F&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=450&amp;amp;action=like&amp;amp;font=verdana&amp;amp;colorscheme=light&amp;amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-4370714399251578528?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/4370714399251578528/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=4370714399251578528&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/4370714399251578528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/4370714399251578528'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/03/video-recomendado-lectura-de-datasheets.html' title='Lectura de datasheets · video recomendado'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/eUPbStNFNbE/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-6229076565932164789</id><published>2011-03-13T11:05:00.003+01:00</published><updated>2011-03-13T11:11:37.171+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ensamblador'/><title type='text'>Mi primer programa en ensamblador</title><content type='html'>Sencillo, muy básico. Este programa lee lo que tiene en el puerto "P0" y lo envía por el puerto "P1". La aplicación podría ser algo como tener unos pulsadores (P0) y unos leds (P1). Veamos el ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="https://lh3.googleusercontent.com/-263x-BKDTTo/TXyVPINSPLI/AAAAAAAAExM/MO3P4z2w46E/s1600/asm1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="322" src="https://lh3.googleusercontent.com/-263x-BKDTTo/TXyVPINSPLI/AAAAAAAAExM/MO3P4z2w46E/s400/asm1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Las dos primeras líneas, definen los puertos a utilizar (recuerda hacerlo con "&lt;b style="color: #38761d;"&gt;equ&lt;/b&gt;" y no con "&lt;b&gt;&lt;span style="color: red;"&gt;sfr&lt;/span&gt;&lt;/b&gt;"). La directiva "&lt;b&gt;org 0&lt;/b&gt;" colocará el programa a partir de la posición 0 de memoria (al principio). La instrucción "&lt;b&gt;mov p1,p0&lt;/b&gt;" lee el puerto "P0" y envía el dato al puerto "P1". Por último, para que el programa nunca acabe, hemos incluido una instrucción de salto incondicional, es como un "GOTO", salta siempre al principio del programa (deberá hacerse siempre en los programas para micros).&lt;br /&gt;&lt;br /&gt;Recuerda que las instrucciones que utilices dependerán del micro que vayas a programar, por eso deberás tener a mano las tablas correctas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-6229076565932164789?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/6229076565932164789/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=6229076565932164789&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/6229076565932164789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/6229076565932164789'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/03/mi-primer-programa-en-ensamblador.html' title='Mi primer programa en ensamblador'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh3.googleusercontent.com/-263x-BKDTTo/TXyVPINSPLI/AAAAAAAAExM/MO3P4z2w46E/s72-c/asm1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-2494621973369428713</id><published>2011-03-12T22:20:00.003+01:00</published><updated>2011-03-13T11:12:01.911+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ensamblador'/><title type='text'>Instrucciones de salto ensamblador</title><content type='html'>Cuando escribes un programa, la mayoría de las veces incluyes instrucciones de decisión como "if..then..", de este modo tu programa podrá ejecutar diferentes secuencias en función de un valor. Por ejemplo, cuando se consulta un sensor de rebose, si no está activo, el motor está parado (bucle) pero si se activa, tu programa ejecutará otra secuencia (activar motor), en estos casos tenemos dos caminos de ejecución diferentes (salto de secuencia).&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="https://lh5.googleusercontent.com/-9cJ1eUnRHwE/TXvoEo1rKcI/AAAAAAAAExI/4Fl9xlddwEY/s1600/saltos.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="306" src="https://lh5.googleusercontent.com/-9cJ1eUnRHwE/TXvoEo1rKcI/AAAAAAAAExI/4Fl9xlddwEY/s400/saltos.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Cuando escribes en ensamblador, no puedes usar instrucciones tipo "if...then..", debes utilizar las instrucciones máquina del micro que estás programando. Se debe mirar en la hoja de datos y buscar las instrucciones de salto. En la siguiente figura puedes verlas:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-Rm7E3Tcf4Ac/TXvcCjFUNfI/AAAAAAAAExE/OYTtsKPufME/s1600/saltos.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="369" src="https://lh6.googleusercontent.com/-Rm7E3Tcf4Ac/TXvcCjFUNfI/AAAAAAAAExE/OYTtsKPufME/s640/saltos.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Normalmente las instrucciones de salto comprueban una condición para saltar, por ejemplo "DJNZ Rn.." comprueba si el registro "n" ha llegado a cero..o la instrucción "JZ rel.." que salta si el registro "A" es cero.&lt;br /&gt;&lt;br /&gt;Pero si lo que queremos es que el programa salte siempre, como una instrucción "GOTO", entonces debemos utilizar instrucciones de salto como "SJMP rel". Es la instrucción ideal para poner al final del programa para que vuelva al principio como si hubiéramos escrito en C un "while(1)"..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-2494621973369428713?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/2494621973369428713/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=2494621973369428713&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/2494621973369428713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/2494621973369428713'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/03/instrucciones-de-salto-ensamblador.html' title='Instrucciones de salto ensamblador'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh5.googleusercontent.com/-9cJ1eUnRHwE/TXvoEo1rKcI/AAAAAAAAExI/4Fl9xlddwEY/s72-c/saltos.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-6109009676978584765</id><published>2011-03-10T21:29:00.007+01:00</published><updated>2011-04-04T18:46:56.346+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='actividades'/><category scheme='http://www.blogger.com/atom/ns#' term='keil'/><title type='text'>Este fin de semana tienes planes</title><content type='html'>Este fin de semana no vas a salir, no tienes planes y te vas a la cabaña de la montaña. La novia te ha dejado y no te apetece mezclarte con el mundo. Necesitas desconectar un poco, te gusta la electrónica, siempre te ha gustado y necesitas tener tu cabeza ocupada. Tienes componentes electrónicos de todo tipo, hasta tienes una habitación en plan estudio donde te encierras horas y horas con tus prototipos.&lt;br /&gt;&lt;br /&gt;Cerca de la cabaña hay un depósito de agua, está automatizado, tiene una entrada de agua y un sensor que cierra la válvula de entrada cuando está lleno, pero no lo instalaron bien y todas las semanas se pierden muchos litros de agua y nadie se preocupa. Crees que podrías arreglarlo, has dado dos clases de programación de micros pero te sientes capaz de hacerlo y además contribuirías a mejorar las cosas un poco en tu comunidad y eso es bueno ¿no crees?..No tocarás el sistema actual, pero añadirás un nuevo control.&amp;nbsp;El escenario es éste:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="https://lh4.googleusercontent.com/-qelSU5aNrpE/TXkrlCiGe4I/AAAAAAAAExA/pc3bQaG8-uc/s1600/actividad+dep%25C3%25B3sito.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" q6="true" src="https://lh4.googleusercontent.com/-qelSU5aNrpE/TXkrlCiGe4I/AAAAAAAAExA/pc3bQaG8-uc/s400/actividad+dep%25C3%25B3sito.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Componentes&lt;/b&gt;: Tienes un depósito de 500 litros, un sensor de rebose en la parte superior que entrega +5V cuando el agua lo alcanza, una electroválvula que se abre cuando le pones +5V y el micro visto en clase.&lt;br /&gt;&lt;br /&gt;Necesitarás el compilador para programar y simular tu programa. Puedes descargarte &lt;a href="http://www.bitschips.com/infoind/keil_trial_c51v903.exe"&gt;aquí&lt;/a&gt; la versión de evaluación, también puedes descargarla de la web del fabricante (&lt;a href="http://www.keil.com/"&gt;Keil&lt;/a&gt;). La versión es totalmente funcional pero tiene una limitación en el tamaño del código que puede generar, en nuestro caso, no la superaremos.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Actividad&lt;/b&gt;: Utilizarás el puerto "P0" para conectar el sensor y la electroválvula. Decide los pines a usar. Escribe un programa en ensamblador que lea el estado del sensor y cuando éste se active, conecte la electroválvula hasta que el sensor se desactive. Pista: Tendrás que utilizar máscaras (revisa las instrucciones máquina que tienen dicha función).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;[Este trabajo es opcional, pero se tendrá en cuenta a quien lo haga]&lt;/b&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;﻿&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-6109009676978584765?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/6109009676978584765/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=6109009676978584765&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/6109009676978584765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/6109009676978584765'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/03/este-fin-de-semana-tienes-planes.html' title='Este fin de semana tienes planes'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh4.googleusercontent.com/-qelSU5aNrpE/TXkrlCiGe4I/AAAAAAAAExA/pc3bQaG8-uc/s72-c/actividad+dep%25C3%25B3sito.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-6883478843651975716</id><published>2011-03-07T10:39:00.008+01:00</published><updated>2011-03-13T11:10:16.801+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='definir bien los registros sfr'/><category scheme='http://www.blogger.com/atom/ns#' term='segundo cuatrimestre'/><title type='text'>Registros sfr</title><content type='html'>Aquí cito algunas de vuestras definiciones para "sfr" en los cuestionarios entregados:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;"El tipo de variable sfr se encarga de representar datos en el&amp;nbsp;rango&amp;nbsp;0..255.." &lt;/span&gt;&lt;span style="color: black;"&gt;-¿y el propósito?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;"El sfr es un área de registros que está entre la dirección 0x80 y 0xFF de la memoria del micro y sirve para definir los registros con los que voy a trabajar.."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;"La variable sfr nos permite extraer o introducir información de una dirección de memoria de un micro, por ejemplo sfr P0 = 0x90;.." -&lt;/span&gt;&lt;span style="color: black;"&gt;en este caso sólo se define la variable pero no&amp;nbsp;se escribe en el puerto. Yo lo expresaría como: "Una variable de tipo sfr permite...." -sfr no es una variable, sólo define el tipo, la variable sería "P0".&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;"Sirve para representar los datos en el área SFR del micro.." -&lt;/span&gt;&lt;span style="color: black;"&gt;¿y el propósito?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;"Corresponde a una variable&amp;nbsp;en la zona de registros especiales. Declara un entero positivo en el rango 0..255.." -&lt;/span&gt;&lt;span style="color: black;"&gt;¿y el propósito?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Algunas más correctas que otras, pero todas apuntan a la idea general.&amp;nbsp;En&amp;nbsp;un micro hay una zona de registros especiales llamada "SFR" (special function register) ubicados en la memoria interna. Cada registro tiene una función, poner en marcha un temporizador, arrancar el conversor, guardar el dato del convertidor, definir si un bit&amp;nbsp;del puerto es de entrada o de salida, etc.&lt;br /&gt;&lt;br /&gt;Desde esta zona&amp;nbsp;se controla&amp;nbsp;el funcionamiento del micro.&amp;nbsp;Cuando se programa, lo primero que debe hacerse es tener acceso a dichos registros&amp;nbsp;definiendo variables de tipo "sfr". Las direcciones de estos registros&amp;nbsp;dependen del micro&amp;nbsp;utilizado.&amp;nbsp;En&amp;nbsp;los datasheets podrás encontrarlas buscando&amp;nbsp;con "memory map".&lt;br /&gt;&lt;br /&gt;Por lo tanto con "sfr" declaramos una variable que usaremos más adelante en el programa.&lt;br /&gt;Os dejo un enlace&amp;nbsp;referente a la familia MCS-51: &lt;a href="http://es.wikipedia.org/wiki/Intel_8051"&gt;Intel 8051&lt;/a&gt; [Wikipedia]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-6883478843651975716?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/6883478843651975716/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=6883478843651975716&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/6883478843651975716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/6883478843651975716'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/03/definicion-de-sfr.html' title='Registros sfr'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-2306777029575511771</id><published>2011-03-05T12:20:00.011+01:00</published><updated>2011-03-05T13:11:47.669+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='actividades'/><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><title type='text'>Pedir permiso al autor y citar correctamente.</title><content type='html'>En la actividad "&lt;a href="http://infoind-etsid-upv.blogspot.com/2011/03/blog-post.html"&gt;Tengo la mejor idea del mundo...&lt;/a&gt;" se publicaba un enlace a una presentación online. Algunos de vosotros me comentábais que íbais a descargar el audio y a publicarlo. Me pareció una buena idea porque así podríais llevaros el archivo en el móvil y trabajar la actividad en cualquier sitio.&lt;br /&gt;&lt;br /&gt;El hecho de que técnicamente se pueda hacer, no implica que se pueda hacer. Lo correcto es pedir autorización al propietario o empresa. Os sorprendería saber lo agradecidos que algunos de ellos se muestran cuando reciben una petición así. Por otro lado este contacto puede generar otras ideas y oportunidades, por ejemplo os pueden sugerir otros enlaces con videos, presentaciones, etc o encontraros con una oferta de trabajo inesperada.&lt;br /&gt;&lt;br /&gt;A raíz de vuestro correo, me puse en contacto con la empresa y me contestaron lo que cito un poco más abajo. Se alegraban que usáramos esa presentación y aunque no ofrecían directamente una opción para la descarga del audio, autorizaban a que los alumnos descargaran con sus propios medios el audio de la misma.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;div style="color: blue;"&gt;&lt;i&gt;"Rachel M, Mar-04 04:07 pm (PST):&lt;/i&gt;&lt;/div&gt;&lt;div style="color: blue;"&gt;&lt;i&gt;Hi Luis,&lt;/i&gt;&lt;/div&gt;&lt;div style="color: blue;"&gt;&lt;i&gt;Thank  you for emailing SlideRocket.  I'm glad to hear your students like the  presentations so much!  We don't provide a way to export the audio from  that presentation, however if your students have a way to download the  audio themselves they are welcome to do so.  Please let me know if I can  be of further assistance.&lt;/i&gt;&lt;/div&gt;&lt;i style="color: blue;"&gt;Rachel Meresman | Customer Care Specialist&lt;/i&gt;&lt;br /&gt;&lt;a href="http://www.sliderocket.com/"&gt;SlideRocket"&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;¿Por qué citar correctamente? y ¿cómo citar correctamente?&lt;/b&gt;,&amp;nbsp;son dos preguntas que debéis haceros antes de utilizar información de otros en vuestros trabajos (ya sea de libros, artículos, revistas, páginas web, artículos de redes sociales, etc). Es buena idea solicitar permiso al autor antes de hacerlo y citar posteriormente las fuentes. José Remo Fernández Carro (Universidad de Castilla&amp;nbsp; La Mancha) en su &lt;a href="http://www.uclm.es/profesorado/joseremofernandez/index.asp"&gt;página web&lt;/a&gt; (consultada el 5 de marzo de 2011), lo explica perfectamente. "De este modo conseguimos que vuestro trabajo y el de los demás sea reconocido".&lt;br /&gt;..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-2306777029575511771?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/2306777029575511771/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=2306777029575511771&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/2306777029575511771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/2306777029575511771'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/03/pedir-permiso-al-autor.html' title='Pedir permiso al autor y citar correctamente.'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-962678918975056349</id><published>2011-03-02T23:21:00.026+01:00</published><updated>2011-03-27T20:49:29.699+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='actividades'/><title type='text'>Tienes la mejor idea del mundo..</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://app.sliderocket.com/app/FullPlayer.aspx?id=bafe6c8d-b323-4f61-ad30-cbe6e0ad9a37"&gt;&lt;img border="0" height="286" l6="true" src="https://lh6.googleusercontent.com/-5PmWcsZyBPU/TW7Dv1bQwdI/AAAAAAAAEwo/lWa4CFBMFq0/s400/stevejobs.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;¿Adivinas quién es? ¿Y qué está contando? En algún momento de tu vida, vas a tener que&amp;nbsp;hacer algo parecido, presentarte a tí mismo, un servicio, un producto, etc. Si haces clic en la foto podrás ver una presentación online. Yo me quedo con este mensaje:&amp;nbsp;"&lt;b&gt;Aunque tengas la mejor idea del mundo, si no puedes convencer a los demás, no sirve de nada&lt;/b&gt;", creo que no hay que explicarla,&amp;nbsp;ya sabes..hay que venderse bien, hay que hacer las cosas mejor.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;La actividad será un poco diferente.&amp;nbsp;Prepara un resumen con frases, palabras, lo que consideres que es más importante..quédate con lo que te llegue. Toma esta información como un mensaje de una persona (la de la foto) que sabe&amp;nbsp;bastante&amp;nbsp;en su campo, a estas alturas seguro que sabes que se trata de Steve Jobs.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Ah! y si alguien tiene problemas con el inglés, pues trabajar en grupo o buscar ayuda, por ejemplo de un amigo/a erasmus puede funcionar.&lt;/div&gt;&lt;br /&gt;&lt;b&gt;El formato&lt;/b&gt;:&amp;nbsp;A4, sólo por una cara en&amp;nbsp;papel (A4) y &lt;u&gt;escrito a mano&lt;/u&gt;. Para el martes que viene y bueno..también es una actividad&amp;nbsp;opcional, que la haga el que quiera.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;Aunque no hay una opción directa para la descarga del audio de la presentación, la empresa propietaria de la misma (&lt;a href="http://www.sliderocket.com/"&gt;SlideRocket&lt;/a&gt;), en fecha 4 de marzo de 2011, nos &lt;a href="http://infoind-etsid-upv.blogspot.com/2011/03/pedir-permiso-al-autor.html"&gt;autoriza&lt;/a&gt; a que lo hagáis con vuestros propios medios. A fecha 8 de marzo también nos autoriza a publicar el audio en nuestra web y en Facebook. Puedes descargarlo &lt;a href="http://www.bitschips.com/infoind/press_steve_jobs.mp3"&gt;aquí&lt;/a&gt; (gracias Óscar).&lt;br /&gt;&lt;br /&gt;Tres trabajos que resumen algunas de las características que deben tener vuestras presentaciones:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-aztwKnwG3FQ/TY-GapgRaQI/AAAAAAAAEx0/aeVDQMpZAhQ/s1600/mejor_idea_1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-aztwKnwG3FQ/TY-GapgRaQI/AAAAAAAAEx0/aeVDQMpZAhQ/s320/mejor_idea_1.JPG" width="226" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-ywwDqsxd7Y8/TY-GcPhDa0I/AAAAAAAAEx4/ZrmFOhCOqVg/s1600/mejor_idea_2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-ywwDqsxd7Y8/TY-GcPhDa0I/AAAAAAAAEx4/ZrmFOhCOqVg/s320/mejor_idea_2.JPG" width="226" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-BSKCSgPxcSo/TY-GdjwYQII/AAAAAAAAEx8/eRQK4Tf50Ss/s1600/mejor_idea_3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-BSKCSgPxcSo/TY-GdjwYQII/AAAAAAAAEx8/eRQK4Tf50Ss/s320/mejor_idea_3.jpg" width="226" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-962678918975056349?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/962678918975056349/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=962678918975056349&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/962678918975056349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/962678918975056349'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/03/blog-post.html' title='Tienes la mejor idea del mundo..'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh6.googleusercontent.com/-5PmWcsZyBPU/TW7Dv1bQwdI/AAAAAAAAEwo/lWa4CFBMFq0/s72-c/stevejobs.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-872061324253823966</id><published>2011-02-27T17:25:00.026+01:00</published><updated>2011-03-10T16:44:27.241+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='actividades'/><title type='text'>Tu amigo necesita ayuda</title><content type='html'>A un amigo tuyo se le ha roto el termostato de su cámara frigorífica y el fin de semana necesita tenerla en marcha, tiene muchos compromisos y si la comida que encargó llega y el congelador no funciona, se le estropeará, perderá mucho dinero.&lt;br /&gt;&lt;br /&gt;Se ha enterado que estudias Informática Industrial y te llama desesperado preguntándote si podrías montarle un sensor para que controlara la temperatura del congelador.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;a href="https://lh4.googleusercontent.com/-S2rye09JmmQ/TXjwH8Cwr2I/AAAAAAAAEw8/fQFn4Wl8fzw/s1600/escena+congelador+luis.png" imageanchor="1" style="margin-left: 0em; margin-right: 1em;"&gt;&lt;img border="0" height="298" q6="true" src="https://lh4.googleusercontent.com/-S2rye09JmmQ/TXjwH8Cwr2I/AAAAAAAAEw8/fQFn4Wl8fzw/s400/escena+congelador+luis.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;En realidad, has dado un par de clases de la asignatura, pero decides echarle una mano, es tu amigo y empiezas a mirar en páginas que te habían sugerido en clase. Envías un correo a tu profesor y le preguntas, crees haber encontrado algo que puede servir, en el apartado de sensores de temperatura has encontrado esta &lt;a href="http://ww1.microchip.com/downloads/en/DeviceDoc/21440C.pdf"&gt;información&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Actividad: &lt;/b&gt;Estudiar el documento y resumir en una hoja su funcionalidad. Indicar como configurarlo para que active el motor del congelador a +5 grados centígrados.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;b style="color: red;"&gt;&lt;span style="color: black;"&gt;[Este trabajo es opcional, pero se tendrá en cuenta a quien lo haga]&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;Lo hemos solucinado!&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;Hemos aprendido que es posible solucionar un problema concreto sin utilizar un micro. Hay dispositivos como este sensor que tienen una función determinada, que es precisamente lo que necesitábamos aqui.&amp;nbsp;Este dispositivo sensor&amp;nbsp;no se puede programar, ni tiene CPU, ni memoria, ni otros dispositivos&amp;nbsp;como un micro,&amp;nbsp;sólo es capaz de hacer una cosa, en oposición a un micro.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;Aquí podéis ver algunos de vuestros trabajos enviados, creo que entre todos, hemos resuelto muy bien y rápidamente el problema de nuestro amigo y hemos aprendido algo nuevo. También podéis descargaros todo en este &lt;a href="http://www.bitschips.com/infoind/act_congelador.pdf"&gt;archivo&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-iyGLWyD95x8/TW0snPXgK9I/AAAAAAAAEv4/GF7TApxeizM/s1600/dlr-p1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" l6="true" src="https://lh6.googleusercontent.com/-iyGLWyD95x8/TW0snPXgK9I/AAAAAAAAEv4/GF7TApxeizM/s320/dlr-p1.JPG" width="226" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-jD-OV43hOSo/TW0spRtNlXI/AAAAAAAAEv8/7ZHwc8w1xpU/s1600/dlr-p2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" l6="true" src="https://lh4.googleusercontent.com/-jD-OV43hOSo/TW0spRtNlXI/AAAAAAAAEv8/7ZHwc8w1xpU/s320/dlr-p2.JPG" width="226" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-tcI_SqzTQ84/TW0sqo1TCeI/AAAAAAAAEwA/wy41LqnX8i0/s1600/ffr.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" l6="true" src="https://lh3.googleusercontent.com/-tcI_SqzTQ84/TW0sqo1TCeI/AAAAAAAAEwA/wy41LqnX8i0/s320/ffr.JPG" width="226" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-CM7t4e8xAy8/TW0srrGExcI/AAAAAAAAEwE/qKVx4G4XjeU/s1600/jcm.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" l6="true" src="https://lh4.googleusercontent.com/-CM7t4e8xAy8/TW0srrGExcI/AAAAAAAAEwE/qKVx4G4XjeU/s320/jcm.JPG" width="226" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-c-pdGV-zF8A/TW0ssTO41KI/AAAAAAAAEwI/KGqY83eKWVc/s1600/jpl.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" l6="true" src="https://lh3.googleusercontent.com/-c-pdGV-zF8A/TW0ssTO41KI/AAAAAAAAEwI/KGqY83eKWVc/s320/jpl.JPG" width="226" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-av-4jU1c2ns/TW0stSMl75I/AAAAAAAAEwM/-Q5YBvA5xC8/s1600/lcj.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" l6="true" src="https://lh4.googleusercontent.com/-av-4jU1c2ns/TW0stSMl75I/AAAAAAAAEwM/-Q5YBvA5xC8/s320/lcj.JPG" width="226" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-h2uC7j2rIEI/TW0suWhhs8I/AAAAAAAAEwQ/gXVHONi6E9Q/s1600/psj.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" l6="true" src="https://lh4.googleusercontent.com/-h2uC7j2rIEI/TW0suWhhs8I/AAAAAAAAEwQ/gXVHONi6E9Q/s320/psj.JPG" width="226" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-zBma4EcU3gA/TW0svZoFeiI/AAAAAAAAEwU/TmpZGJy61hQ/s1600/scp-p1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" l6="true" src="https://lh4.googleusercontent.com/-zBma4EcU3gA/TW0svZoFeiI/AAAAAAAAEwU/TmpZGJy61hQ/s320/scp-p1.JPG" width="226" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-mj7-SYqm-5Q/TW0swl9A5sI/AAAAAAAAEwY/hgxDFmpn2lE/s1600/scp-p2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" l6="true" src="https://lh4.googleusercontent.com/-mj7-SYqm-5Q/TW0swl9A5sI/AAAAAAAAEwY/hgxDFmpn2lE/s320/scp-p2.JPG" width="226" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-Ly390D1KL5E/TW0sycbWcmI/AAAAAAAAEwc/AlUC_hOtJYU/s1600/spe.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" l6="true" src="https://lh5.googleusercontent.com/-Ly390D1KL5E/TW0sycbWcmI/AAAAAAAAEwc/AlUC_hOtJYU/s320/spe.jpg" width="226" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-AUbomsTxTh4/TW0szbE62RI/AAAAAAAAEwg/1RhlzTZ48vE/s1600/vbt.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" l6="true" src="https://lh5.googleusercontent.com/-AUbomsTxTh4/TW0szbE62RI/AAAAAAAAEwg/1RhlzTZ48vE/s320/vbt.JPG" width="226" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-872061324253823966?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/872061324253823966/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=872061324253823966&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/872061324253823966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/872061324253823966'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/02/una-actividad.html' title='Tu amigo necesita ayuda'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh4.googleusercontent.com/-S2rye09JmmQ/TXjwH8Cwr2I/AAAAAAAAEw8/fQFn4Wl8fzw/s72-c/escena+congelador+luis.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-8402269296090799895</id><published>2011-02-27T12:59:00.003+01:00</published><updated>2011-02-27T17:08:58.077+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='clase 1'/><title type='text'>Compiladores para micros</title><content type='html'>Cuando vas a escribir un programa para un micro, necesitas una placa hardware para conectar físicamente el micro al PC, pero el programa lo escribirás con un programa (compilador).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;IDE.&lt;/b&gt; &lt;br /&gt;Cuando leas "IDE" (Integrated Development Environment), el término hace referencia a un entorno de desarrollo integrado, vamos, al compilador con todas sus herramientas.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Compilador cruzado.&lt;/b&gt;&lt;br /&gt;Un compilador cruzado es capaz de generar código máquina para distintos tipos de microcontroladores, es decir, que puedes escribir tu programa en C y con sólo cambiar el modelo de micro, el compilador es capaz de escribir el código adaptándolo al micro en concreto. Por ejemplo, Keil (más abajo) es un compilador cruzado.&lt;br /&gt;&lt;br /&gt;Algunos ejemplos de compiladores:&lt;br /&gt;&lt;br /&gt;- &lt;b&gt;MPLAB&lt;/b&gt;, es el entorno de desarrollo (IDE) de Microchip. Es potente, tiene prácticamente todas las opciones que puedes necesitar, incluso un simulador que te permitirá comprobar si tu programa funciona correctamente. La ventaja, es totalmente gratuito, pero por contra sólo permite escribir código para los micros de Microchip (no se puede tener todo ;-). &lt;a href="http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=1406&amp;amp;dDocName=en019469&amp;amp;part=SW007002"&gt;Microchip&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;- &lt;b&gt;Keil&lt;/b&gt;, es otro entorno de desarrollo (IDE) pero está abierto a otros micros, no se limita como el caso de MPLAB. Nada más entrar en la web, arriba a la izquierda hay un enlace (&lt;a href="http://www.keil.com/dd/"&gt;supported microcontrollers&lt;/a&gt;) donde puedes comprobar los micros para los que es compatible. La ventaja es que puedes elegir muchos micros (es un compilador criuzado) y la desventaja (que no lo es tanto) es que es de pago, pero tienes versiones &lt;a href="http://www.keil.com/demo/"&gt;demo&lt;/a&gt; con las que puedes trabajar perfectamente (mientras el tamaño de tu programa no supere un límite). &lt;a href="http://www.keil.com/"&gt;Keil&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;- IAR&lt;/b&gt;, es otro compilador cruzado, puedes consulta &lt;a href="http://www.iar.com/website1/1.0.1.0/50/1/"&gt;aquí&lt;/a&gt; la lista de micros para los que es compatible. También ofrecen una versión &lt;a href="http://www.iar.com/website1/1.0.1.0/675/1/"&gt;demo&lt;/a&gt; válida para 3o días y completamente funcional, sin limitación en el tamaño del programa como en el caso anterior. &lt;a href="http://www.iar.com/website1/1.0.1.0/3/1/"&gt;IAR&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-8402269296090799895?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/8402269296090799895/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=8402269296090799895&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/8402269296090799895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/8402269296090799895'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/02/escribir-codigo-para-un-micro.html' title='Compiladores para micros'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-8511141949276173506</id><published>2011-02-27T12:40:00.000+01:00</published><updated>2011-02-27T12:40:33.924+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><title type='text'>Discurso de Steve Jobs en Standford..</title><content type='html'>&lt;iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/6zlHAiddNUY?rel=0" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-8511141949276173506?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/8511141949276173506/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=8511141949276173506&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/8511141949276173506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/8511141949276173506'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/02/discurso-de-steve-jobs-en-standford.html' title='Discurso de Steve Jobs en Standford..'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/6zlHAiddNUY/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-9215073572815036114</id><published>2011-02-26T02:39:00.007+01:00</published><updated>2011-02-26T02:46:50.863+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='clase 1'/><title type='text'>Programador de microcontroladores</title><content type='html'>&lt;a href="http://www.blogger.com/goog_1278104826"&gt; &lt;/a&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;Como  comentamos en clase el martes pasado, para programar un micro,  necesitamos una herramienta hardware (el programador) y una herramienta  software para escribir el código (el compilador). Aquí podéis ver un programador:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe allowfullscreen="" frameborder="0" height="390" src="http://www.youtube.com/embed/jiHNhTFNC9U" title="YouTube video player" width="640"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;El  video está en inglés pero seguro que podéis entenderlo perfectamente..y  el que no...cursito de inglés o a ponerse películas en versión original  con subtítulos..&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;En el enlace al pie, otro programador. En este caso el micro tiene funcionalidad USB y permite hacer más cosas. Recordad  que ésto es posible porque el micro tiene esta  funcionalidad (USB, control gráfico LCD, etc..) como comprobásteis buscando en  el ejercicio en clase.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe allowfullscreen="" frameborder="0" height="390" src="http://www.youtube.com/embed/QnZsvYeZL04" title="YouTube video player" width="640"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-9215073572815036114?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/9215073572815036114/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=9215073572815036114&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/9215073572815036114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/9215073572815036114'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/02/programadores-de-micros.html' title='Programador de microcontroladores'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/jiHNhTFNC9U/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-8489423157815514679</id><published>2011-02-11T19:55:00.001+01:00</published><updated>2011-02-11T20:04:30.353+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='errores de programación'/><category scheme='http://www.blogger.com/atom/ns#' term='miniproyecto'/><category scheme='http://www.blogger.com/atom/ns#' term='primer bloque'/><category scheme='http://www.blogger.com/atom/ns#' term='vuestras dudas'/><title type='text'>SimSeny no se lleva bien con el tratamiento de errores..</title><content type='html'>Un alumno me envía un problema que tiene al intentar activar una salida. Parece que la tarjeta de inicializa bien, pero al hacer clic en el botón "Activar calefactor" se muestra el siguiente error:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-n8jYWqbThZ0/TVWEmTK1Z2I/AAAAAAAAEvU/Bw7Vd2ZgQGI/s1600/sim4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" h5="true" src="http://4.bp.blogspot.com/-n8jYWqbThZ0/TVWEmTK1Z2I/AAAAAAAAEvU/Bw7Vd2ZgQGI/s1600/sim4.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;La solución es sencilla,&amp;nbsp;debes ir a la función que genera el error (en este caso "proceso_escribir_calefactor()" y comentar&amp;nbsp;la línea correspondiente a la llamada de la función&amp;nbsp;"&lt;span style="color: red;"&gt;&lt;strong&gt;proceso_error&lt;/strong&gt;&lt;/span&gt;" (resaltada en color rojo en la imagen de abajo):&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-z9mLbVBhTN8/TVWCuhLvcUI/AAAAAAAAEvM/2cOo7douUmo/s1600/sim.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" h5="true" src="http://1.bp.blogspot.com/-z9mLbVBhTN8/TVWCuhLvcUI/AAAAAAAAEvM/2cOo7douUmo/s1600/sim.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Una vez hecho, al activar la salida, podrás ver en el simulador como cambian los niveles y así comprobar que lo estás haciendo bien (que se activa sólo una salida y no todo el puerto por ejemplo):&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-cLBlj9Rt3uY/TVWD8IES1II/AAAAAAAAEvQ/6kXNixFx20o/s1600/sim3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" h5="true" src="http://1.bp.blogspot.com/-cLBlj9Rt3uY/TVWD8IES1II/AAAAAAAAEvQ/6kXNixFx20o/s1600/sim3.png" /&gt;&lt;/a&gt;&lt;/div&gt;Con el simulador abierto puedes ir haciendo clic en los botones activar/desactivar calefactor/válvula de tu programa&amp;nbsp;y comprobar si cambian los niveles en las salidas (H/L). Es una manera magnífica de ver si lo estás haciendo bien.&lt;br /&gt;&lt;br /&gt;Recuerda que estamos en un entorno de simulación que nos permite trabajar sin tener el "HW". En situaciones reales, &lt;span style="color: red;"&gt;&lt;strong&gt;deberás tener muy presente el tratamiento de errores&lt;/strong&gt;&lt;/span&gt; para poder determinar, en caso de error, donde puede estar el fallo.&lt;br /&gt;..&lt;br /&gt;..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-8489423157815514679?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/8489423157815514679/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=8489423157815514679&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/8489423157815514679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/8489423157815514679'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/02/simseny-no-se-lleva-bien-con-el.html' title='SimSeny no se lleva bien con el tratamiento de errores..'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-n8jYWqbThZ0/TVWEmTK1Z2I/AAAAAAAAEvU/Bw7Vd2ZgQGI/s72-c/sim4.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-3860012257527761861</id><published>2011-02-11T18:59:00.001+01:00</published><updated>2011-02-11T18:59:31.778+01:00</updated><title type='text'>Evolución de un sistema (usuario + temporizador)</title><content type='html'>** revisando&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-3860012257527761861?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/3860012257527761861/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=3860012257527761861&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/3860012257527761861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/3860012257527761861'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/02/evolucion-de-un-sistema-usuario.html' title='Evolución de un sistema (usuario + temporizador)'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-1919781095776158094</id><published>2011-02-11T18:57:00.016+01:00</published><updated>2011-03-06T20:51:44.838+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='miniproyecto'/><category scheme='http://www.blogger.com/atom/ns#' term='vuestras dudas'/><title type='text'>Diferencias entre el modo manual y el automático</title><content type='html'>Hay que tener clara la diferencia entre el modo manual y el automático. &lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;b&gt;En el modo manual&lt;/b&gt;&lt;/span&gt;, será el usuario el que pueda&amp;nbsp;encender o apagar la válvula,&amp;nbsp;calefactor o cualquier otra salida disponible. En&amp;nbsp;la figura la esfera representa el sistema y&amp;nbsp;las piezas blancas el usuario.&amp;nbsp;Dos salidas, en color azul, están controladas por el usuario en modo manual. Las otras dos salidas siguen estando supervisadas por el sistema (según estrategias y diseño, el modo manual puede no permitir tener el control de todas las salidas).&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-JaUV3dzC2Rc/TVWrU3HnMVI/AAAAAAAAEvk/zjNT5r9Eg_o/s1600/manual.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" h5="true" height="300" src="http://4.bp.blogspot.com/-JaUV3dzC2Rc/TVWrU3HnMVI/AAAAAAAAEvk/zjNT5r9Eg_o/s400/manual.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;En el modo manual,&amp;nbsp;no es necesario un&amp;nbsp;temporizador y deberá estar desactivado.&lt;br /&gt;Para ello puedes escribir la siguiente instrucción en tu programa:&lt;br /&gt;&lt;b&gt;&lt;span style="color: black;"&gt;"Form1-&amp;gt;Timer1-&amp;gt;Enabled=false;"&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;b&gt;En el&amp;nbsp;modo automático&lt;/b&gt;&lt;/span&gt;, el temporizador del sistema será el "encargado" de&amp;nbsp;comprobar las entradas y ajustar automáticamente las salidas,&amp;nbsp;a una frecuencia dada. En la figura,&amp;nbsp;la esfera representa el sistema y las cajas los dispositivos a controlar. El color indica que todos los dispositivos están supervisados.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.bitschips.com/"&gt;&lt;img border="0" h5="true" height="300" src="http://4.bp.blogspot.com/-lNDKcHMf2s4/TVWgLzfhYwI/AAAAAAAAEvc/rS09rVkStiU/s400/auto.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;En el modo automático, el usuario pasa a un segundo plano. El temporizador deberá estar encendido.&lt;br /&gt;Para ello puedes escribir la siguiente instrucción en tu programa:&lt;br /&gt;&lt;b&gt;&lt;span style="color: black;"&gt;"Form1-&amp;gt;Timer1-&amp;gt;Enabled=false;"&lt;/span&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-1919781095776158094?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/1919781095776158094/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=1919781095776158094&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/1919781095776158094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/1919781095776158094'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/02/modo-manual-y-automatico.html' title='Diferencias entre el modo manual y el automático'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-JaUV3dzC2Rc/TVWrU3HnMVI/AAAAAAAAEvk/zjNT5r9Eg_o/s72-c/manual.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-3109373549694059685</id><published>2011-02-11T18:46:00.004+01:00</published><updated>2011-02-11T19:26:15.976+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='errores de programación'/><category scheme='http://www.blogger.com/atom/ns#' term='miniproyecto'/><category scheme='http://www.blogger.com/atom/ns#' term='primer bloque'/><category scheme='http://www.blogger.com/atom/ns#' term='vuestras dudas'/><title type='text'>Al iniciar el programa..los temporizadores deberían estar apagados</title><content type='html'>En los proyectos se debe incluir uno o varios temporizadores para controlar la frecuencia de refresco de las entradas/salidas.&amp;nbsp;Un alumno me envía un correo comentando&amp;nbsp;los&amp;nbsp;errores que se muestran al iniciar el programa:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-EnmZ949qAO0/TVVxTvn6uXI/AAAAAAAAEvE/pqrpEZywoL0/s1600/timer.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" h5="true" height="355" src="http://1.bp.blogspot.com/-EnmZ949qAO0/TVVxTvn6uXI/AAAAAAAAEvE/pqrpEZywoL0/s400/timer.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Son dos mensajes, uno en el fondo con el título "&lt;span style="color: red;"&gt;&lt;strong&gt;SimSenyII&lt;/strong&gt;&lt;/span&gt;" y otro delante&amp;nbsp;"&lt;span style="color: red;"&gt;&lt;strong&gt;ssDAQmxReadAnalogScalarF64()..&lt;/strong&gt;&lt;/span&gt;". Esta claro que el primero&amp;nbsp;es del simulador, que intenta&amp;nbsp;arrancar (cuando se llama a alguna función de la tarjeta) y el segundo corresponde a una función de la tarjeta de adquisición..Estos errores aparecen sin intervención del usuario, nada más arrancar, ésto sugiere que es debido a un temporizador&amp;nbsp;que debería estar parado.&lt;br /&gt;&lt;br /&gt;Lo que sucede aquí es bastante frecuente, arrancar la aplicación con los temporizadores &lt;span style="color: red;"&gt;&lt;strong&gt;ENCENDIDOS&lt;/strong&gt;&lt;/span&gt;. Como el timer se dispara antes de poder inicializar el simulador y la tarjeta, todo salta por los aires, no se puede empezar a usar una función de la tarjeta si antes no se ha inicializado..&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: #274e13;"&gt;Solución&lt;/span&gt;&lt;/strong&gt;: Busca el temporizador en el formulario y desactívalo cambiando su propiedad&amp;nbsp;"&lt;span style="color: red;"&gt;&lt;strong&gt;Enabled=false&lt;/strong&gt;&lt;/span&gt;", de este modo,&amp;nbsp;al arrancar el programa, el timer estará apagado:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-vVKrjZ1NVHg/TVVzhWMrU1I/AAAAAAAAEvI/t68MmkVqbq4/s1600/timer2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" h5="true" height="300" src="http://2.bp.blogspot.com/-vVKrjZ1NVHg/TVVzhWMrU1I/AAAAAAAAEvI/t68MmkVqbq4/s400/timer2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;De esta manera el sistema estará inicializado pero &lt;span style="color: red;"&gt;&lt;strong&gt;detenido&lt;/strong&gt;&lt;/span&gt; hasta que el usuario determine&amp;nbsp;los valores deseados y el modo&amp;nbsp;(manual o automático) . &lt;br /&gt;&lt;br /&gt;Si se usa el modo automático, habrá que activar el temporizador:&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;strong&gt;"Form1-&amp;gt;Timer1-&amp;gt;Enabled=1"&amp;nbsp;(el timer es el "encargado" de controlar el sistema)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Si se usa el modo manual,&amp;nbsp;habrá&amp;nbsp;que&amp;nbsp;detener el temporizador:&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;strong&gt;"Form1-&amp;gt;Timer1-&amp;gt;Enabled=0" (el usuario controla las salidas, el timer no hace falta)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Por último, yo añadiría un botón nuevo con el que puedas inicializar la tarjeta, añade uno al formulario, cámbiale el nombre y haz doble clic en&amp;nbsp;para escribir el código que deberá ejecutarse al pulsarlo:&lt;br /&gt;"&lt;span style="color: red;"&gt;&lt;strong&gt;proceso_inicializar_proceso();&lt;/strong&gt;&lt;/span&gt;" (inicia la tarjeta y el simulador)&lt;br /&gt;&lt;br /&gt;De este modo, cuando arranques la aplicación, pulsa primero en el botón y tendrás las tarjeta lista para usar. A partir de este momento ya puedes llamar a las funciones que quieras.&lt;br /&gt;&lt;br /&gt;Esto es una parte de la solución. &lt;br /&gt;Ahora el programa&amp;nbsp;permite inicializar la tarjeta y elegir el modo de funcionamiento, sin errores.&lt;br /&gt;..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-3109373549694059685?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/3109373549694059685/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=3109373549694059685&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/3109373549694059685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/3109373549694059685'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/02/el-temporizador-apagado-al-empezar.html' title='Al iniciar el programa..los temporizadores deberían estar apagados'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-EnmZ949qAO0/TVVxTvn6uXI/AAAAAAAAEvE/pqrpEZywoL0/s72-c/timer.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-4914776536510858272</id><published>2011-02-10T19:44:00.007+01:00</published><updated>2011-02-10T20:13:10.110+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='errores de programación'/><category scheme='http://www.blogger.com/atom/ns#' term='borland c++'/><category scheme='http://www.blogger.com/atom/ns#' term='vuestras dudas'/><category scheme='http://www.blogger.com/atom/ns#' term='bloque I'/><title type='text'>Funciones mal borradas..funciones desaparecidas</title><content type='html'>Durante la creación de un programa&amp;nbsp;creas y borras funciones. Cuando borras, como es tan fácil hacerlo, puede ser un arma de doble filo si no lo haces correctamente. Si borras una función también deberás borrar&amp;nbsp;su definición&amp;nbsp;en la cabecera del módulo.&lt;br /&gt;&lt;br /&gt;Si no lo haces, el compilador encontrará la definición de una función que le dirá "aquí se ha creado&amp;nbsp;una función con estos argumentos y que&amp;nbsp;puedes encontrar aquí al lado.." y...cuando se va a mirar el código de la función, resulta que no está porque la hemos borrado, así de golpe..&lt;br /&gt;&lt;br /&gt;El error&amp;nbsp;es parecido&amp;nbsp;al que sale cuando no se encuentra alguna función de la tarjeta.&lt;br /&gt;Podría ser algo así:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-fQcKDdFCvHM/TVQs_DknmiI/AAAAAAAAEu0/JT5VPTytRUs/s1600/calentador.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" h5="true" height="108" src="http://1.bp.blogspot.com/-fQcKDdFCvHM/TVQs_DknmiI/AAAAAAAAEu0/JT5VPTytRUs/s640/calentador.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Aparecen un par de errores "&lt;span style="color: red;"&gt;&lt;strong&gt;[Linker Error] Unresolved external__&lt;/strong&gt;&lt;/span&gt;" que hacen referencia a funciones que fueron creadas por el usuario: "CalentadorClick" y "Button2Click". Estas funciones se crean automáticamente cuando el usuario hace doble clic en algún botón.&amp;nbsp;Si más adelante las borras, porque has eliminado el botón o por cualquier otro motivo &lt;span style="color: blue;"&gt;&lt;strong&gt;DEBES BORRARLAS BIEN&lt;/strong&gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Para hacerlo correctamente, debes ir al módulo que&amp;nbsp;indica&amp;nbsp;el error y mostrar la cabecera del mismo. Haz clic con el botón derecho sobre el título de la unidad y selecciona "&lt;span style="color: blue;"&gt;&lt;strong&gt;Open Source/Header File&lt;/strong&gt;&lt;/span&gt;":&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-ow17VBDTG70/TVQvIG8o7CI/AAAAAAAAEu4/nJqtbMxL29Y/s1600/cab.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" h5="true" height="323" src="http://2.bp.blogspot.com/-ow17VBDTG70/TVQvIG8o7CI/AAAAAAAAEu4/nJqtbMxL29Y/s400/cab.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Una vez hecho, podrás ver el contenido de la cabecera, con todas las definiciones de las funciones usadas en el programa. Podría ser algo así:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-T5GZMTWplwk/TVQwfWtTL8I/AAAAAAAAEu8/a70JKmh9ZJg/s1600/borrar.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" h5="true" height="265" src="http://3.bp.blogspot.com/-T5GZMTWplwk/TVQwfWtTL8I/AAAAAAAAEu8/a70JKmh9ZJg/s400/borrar.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Recordando un poco, en la cabecera&amp;nbsp;aparecen todas las definiciones de las&amp;nbsp;funciones&amp;nbsp;creadas. Aquí sólo están sus nombres,&amp;nbsp;argumentos que usarán (void, int, double..) y los datos que devolverán. Para cada función creada en ".cpp" aquí habrá una definición única.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;strong&gt;Si borras una función de ".cpp" debes borrarla también de la cabecera ".h".&lt;/strong&gt;&lt;/span&gt; Si no lo haces, el compilador encontrará una definición de la función en la cabecera pero no encontrará la función en el cuerpo del programa y se quejará..con un error tipo "&lt;span style="color: red;"&gt;&lt;strong&gt;[Link Error]&lt;/strong&gt;&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;La solución pasa por borrar de la cabecera&amp;nbsp;aquellas funciones que el&amp;nbsp;usuario creyó haber borrado (aquellas que aparecen referenciadas en el error).&lt;br /&gt;&lt;br /&gt;El error también podría generarse&amp;nbsp;al olvidar algún "include" que impediría encontrar&amp;nbsp;las funciones&amp;nbsp;buscadas, pero lo normal es que sea por el motivo anterior, de hecho si en la cabecera está definida la función y no está en el cuerpo, es casi seguro que la borraste así "de golpe".&lt;br /&gt;&lt;br /&gt;Si olvidaras un "include" verías un error de este tipo:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-fWYxiBlyMOQ/TVQ4LjI6O6I/AAAAAAAAEvA/1Av56rloS9k/s1600/uf.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" h5="true" height="200" src="http://4.bp.blogspot.com/-fWYxiBlyMOQ/TVQ4LjI6O6I/AAAAAAAAEvA/1Av56rloS9k/s640/uf.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="color: black;"&gt;&lt;strong&gt;&lt;span style="color: red;"&gt;Recuerda:&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;una vez hayas eliminado las definiciones de la cabecera, no olvides volver al cuerpo de la unidad con la misma operación (botón derecho sobre el nombre de la unidad).&lt;/span&gt;&lt;br /&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-4914776536510858272?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/4914776536510858272/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=4914776536510858272&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/4914776536510858272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/4914776536510858272'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/02/funciones-desaparecidas.html' title='Funciones mal borradas..funciones desaparecidas'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-fQcKDdFCvHM/TVQs_DknmiI/AAAAAAAAEu0/JT5VPTytRUs/s72-c/calentador.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-3015312801960367356</id><published>2011-02-10T18:55:00.005+01:00</published><updated>2011-02-10T19:03:33.574+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='errores de programación'/><category scheme='http://www.blogger.com/atom/ns#' term='borland c++'/><category scheme='http://www.blogger.com/atom/ns#' term='primer bloque'/><category scheme='http://www.blogger.com/atom/ns#' term='vuestras dudas'/><title type='text'>Cannot convert 'int (*)() to 'int'</title><content type='html'>Cuando&amp;nbsp;accedemos a las variables del módulo de datos, por ejemplo durante la inicialización del sistema, usamos funciones creadas por el usario. Recuerda que para cada variable asociada a un sensor o actuador, has creado funciones de lectura y escritura. Nos encontramos este error:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Wvhiz-L3TYU/TVQkD0goX4I/AAAAAAAAEuw/1jIcVTrjjX0/s1600/convert.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" h5="true" height="326" src="http://2.bp.blogspot.com/-Wvhiz-L3TYU/TVQkD0goX4I/AAAAAAAAEuw/1jIcVTrjjX0/s400/convert.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;En la figura anterior, aparece un error de conversión. Esto puede suceder cuando al llamar a una función, ésta no entiende muy bien los datos que se le pasan o&amp;nbsp;se le devuelve un dato que no coincide con lo esperado.&amp;nbsp;Por ejemplo podría darse el caso de&amp;nbsp;esperar un entero (int)&amp;nbsp;y le ha venido de golpe un doble (double) u otro tipo.&lt;br /&gt;&lt;br /&gt;En la instrucción marcada en rojo de la figura, lo que se trata de hacer es actúar sobre&amp;nbsp;la válvula,&amp;nbsp;abriéndola o cerrándola físicamente. El valor que se le pasará será aquel que el usuario haya decidido, haciendo clic en&amp;nbsp;un botón o de cualquier otro modo en el interfaz gráfico. Cuando lo haga, este valor se guardará en el&amp;nbsp;módulo de datos para&amp;nbsp;mantener la imagen del proceso.&lt;br /&gt;&lt;br /&gt;Aquí es donde está el problema, en la llamada a la función, se le pasa como parámetro "&lt;span style="color: blue;"&gt;&lt;strong&gt;VerVálvula&lt;/strong&gt;&lt;/span&gt;" pero debería ser "&lt;span style="color: blue;"&gt;&lt;strong&gt;VerVálvula()&lt;/strong&gt;&lt;/span&gt;" ya que es la función del módulo de datos que consulta la variable.&lt;br /&gt;&lt;br /&gt;Al olvidar los paréntesis, el compilador busca una variable llamada "VerVálvula" y genera el error porque lo que encuentra es una función.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: red;"&gt;Recuerda&lt;/span&gt;&lt;/strong&gt;:&amp;nbsp;aunque la función no tenga argumentos - void VerVálvula(void) - al llamarla siempre hay que incluirlos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-3015312801960367356?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/3015312801960367356/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=3015312801960367356&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/3015312801960367356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/3015312801960367356'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/02/can-not-convert.html' title='Cannot convert &apos;int (*)() to &apos;int&apos;'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-Wvhiz-L3TYU/TVQkD0goX4I/AAAAAAAAEuw/1jIcVTrjjX0/s72-c/convert.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-3405814749757074697</id><published>2011-02-10T18:26:00.003+01:00</published><updated>2011-02-10T19:03:57.852+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='errores de programación'/><category scheme='http://www.blogger.com/atom/ns#' term='borland c++'/><category scheme='http://www.blogger.com/atom/ns#' term='primer bloque'/><category scheme='http://www.blogger.com/atom/ns#' term='vuestras dudas'/><title type='text'>No encuentra las funciones de la tarjeta DAQ</title><content type='html'>Cuando se compila un programa, pueden&amp;nbsp;aparecer muchos errores relacionado con las funciones de la tarjeta de adquisición. Los errores que aparecen pueden parecerse a&amp;nbsp;los siguientes:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-jLWQq-S3rwY/TVQb6qFPViI/AAAAAAAAEuc/hvS-eTshoYE/s1600/error+unresolved.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span style="color: red;"&gt;&lt;img border="0" h5="true" height="224" src="http://2.bp.blogspot.com/-jLWQq-S3rwY/TVQb6qFPViI/AAAAAAAAEuc/hvS-eTshoYE/s640/error+unresolved.png" width="640" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Los errores tipo:&amp;nbsp;"&lt;strong&gt;&lt;span style="color: red;"&gt;[C++ Warnings]&lt;/span&gt;&lt;/strong&gt;", son advertencias pero no detienen la ejecución. La compilación&amp;nbsp;se va a parar en seco&amp;nbsp;cuando encuentre errores de tipo:&amp;nbsp;"&lt;strong&gt;&lt;span style="color: red;"&gt;[Link Error]&lt;/span&gt;&lt;/strong&gt;". En una de las líneas con este error, dice que no puede encontrar una función externa "DAQmxReadAnalogScalar64..". &lt;br /&gt;&lt;br /&gt;Aunque hayamos copiado&amp;nbsp;la librería (fichero.lib) de la tarjeta DAQ en la carpeta del proyecto, quizá no le hayamos indicado&amp;nbsp;al compilador que está allí. El compilador es un poco&amp;nbsp;perezoso y no va a mirar a menos que se lo indiques.&lt;br /&gt;&lt;br /&gt;Para resolverlo, activa la opción "&lt;strong&gt;&lt;span style="color: blue;"&gt;View/Project manager&lt;/span&gt;&lt;/strong&gt;", verás la estructura del proyecto:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-3LVo25doxsQ/TVQdGZvdkzI/AAAAAAAAEug/MhJbyXTSyL4/s1600/pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" h5="true" height="400" src="http://3.bp.blogspot.com/-3LVo25doxsQ/TVQdGZvdkzI/AAAAAAAAEug/MhJbyXTSyL4/s400/pm.png" width="355" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Lo que ves en la figura anterior es una lista de los ficheros que&amp;nbsp;"mirará" el compilador. Si algo no está&amp;nbsp;en esta "lista", es como si no existiera (aunque&amp;nbsp;físicamente esté copiado en la carpeta del proyecto).&amp;nbsp;Puedes ver&amp;nbsp;todas las unidades del proyecto (&lt;span style="color: blue;"&gt;&lt;strong&gt;ficheros.cpp&lt;/strong&gt;&lt;/span&gt;) y la cabecera de la librería (&lt;span style="color: blue;"&gt;&lt;strong&gt;NIDAQmx.h&lt;/strong&gt;&lt;/span&gt;), pero NO la librería (&lt;span style="color: #274e13;"&gt;&lt;strong&gt;NIDAQmx.lib&lt;/strong&gt;&lt;/span&gt;). Búscala y añadela.&lt;br /&gt;&lt;br /&gt;Selecciona la opción "&lt;span style="color: blue;"&gt;&lt;strong&gt;Project/Add to project&lt;/strong&gt;&lt;/span&gt;", localiza la&amp;nbsp;librería y selecciónala:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-2kHGSkeL7uI/TVQeZb2NELI/AAAAAAAAEuk/MSXeQyi_r00/s1600/addlibrary.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" h5="true" height="473" src="http://1.bp.blogspot.com/-2kHGSkeL7uI/TVQeZb2NELI/AAAAAAAAEuk/MSXeQyi_r00/s640/addlibrary.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Ahora comprueba de nuevo desde "&lt;span style="color: blue;"&gt;&lt;strong&gt;View/Project manager&lt;/strong&gt;&lt;/span&gt;" que la librería ya está en la lista. De este modo, el compilador ya sabe donde se encuentran todas las funciones que necesita para compilar tu programa.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-bb-7yL8IXp0/TVQe7OIJvLI/AAAAAAAAEuo/nlJ495ZN3Rk/s1600/ok.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" h5="true" height="444" src="http://1.bp.blogspot.com/-bb-7yL8IXp0/TVQe7OIJvLI/AAAAAAAAEuo/nlJ495ZN3Rk/s640/ok.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Cuando compiles de nuevo, los errores&amp;nbsp;generados por las funciones de la tarjeta habrán desaparecido, pero nos quedarán otros asociados con las funciones que ha creado el usuario (eso en otro artículo).&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-CNorn5e4uR4/TVQflPuc9jI/AAAAAAAAEus/F0KIXVyRwkY/s1600/noerror.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" h5="true" height="64" src="http://1.bp.blogspot.com/-CNorn5e4uR4/TVQflPuc9jI/AAAAAAAAEus/F0KIXVyRwkY/s640/noerror.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-3405814749757074697?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/3405814749757074697/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=3405814749757074697&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/3405814749757074697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/3405814749757074697'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/02/no-encuentra-las-funciones-de-la.html' title='No encuentra las funciones de la tarjeta DAQ'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-jLWQq-S3rwY/TVQb6qFPViI/AAAAAAAAEuc/hvS-eTshoYE/s72-c/error+unresolved.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-2530253269433982040</id><published>2011-01-29T14:39:00.002+01:00</published><updated>2011-01-29T14:44:06.408+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='errores de programación'/><category scheme='http://www.blogger.com/atom/ns#' term='problemas pre-examen'/><category scheme='http://www.blogger.com/atom/ns#' term='Programación C'/><category scheme='http://www.blogger.com/atom/ns#' term='primer bloque'/><category scheme='http://www.blogger.com/atom/ns#' term='vuestras dudas'/><title type='text'>Pregunta de examen</title><content type='html'>Pregunta de examen&amp;nbsp;(Test Enero&amp;nbsp;2010):&lt;br /&gt;7. Observa detenidamente el siguiente código en C y determina el valor de la variable “z” una vez ejecutadas todas las sentencias.&lt;br /&gt;&lt;br /&gt;int x,y,z;&lt;br /&gt;x=8;&lt;br /&gt;y=4;&lt;br /&gt;if(x=y){z=x*y;}&lt;br /&gt;else{z=x+y;}&lt;br /&gt;a) 0x12&lt;br /&gt;b) 0x0C&lt;br /&gt;c) 0x10&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;Respuesta:&lt;/span&gt;&lt;br /&gt;En la sentencia de comparación "if(x=y) {z=x*y}" es donde está la clave.&lt;br /&gt;Como sabes, una sentencia "if" compara un valor con otro y si se cumple la condición, ejecuta la sentencia que le sigue. Pero la sentencia "if" puede funcionar de manera diferente...si nos olvidamos algo..&lt;br /&gt;&lt;br /&gt;En este problema, hay un fallo, la sentencia correcta sería "if(x==y)".&lt;br /&gt;Recuerda que en una comparación siempre deben incluirse dos signos "=".&lt;br /&gt;&lt;br /&gt;Por lo tanto al incluir sólo un signo "=", la sentencia NO COMPARA, ASIGNA:&lt;br /&gt;&lt;br /&gt;if (x=y) &amp;gt;&amp;gt; &lt;span style="color: red;"&gt;ASIGNA EL VALOR DE "y" A "x" (ambas valen ahora 4).&lt;/span&gt;&lt;br /&gt;A continuación, se ejecuta la sentencia&amp;nbsp;"{z=x*y}"&amp;nbsp;&amp;nbsp;z=4*4=16=0x10.&lt;br /&gt;&lt;br /&gt;Si tienes curiosidad&amp;nbsp;y quieres comprobarlo, puedes abrir un proyecto en Builder y probarlo. &lt;br /&gt;Añade un objeto tipo "Label" y asígnale el valor de z. Comprobarás que al poner sólo un signo "=" el la etiqueta aparece 16, pero si lo haces correctamente con "==" en la etiqueta aparecerá 12.&lt;br /&gt;&lt;br /&gt;..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-2530253269433982040?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/2530253269433982040/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=2530253269433982040&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/2530253269433982040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/2530253269433982040'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2011/01/pregunta-de-examen.html' title='Pregunta de examen'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-1219684656083527899</id><published>2010-12-08T20:57:00.000+01:00</published><updated>2010-12-08T20:57:54.644+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='primer bloque'/><title type='text'>Eliminar un formulario de una unidad</title><content type='html'>A veces por error hemos creado una unidad con un formulario que no necesitamos y cuando vamos a eliminarlo, Borland no lo permite,&amp;nbsp;para eliminarlo y mantener la unidad, puedes hacer lo siguiente:&lt;br /&gt;&lt;br /&gt;- Quita la unidad&amp;nbsp;del proyecto.&lt;br /&gt;- Edita a mano el módulo&amp;nbsp;para eliminar todo lo que tenga que ver con el formulario.&lt;br /&gt;- Vuelve a añadirlo al proyecto.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-1219684656083527899?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/1219684656083527899/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=1219684656083527899&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/1219684656083527899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/1219684656083527899'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/12/eliminar-un-formulario-de-una-unidad.html' title='Eliminar un formulario de una unidad'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-1764398863618191223</id><published>2010-12-08T19:49:00.003+01:00</published><updated>2010-12-08T19:56:41.257+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='miniproyecto'/><category scheme='http://www.blogger.com/atom/ns#' term='primer bloque'/><category scheme='http://www.blogger.com/atom/ns#' term='vuestras dudas'/><title type='text'>Duda con una función del módulo de proceso</title><content type='html'>Un alumno&amp;nbsp;envía&amp;nbsp;una función del módulo de proceso: &lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;int Proceso_leer_rebose(void) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;int32 errdaq;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;uInt32 data;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;errdaq = &lt;strong&gt;DAQmxStartTask(en_dig); //&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;errdaq = &lt;strong&gt;DAQmxReadDigitalScalarU32(en_dig,0.0,&amp;amp;data,NULL);&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;errdaq = &lt;strong&gt;DAQmxStopTask(entradas_digitales);&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;if ((&lt;span style="color: #38761d;"&gt;&lt;strong&gt;data &amp;amp; 0x00000001&lt;/strong&gt;&lt;/span&gt;) == 0){&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;return(REBOSE_HAY);}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;else{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;return(REBOSE_NO_HAY);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Esta función "Proceso_leer_rebose" lee físicamente los pines de la tarjeta para detectar niveles de tensión, usa para ello&amp;nbsp;tres funciones de la tarjeta NI USB-6008 (aparecen resaltadas). Este valor es almacenado en la variable "data".&lt;br /&gt;&lt;br /&gt;Como esta variable tiene el valor del puerto completo y queremos&amp;nbsp;mirar sólo&amp;nbsp;un bit, aplicamos una máscara (línea&amp;nbsp;resaltada en verde)&amp;nbsp;para quedarnos con el bit de interés.&lt;br /&gt;&lt;br /&gt;De este modo podemos detectar el estado&amp;nbsp;del bit y almacenarlo en el módulo de datos, para que esté a disposición de otras funciones, por lo tanto yo modificaría esta última parte de la función:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;if ((data &amp;amp; 0x00000001) == 0){&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;strong&gt;Datos_escribir_rebose(0);&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;else&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;strong&gt;Datos_escribir_rebose(1);&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: black; font-family: inherit;"&gt;Por lo tanto la función no devuelve nada, sólo almacena el valor que lee del sensor en el módulo de datos. Esta función "Proceso_leer_rebose" está haciendo uso de la función "Datos_escrbir_rebose" del módulo de datos para guardar esta información. El último cambio que habría que hacer sería redefinir la cabecera de la función para que devuelva "void":&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;strong&gt;&lt;span style="color: red;"&gt;void&lt;/span&gt; &lt;/strong&gt;&lt;span style="color: blue;"&gt;Proceso_leer_rebose(void) {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: black; font-family: inherit;"&gt;Se indica "void" porque la función no devuelve ningún valor. Lo hace a través de las funciones del módulo de datos.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-1764398863618191223?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/1764398863618191223/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=1764398863618191223&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/1764398863618191223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/1764398863618191223'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/12/duda-con-una-funcion-del-modulo-de.html' title='Duda con una función del módulo de proceso'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-166177402648353989</id><published>2010-12-07T15:11:00.001+01:00</published><updated>2010-12-07T15:11:15.563+01:00</updated><title type='text'></title><content type='html'>&lt;object height="390" width="640"&gt;&lt;param name="movie" value="http://www.youtube.com/v/NjhzOt-TkNE&amp;amp;hl=en_US&amp;amp;feature=player_embedded&amp;amp;version=3"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/NjhzOt-TkNE&amp;amp;hl=en_US&amp;amp;feature=player_embedded&amp;amp;version=3" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="390"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-166177402648353989?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/166177402648353989/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=166177402648353989&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/166177402648353989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/166177402648353989'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/12/blog-post_07.html' title=''/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-771662681309904077</id><published>2010-12-07T15:08:00.001+01:00</published><updated>2010-12-07T15:08:59.467+01:00</updated><title type='text'></title><content type='html'>&lt;object height="390" width="640"&gt;&lt;param name="movie" value="http://www.youtube.com/v/eWmVrfjDCyw&amp;amp;hl=en_US&amp;amp;feature=player_embedded&amp;amp;version=3"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/eWmVrfjDCyw&amp;amp;hl=en_US&amp;amp;feature=player_embedded&amp;amp;version=3" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="390"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-771662681309904077?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/771662681309904077/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=771662681309904077&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/771662681309904077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/771662681309904077'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/12/blog-post.html' title=''/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-5563464651748114120</id><published>2010-12-07T14:34:00.008+01:00</published><updated>2010-12-07T15:04:09.800+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='chips'/><title type='text'>Conectar dispositivos externos a un PC por USB</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: left;"&gt;Si se desea controlar dispositivos con un PC, se necesita un interfaz, normalmente se usan relés, de modo que puedes activarlo por programa y controlar elementos externos como bombillas, actuadores, cámaras o cualquier dispositivo que funcione a tensión de red, aquí tienes un ejemplo:&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_1E4mCW_pDlM/TP45V7FlADI/AAAAAAAAEsA/KBJ1jaRsYCo/s1600/is.aspx.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_1E4mCW_pDlM/TP45V7FlADI/AAAAAAAAEsA/KBJ1jaRsYCo/s1600/is.aspx.jpeg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Puedes ver en la misma web del fabricante un ejemplo de la conexión a un calentador y una bombilla.. &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_1E4mCW_pDlM/TP45XZ68PoI/AAAAAAAAEsE/FXLcp5Euizc/s1600/004withnotes.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/_1E4mCW_pDlM/TP45XZ68PoI/AAAAAAAAEsE/FXLcp5Euizc/s320/004withnotes.jpg" width="233" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Ten en cuenta que esta placa sólo es para salidas, es decir, que desde el PC podrás encender o apagar dispositivos, pero no podrás leer información del exterior, para eso necesitarás otro tipo de placas como las tarjetas de adquisición de datos (DAQ).&lt;br /&gt;&lt;br /&gt;Un ejemplo de aplicación sería controlar un coche de radiocontrol usando el PC, se conectaría el mando a los relés y cuando desde el PC conectes uno de ellos estarías haciendo que el coche de moviera, puedes ver un ejemplo de este proyecto &lt;a href="http://blogs.msdn.com/b/coding4fun/archive/2007/01/22/1507304.aspx"&gt;aquí&lt;/a&gt;.&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;a href="http://www.trossenrobotics.com/p/phidgets-004.aspx"&gt;http://www.trossenrobotics.com/p/phidgets-004.aspx&lt;/a&gt;&lt;/div&gt;Si conoces otras placas, por favor envíame un correo, compartiendo ganamos todos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-5563464651748114120?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/5563464651748114120/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=5563464651748114120&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/5563464651748114120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/5563464651748114120'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/12/conectar-dispositivos-un-pc-por-usb.html' title='Conectar dispositivos externos a un PC por USB'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_1E4mCW_pDlM/TP45V7FlADI/AAAAAAAAEsA/KBJ1jaRsYCo/s72-c/is.aspx.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-9161229952432276504</id><published>2010-12-05T00:54:00.001+01:00</published><updated>2010-12-05T00:57:52.634+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><title type='text'>Bryan Adams</title><content type='html'>Muchos días sin clase, tenemos un puentazo y esta semana que viene no tendremos clase, estoy pensando en poner algunos deberes aquí, también quiero publicar los resultados de vuestra encuesta, algunas direcciones web pero de momento os pongo un poco de música para empezar bien el puente (escúchalo mejor con resolución en 720)..&lt;br /&gt;&lt;br /&gt;&lt;object style="height: 390px; width: 640px;"&gt;&lt;param name="movie" value="http://www.youtube.com/v/ab-KIgGSTYw?version=3"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/ab-KIgGSTYw?version=3" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="390"&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-9161229952432276504?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/9161229952432276504/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=9161229952432276504&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/9161229952432276504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/9161229952432276504'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/12/bryan-adams.html' title='Bryan Adams'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-1930069890920251287</id><published>2010-12-05T00:15:00.010+01:00</published><updated>2010-12-05T00:29:23.263+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><title type='text'>Sensor 3D</title><content type='html'>Esta noche he encontrado información de un sensor 3D, después de ver este video, sólo me vienen a la cabeza, aplicaciones, ideas y oportunidades para el futuro. En los próximos años, los nuevos interfaces (interficies) va a generar desarrollo y mercado, quizá sea el momento de engancharse a esta tecnología..&lt;br /&gt;&lt;br /&gt;&lt;object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,47,0" height="600" id="flashObj" width="650"&gt;&lt;param name="movie" value="http://c.brightcove.com/services/viewer/federated_f9?isVid=1&amp;isUI=1" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;param name="flashVars" value="videoId=679002957001&amp;playerID=25003088001&amp;playerKey=AQ~~,AAAAAfPSGgE~,KtpEyXIUTkj2ykBtm4MdigxQoTHDPw9h&amp;domain=embed&amp;dynamicStreaming=true" /&gt;&lt;param name="base" value="http://admin.brightcove.com" /&gt;&lt;param name="seamlesstabbing" value="false" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="swLiveConnect" value="true" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;embed src="http://c.brightcove.com/services/viewer/federated_f9?isVid=1&amp;isUI=1" bgcolor="#FFFFFF" flashVars="videoId=679002957001&amp;playerID=25003088001&amp;playerKey=AQ~~,AAAAAfPSGgE~,KtpEyXIUTkj2ykBtm4MdigxQoTHDPw9h&amp;domain=embed&amp;dynamicStreaming=true" base="http://admin.brightcove.com" name="flashObj" width="650" height="600" seamlesstabbing="false" type="application/x-shockwave-flash" allowFullScreen="true" allowScriptAccess="always" swLiveConnect="true" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-1930069890920251287?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/1930069890920251287/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=1930069890920251287&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/1930069890920251287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/1930069890920251287'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/12/sensor-3d.html' title='Sensor 3D'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-2468403745910062266</id><published>2010-12-04T20:53:00.001+01:00</published><updated>2010-12-04T20:56:33.865+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='control'/><category scheme='http://www.blogger.com/atom/ns#' term='primer bloque'/><title type='text'>Control - Cuestión 3 Tipo A, B, C, D</title><content type='html'>&lt;strong&gt;&lt;span style="color: red;"&gt;Tipo A&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Completar el código siguiente pare gestionar la lectura de un sensor digital marca Acme conectado a una tarjeta NI USB-6008 en P0.5. Se pide sustituir los tres interrogantes remarcados en color rojo por el código en lenguaje C correspondiente:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: red;"&gt;&lt;strong&gt;¿?&lt;/strong&gt;&lt;/span&gt; lectura_sensor_acme(&lt;span style="color: red;"&gt;&lt;strong&gt;¿?&lt;/strong&gt;&lt;/span&gt;) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;int32 daq_error;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;uInt32 dato;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;daq_error=DAQmxReadDigitalScalarU32(digital_sensor_task,0.0,&amp;amp;dato,NULL);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;if (daq_error !=0) process_error(daq_error,"Lectura sensor ACME()");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;if ((dato &amp;amp; &lt;span style="color: red;"&gt;&lt;strong&gt;¿?&lt;/strong&gt;&lt;/span&gt;)===0) return(0);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; else return(1);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;Solución:&lt;/span&gt;&lt;br /&gt;int..............................(void)&lt;br /&gt;máscara = 0x00000020&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: red;"&gt;Tipo B&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Completar el código siguiente pare gestionar la lectura de un sensor digital marca Acme conectado a una tarjeta NI USB-6008 en P0.7. Se pide sustituir los tres interrogantes remarcados en color rojo por el código en lenguaje C correspondiente:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;strong&gt;&lt;span style="color: red;"&gt;¿?&lt;/span&gt;&lt;/strong&gt; lectura_sensor_acme(&lt;span style="color: red;"&gt;&lt;strong&gt;¿?&lt;/strong&gt;&lt;/span&gt;) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;int32 daq_error;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;uInt32 dato;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;daq_error=DAQmxReadDigitalScalarU32(digital_sensor_task,0.0,&amp;amp;dato,NULL);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;if (daq_error !=0) process_error(daq_error,"Lectura sensor ACME()");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;if ((dato &amp;amp; &lt;strong&gt;&lt;span style="color: red;"&gt;¿?&lt;/span&gt;&lt;/strong&gt;)===0) return(0);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;else return(1);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;Solución:&lt;/span&gt;&lt;br /&gt;int............................(void)&lt;br /&gt;máscara=0x00000080&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: red;"&gt;Tipo C&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Completar el código siguiente pare gestionar la lectura de un sensor digital marca Acme conectado a una tarjeta NI USB-6008 en P0.3. Se pide sustituir los tres interrogantes remarcados en color rojo por el código en lenguaje C correspondiente:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: red;"&gt;&lt;strong&gt;¿?&lt;/strong&gt;&lt;/span&gt; lectura_sensor_acme(&lt;span style="color: red;"&gt;&lt;strong&gt;¿?&lt;/strong&gt;&lt;/span&gt;) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;int32 daq_error;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;uInt32 dato;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;daq_error=DAQmxReadDigitalScalarU32(digital_sensor_task,0.0,&amp;amp;dato,NULL);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;if (daq_error !=0) process_error(daq_error,"Lectura sensor ACME()");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;if ((dato &amp;amp; &lt;strong&gt;&lt;span style="color: red;"&gt;¿?&lt;/span&gt;&lt;/strong&gt;)===0) return(0);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;else return(1);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;Solución:&lt;/span&gt;&lt;br /&gt;int.............................(void)&lt;br /&gt;máscara= 0x00000008&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: red;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: red;"&gt;Tipo D&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Completar el código siguiente pare gestionar la lectura de un sensor digital marca Acme conectado a una tarjeta NI USB-6008 en P0.6. Se pide sustituir los tres interrogantes remarcados en color rojo por el código en lenguaje C correspondiente:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;strong&gt;&lt;span style="color: red;"&gt;¿?&lt;/span&gt;&lt;/strong&gt; lectura_sensor_acme(&lt;span style="color: red;"&gt;&lt;strong&gt;¿?&lt;/strong&gt;&lt;/span&gt;) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;int32 daq_error;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;uInt32 dato;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;daq_error=DAQmxReadDigitalScalarU32(digital_sensor_task,0.0,&amp;amp;dato,NULL);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;if (daq_error !=0) process_error(daq_error,"Lectura sensor ACME()");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;if ((dato &amp;amp; &lt;span style="color: red;"&gt;&lt;strong&gt;¿?&lt;/strong&gt;&lt;/span&gt;)===0) return(0);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;else return(1);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red; font-family: inherit;"&gt;Solución:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-family: inherit;"&gt;int............................(void)&lt;/span&gt;&lt;br /&gt;máscara= 0x00000040&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-2468403745910062266?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/2468403745910062266/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=2468403745910062266&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/2468403745910062266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/2468403745910062266'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/12/control-cuestion-3-tipo-b-c-d.html' title='Control - Cuestión 3 Tipo A, B, C, D'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-8854198222449018133</id><published>2010-12-04T20:37:00.001+01:00</published><updated>2010-12-04T20:59:15.315+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='control'/><category scheme='http://www.blogger.com/atom/ns#' term='primer bloque'/><title type='text'>Control - Cuestión 2 Tipo A, B, C, D</title><content type='html'>&lt;strong&gt;&lt;span style="color: red;"&gt;Tipo A&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Disponemos de un convertidor analógico/digital de 12 bits, con Vgnd=0V y Vref=8V, al que conectamos un sensor analógico para medir el nivel en litros de una solución líquida que hay en un depósito. El sensor proporciona 8 voltios cuando el nivel es de 4200 litros y 0 voltios cuando el nivel es de 0 litros. &lt;br /&gt;&lt;br /&gt;Se pide:&lt;br /&gt;a) Obtener la expresión matemática que relaciona los voltios con los litros.&lt;br /&gt;b) Obtener la expresión matemática que relaciona los voltios con el dato digital.&lt;br /&gt;c) Obtener la expresión matemática que relaciona el dato digital con los litros.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;Solución:&lt;/span&gt;&lt;br /&gt;a) Hay que sacar la ecuación de la recta que pasa por los dos puntos (0,0) y (4200,0). Para ello aplicamos la fórmula siguiente:&lt;br /&gt;Y-Y1 / X-X1 = Y2-Y1 / X2-X1&lt;br /&gt;V-0 / L-0 = 8-0 / 4200-0&lt;br /&gt;V = L/525&lt;br /&gt;b) V = (8-0 / 2^12) * Dato_digital = (8/4096) * Dato_digital = Dato_digital / 512&lt;br /&gt;c) L / 525 = Dato_digital / 512&lt;br /&gt;L = 1,0253 * Dato_digital&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: red;"&gt;Tipo B&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Disponemos de un convertidor analógico/digital de 12 bits, con Vgnd=0V y Vref=6V, al que conectamos un sensor analógico para medir el nivel en litros de una solución líquida que hay en un depósito. El sensor proporciona&amp;nbsp;6 voltios cuando el nivel es de 3600 litros y 0 voltios cuando el nivel es de 0 litros. &lt;br /&gt;&lt;br /&gt;Se pide:&lt;br /&gt;a) Obtener la expresión matemática que relaciona los voltios con los litros.&lt;br /&gt;b) Obtener la expresión matemática que relaciona los voltios con el dato digital.&lt;br /&gt;c) Obtener la expresión matemática que relaciona el dato digital con los litros.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;Solución:&lt;/span&gt;&lt;br /&gt;Los dos puntos de la recta son: (0,0) (3600, 6).&lt;br /&gt;a) V-0/L-0 = 6-0/3600-0 =&amp;gt; V=L/600.&lt;br /&gt;b) V=(6-0/2^12) * Dato_digital = (6/4096)*Dato_digital =&amp;gt; V=Dato_digital/682,66&lt;br /&gt;c) Dato_digital/682,66 = L/600 =&amp;gt; L = (600*Dato_digital)/682.66 =&amp;gt; &lt;br /&gt;L = 1,1377 * Dato_digital&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: red;"&gt;Tipo C&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Disponemos de un convertidor analógico/digital de 12 bits, con Vgnd=0V y Vref=12V, al que conectamos un sensor analógico para medir el nivel en litros de una solución líquida que hay en un depósito. El sensor proporciona 6 voltios cuando el nivel es de 5400 litros y 0 voltios cuando el nivel es de 0 litros. &lt;br /&gt;&lt;br /&gt;Se pide:&lt;br /&gt;a) Obtener la expresión matemática que relaciona los voltios con los litros.&lt;br /&gt;b) Obtener la expresión matemática que relaciona los voltios con el dato digital.&lt;br /&gt;c) Obtener la expresión matemática que relaciona el dato digital con los litros.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;Solución:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;a) V-0/L-0=12-0/5400-0 =&amp;gt; V/L=1/450 =&amp;gt; V=L/450&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;b) V=(12-0/2^12)*Dato_digital =&amp;gt; V=Dato_digital/341,333&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;c) L/450=Dato_digital/341,333 =&amp;gt; L=450*Dato_digital/341,333&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;L=1,31837*Dato_digital&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;strong&gt;Tipo D&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;Disponemos de un convertidor analógico/digital de 12 bits, con Vgnd=0V y Vref=14V, al que conectamos un sensor analógico para medir el nivel en litros de una solución líquida que hay en un depósito. El sensor proporciona 6 voltios cuando el nivel es de 3500 litros y 0 voltios cuando el nivel es de 0 litros. &lt;br /&gt;&lt;br /&gt;Se pide:&lt;br /&gt;a) Obtener la expresión matemática que relaciona los voltios con los litros.&lt;br /&gt;b) Obtener la expresión matemática que relaciona los voltios con el dato digital.&lt;br /&gt;c) Obtener la expresión matemática que relaciona el dato digital con los litros.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;Solución:&lt;/span&gt;&lt;br /&gt;Contamos con los dos puntos de la recta (0,0) y (3500,14).&lt;br /&gt;a) V-0/L-0=14-0/3500-0 =&amp;gt; V/L=1/250 =&amp;gt; V=L/250&lt;br /&gt;b) V=(14-0/2^12)*Dato_digital =&amp;gt; V=Dato_digital/292,5714&lt;br /&gt;c) L/250=Dato_digital/292,5714 =&amp;gt; L=250*Dato_digital/292,5714&lt;br /&gt;L=0,8544*Dato_digital&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-8854198222449018133?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/8854198222449018133/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=8854198222449018133&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/8854198222449018133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/8854198222449018133'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/12/control-cuestion-2-tipo-b-c-d.html' title='Control - Cuestión 2 Tipo A, B, C, D'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-619475565252042684</id><published>2010-12-04T19:14:00.004+01:00</published><updated>2010-12-05T21:07:03.605+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='control'/><category scheme='http://www.blogger.com/atom/ns#' term='primer bloque'/><title type='text'>Control - Cuestión 1 Tipo D</title><content type='html'>En un sistema informático industrial se tiene un proceso del que se quiere medir la humedad&amp;nbsp;en el interior de un recinto. Para ello se utiliza un sensor analógico. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_1E4mCW_pDlM/TPqE3SUGXFI/AAAAAAAAEr4/o9wdIOA2qlk/s1600/sensorhum.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="427" ox="true" src="http://3.bp.blogspot.com/_1E4mCW_pDlM/TPqE3SUGXFI/AAAAAAAAEr4/o9wdIOA2qlk/s640/sensorhum.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Se pide escribir el código en lenguaje C del módulo de datos para gestionar la imagen digital del citado sensor (variable para almacenar la información, función para almacenar y para leer la información). No hace falta indicar el código del archivo .h, únicamente el .cpp&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;strong&gt;Solución:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;Para diseñar el módulo de datos, debemos empezar preguntándonos cuantos sensores hay en dicho sistema. Sólo tenemos uno (medirá la humedad), definimos por tanto una variable que lo represente. &lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;double humedad;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para cada variable definida en el módulo de datos, debe haber como mínimo dos funciones, una para leer el valor de la misma (leer_humedad) y otra para escribir un valor en ella (escribir_humedad). El módulo de datos propuesto tendrá este aspecto:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;double humedad;&lt;br /&gt;void almacenar_humedad(double valor)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;humedad = valor;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;double leer_humedad(void)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;return (humedad);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-619475565252042684?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/619475565252042684/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=619475565252042684&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/619475565252042684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/619475565252042684'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/12/control-cuestion-1-tipo-d.html' title='Control - Cuestión 1 Tipo D'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_1E4mCW_pDlM/TPqE3SUGXFI/AAAAAAAAEr4/o9wdIOA2qlk/s72-c/sensorhum.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-2964358378476418762</id><published>2010-12-04T18:55:00.003+01:00</published><updated>2010-12-05T21:07:28.952+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='control'/><category scheme='http://www.blogger.com/atom/ns#' term='primer bloque'/><title type='text'>Control - Cuestión 1 Tipo C</title><content type='html'>En un sistema informático industrial se tiene un proceso del que se quiere medir la presión de un tanque. Para ello se utiliza un sensor analógico. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_1E4mCW_pDlM/TPp_ExH_aJI/AAAAAAAAEr0/tWCnh7gYDNc/s1600/presion.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="417" ox="true" src="http://4.bp.blogspot.com/_1E4mCW_pDlM/TPp_ExH_aJI/AAAAAAAAEr0/tWCnh7gYDNc/s640/presion.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Se pide escribir el código en lenguaje C del módulo de datos para gestionar la imagen digital del citado sensor (variable para almacenar la información, función para almacenar y para leer la información). No hace falta indicar el código del archivo .h, únicamente el .cpp&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;strong&gt;Solución:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;Para diseñar el módulo de datos, debemos empezar preguntándonos cuantos sensores hay en dicho sistema. Sólo tenemos uno (medirá la presión), definimos por tanto una variable que lo represente. &lt;br /&gt;&lt;br /&gt;Para cada variable definida en el módulo de datos,&amp;nbsp;habrá como mínimo dos funciones, una para leer el valor de la misma (leer_presión) y otra para escribir un valor en ella (escribir_presión). El módulo de datos propuesto tendrá este aspecto:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;double presion;&amp;nbsp; // variable que almacena el valor del sensor&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;void almacenar_presion(double valor)&amp;nbsp; //&amp;nbsp;escribe&amp;nbsp;en la variable&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;presion = valor;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;double leer_presion(void)&amp;nbsp; //&amp;nbsp;lee el valor de la variable&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;return (presion);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-2964358378476418762?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/2964358378476418762/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=2964358378476418762&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/2964358378476418762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/2964358378476418762'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/12/control-cuestion-1-tipo-c.html' title='Control - Cuestión 1 Tipo C'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_1E4mCW_pDlM/TPp_ExH_aJI/AAAAAAAAEr0/tWCnh7gYDNc/s72-c/presion.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-1009467250799780315</id><published>2010-12-04T18:39:00.006+01:00</published><updated>2010-12-05T21:08:33.584+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='control'/><category scheme='http://www.blogger.com/atom/ns#' term='primer bloque'/><title type='text'>Control - Cuestión 1 Tipo B</title><content type='html'>En un sistema informático industrial se tiene un proceso del que se quiere medir la temperatura de una habitación. Para ello se utiliza un sensor analógico. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_1E4mCW_pDlM/TPp7v7FwNJI/AAAAAAAAErw/FBBW_qUofqE/s1600/sensortemp.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="467" ox="true" src="http://4.bp.blogspot.com/_1E4mCW_pDlM/TPp7v7FwNJI/AAAAAAAAErw/FBBW_qUofqE/s640/sensortemp.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Se pide escribir el código en lenguaje C del módulo de datos para gestionar la imagen digital del citado sensor (variable para almacenar la información, función para almacenar y para leer la información).&amp;nbsp;No hace falta indicar el código del archivo .h, únicamente el .cpp&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;strong&gt;Solución:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;Para diseñar el módulo de datos, debemos empezar preguntándonos cuantos sensores hay en dicho sistema.&amp;nbsp;Sólo tenemos uno (medirá&amp;nbsp;la&amp;nbsp;temperatura), definimos por tanto&amp;nbsp;una variable que lo represente. &lt;br /&gt;&lt;br /&gt;Para cada variable definida en el módulo de datos, debe haber como mínimo dos funciones, una para leer el valor de la misma (leer_temperatura) y otra para escribir un valor en ella (escribir_temperatura). El módulo de datos propuesto tendrá este aspecto:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;double temperatura;&amp;nbsp; // almacena la temperatura&amp;nbsp;del sensor..&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;void almacenar_temperatura(double valor)&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;temperatura = valor;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;double leer_temperatura(void)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;return (temperatura);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: black; font-family: inherit;"&gt;&lt;strong&gt;Importante:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-family: inherit;"&gt;La función "lee_temperatura" lee&amp;nbsp;el valor de la&amp;nbsp;variable "temperatura" ¡no la temperatura real!&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-family: inherit;"&gt;La función "escribe_temperatura" almacena un dato en la&amp;nbsp;variable,&amp;nbsp;ese dato se habrá obtenido anteriormente con otra función que lee&amp;nbsp;físicamente el sensor.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-1009467250799780315?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/1009467250799780315/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=1009467250799780315&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/1009467250799780315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/1009467250799780315'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/12/control-cuestion-1-tipo-b.html' title='Control - Cuestión 1 Tipo B'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_1E4mCW_pDlM/TPp7v7FwNJI/AAAAAAAAErw/FBBW_qUofqE/s72-c/sensortemp.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-2949841236401631135</id><published>2010-12-04T16:46:00.003+01:00</published><updated>2010-12-05T21:08:14.753+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='control'/><category scheme='http://www.blogger.com/atom/ns#' term='primer bloque'/><title type='text'>Control - Cuestión 1 Tipo A</title><content type='html'>En un sistema informático industrial se tiene un proceso del que se quiere medir el nivel existente en un tanque de líquido. Para ello se utiliza un sensor analógico...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_1E4mCW_pDlM/TPpkv7F1-uI/AAAAAAAAErg/KF3dqmFOxz4/s1600/sensor1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="427" ox="true" src="http://2.bp.blogspot.com/_1E4mCW_pDlM/TPpkv7F1-uI/AAAAAAAAErg/KF3dqmFOxz4/s640/sensor1.png" width="640" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Se pide escribir el código en lenguaje C del módulo de datos para gestionar la imagen digital del citado sensor (variable para almacenar la información, función para almacenar y para leer la información).&lt;br /&gt;&lt;strong&gt;Nota&lt;/strong&gt;: No hace falta indicar el código del archivo .h, únicamente el .cpp&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: #274e13;"&gt;Solución&lt;/span&gt;&lt;/strong&gt;:&lt;br /&gt;Para diseñar el módulo de datos, debemos empezar preguntándonos cuantos sensores hay&amp;nbsp;en dicho sistema. Como en este problema&amp;nbsp;sólo tenemos uno (medirá el nivel de líquido), definiremos una variable que lo represente. &lt;br /&gt;&lt;br /&gt;Por cada variable definida en el módulo de datos, debe haber como mínimo dos funciones, una para leer el valor de la misma (leer_nivel) y otra para escribir un valor en ella (escribir_nivel). El módulo de datos propuesto tendrá este aspecto:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_1E4mCW_pDlM/TPpw0fNpe9I/AAAAAAAAErs/8N9wnzpxRlk/s1600/mdatos.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="370" ox="true" src="http://1.bp.blogspot.com/_1E4mCW_pDlM/TPpw0fNpe9I/AAAAAAAAErs/8N9wnzpxRlk/s640/mdatos.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Cuando se lee físicamente el&amp;nbsp;sensor,&amp;nbsp;el nivel que&amp;nbsp;se obtendrá será un valor&amp;nbsp;del tipo&amp;nbsp;"5,43 litros", por eso se&amp;nbsp;define la variable real (double). Si quisiéramos representar valores entre 0 y 100, valores enteros, utilizaríamos una variable tipo entera "int". &lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;strong&gt;&lt;span style="color: red;"&gt;Pasos para definir correctamente un módulo de datos...&lt;/span&gt;&lt;/strong&gt; &lt;br /&gt;&amp;nbsp; &lt;br /&gt;1.-&amp;nbsp;¿Cuántos sensores tiene mi sistema? ..define una variable por cada sensor..&lt;br /&gt;2.-&amp;nbsp;¿Qué tipo de&amp;nbsp;dato devuelve el sensor?..real, entero, etc..define el tipo de variable..&lt;br /&gt;3.-&amp;nbsp;Por cada variable definida,&amp;nbsp;crea dos funciones (lectura y escritura)..&lt;br /&gt;&lt;br /&gt;(participa enviando tus comentarios)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-2949841236401631135?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/2949841236401631135/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=2949841236401631135&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/2949841236401631135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/2949841236401631135'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/12/cuestion-1-tipo.html' title='Control - Cuestión 1 Tipo A'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_1E4mCW_pDlM/TPpkv7F1-uI/AAAAAAAAErg/KF3dqmFOxz4/s72-c/sensor1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-5044708925824618052</id><published>2010-11-30T23:31:00.004+01:00</published><updated>2010-12-01T23:11:55.036+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Prácticas NI USB 6008'/><category scheme='http://www.blogger.com/atom/ns#' term='primer bloque'/><title type='text'>Unresolved external 'TForm1'...</title><content type='html'>Hoy nos hemos encontrado algunos errores de este tipo al compilar&amp;nbsp;proyectos en clase, donde se apunta a un problema con un formulario..tiene esta pinta:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_1E4mCW_pDlM/TPV4FO1DnwI/AAAAAAAAErI/GFhGkLpRgBM/s1600/unresolved.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="362" ox="true" src="http://2.bp.blogspot.com/_1E4mCW_pDlM/TPV4FO1DnwI/AAAAAAAAErI/GFhGkLpRgBM/s640/unresolved.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;En el error&amp;nbsp;se avisa de un problema en "PRACTICA6.OBJ", un objeto dependiente directamente de la unidad con el mismo nombre.&amp;nbsp;En vuestro caso podría mostrarse el nombre de otra unidad..&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solución: &lt;/strong&gt;Abre el gestor de proyectos con la opción "View/Manager"...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_1E4mCW_pDlM/TPV46Jo2NDI/AAAAAAAAErM/R8PDO0CQSfQ/s1600/pr6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" ox="true" src="http://4.bp.blogspot.com/_1E4mCW_pDlM/TPV46Jo2NDI/AAAAAAAAErM/R8PDO0CQSfQ/s1600/pr6.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;..busca la unidad&amp;nbsp;referida&amp;nbsp;en el error "Practica6.cpp" y ábrela..&lt;br /&gt;&lt;br /&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;a href="http://2.bp.blogspot.com/_1E4mCW_pDlM/TPV5eNiWPgI/AAAAAAAAErQ/7eSdbOvtFgA/s1600/main.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" ox="true" src="http://2.bp.blogspot.com/_1E4mCW_pDlM/TPV5eNiWPgI/AAAAAAAAErQ/7eSdbOvtFgA/s1600/main.png" /&gt;&lt;/a&gt;&lt;/div&gt;..bien ahora va algo de teoría (pero no mucha), observa que esta unidad&amp;nbsp;principal,&amp;nbsp;la que arranca el programa cuando hacemos doble clic en el .exe o&amp;nbsp;compilamos en Borland,&amp;nbsp;(es la que tiene el bloque "WinMain")..está claro..&lt;br /&gt;&lt;br /&gt;..este bloque&amp;nbsp;inicia nuestro programa y todos los elementos&amp;nbsp;necesarios, como los formularios..&lt;br /&gt;&lt;br /&gt;..en la cabecera apaece el siguiente código:&lt;br /&gt;&lt;br /&gt;USEFORM("Uprincipal6.cpp", Vprincipal);&lt;br /&gt;USEFORM("process.cpp", Form1);&lt;br /&gt;&lt;br /&gt;..estas dos instrucciones preparan los formularios que&amp;nbsp;utiliza vuestro proyecto, en este caso parece que hay dos..cuando sólo debería haber uno..&lt;br /&gt;&lt;br /&gt;..el segundo&amp;nbsp;sobra, el que está asociado a la unidad "process.cpp",&amp;nbsp;no debería estar ahí...asi que se comenta la línea y dejamos sólo el formulario principal,&amp;nbsp;queda así:&lt;br /&gt;&lt;br /&gt;USEFORM("Uprincipal6.cpp", Vprincipal);&lt;br /&gt;&lt;span style="color: red;"&gt;//USEFORM("process.cpp", Form1);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;..seguimos, un poco más abajo..&lt;br /&gt;&lt;br /&gt;Application-&amp;gt;Initialize();&lt;br /&gt;Application-&amp;gt;CreateForm(__classid(TVprincipal), &amp;amp;Vprincipal);&lt;br /&gt;Application-&amp;gt;CreateForm(__classid(TForm1), &amp;amp;Form1);&lt;br /&gt;Application-&amp;gt;Run();&lt;br /&gt;&lt;br /&gt;..son las instrucciones que inician el sistema y crean los&amp;nbsp;formularios, hay que eliminar la que arranca el formulario que no necesitamos, la tercera línea fuera..queda así:&lt;br /&gt;&lt;br /&gt;Application-&amp;gt;Initialize();&lt;br /&gt;Application-&amp;gt;CreateForm(__classid(TVprincipal), &amp;amp;Vprincipal);&lt;br /&gt;&lt;span style="color: red;"&gt;//Application-&amp;gt;CreateForm(__classid(TForm1), &amp;amp;Form1);&lt;/span&gt;&lt;br /&gt;Application-&amp;gt;Run();&lt;br /&gt;&lt;br /&gt;..con estas modificaciones yo lo tenemos compilando sin errores, listo para poder seguir..&lt;br /&gt;..podéis borrar las líneas comentadas..&lt;br /&gt;&lt;br /&gt;..si tenéis algún otro error, me mandáis el proyecto en un zip y le echo un vistazo ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-5044708925824618052?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/5044708925824618052/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=5044708925824618052&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/5044708925824618052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/5044708925824618052'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/11/unresolved-external-tform1.html' title='Unresolved external &apos;TForm1&apos;...'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_1E4mCW_pDlM/TPV4FO1DnwI/AAAAAAAAErI/GFhGkLpRgBM/s72-c/unresolved.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-2075553823420863824</id><published>2010-11-30T22:03:00.006+01:00</published><updated>2010-11-30T22:37:02.248+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Prácticas NI USB 6008'/><category scheme='http://www.blogger.com/atom/ns#' term='primer bloque'/><title type='text'>The requested file doesn't exist / El fichero no existe...</title><content type='html'>&lt;span style="color: red;"&gt;Hola Luis,&amp;nbsp;cuando intentamos compilar el proyecto, aparece el siguiente error, ¿puedes echarnos una mano? m.s.f. grupo 222.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_1E4mCW_pDlM/TPVgk4P24NI/AAAAAAAAEqo/wWzm9H52GnU/s1600/noexiste.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="463" ox="true" src="http://4.bp.blogspot.com/_1E4mCW_pDlM/TPVgk4P24NI/AAAAAAAAEqo/wWzm9H52GnU/s640/noexiste.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Como puedes ver en&amp;nbsp;la imagen (junto al texto&amp;nbsp;"Fatal Error" al pie de la imagen), se avisa que&amp;nbsp;hay un archivo (Planificador.cpp) que no existe, esto quiere decir que aunque has creado&amp;nbsp;la unidad,&amp;nbsp;Borland no puede encontrarla, es decir, la tiene en su "lista" de unidades del proyecto&amp;nbsp;pero no&amp;nbsp;está físicamente en la carpeta junto a las demás, porque ha sido movida, borrada o guardada en otro lugar..por eso aparece la ventana solicitando que tomes una decisión..&lt;br /&gt;&lt;br /&gt;Si lo que sucedió es que moviste esta unidad fuera de la carpeta del proyecto,&amp;nbsp;sólo tendrás que pegarla de nuevo a la carpeta de trabajo y recompilar. Si la borraste..&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solución&lt;/strong&gt;: Cancela la ventana&amp;nbsp;que aparece, haciendo clic en el botón "Cancelar" y regresa a Borland. Si has borrado la unidad, entonces crea una nueva utilizando el menú "File/New/Unit...&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_1E4mCW_pDlM/TPVjbCwstoI/AAAAAAAAEqs/OpZQlEelzec/s1600/newunit.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" ox="true" src="http://3.bp.blogspot.com/_1E4mCW_pDlM/TPVjbCwstoI/AAAAAAAAEqs/OpZQlEelzec/s1600/newunit.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;..verás que aparece en tu proyecto una nueva unidad..en este ejemplo aparece como "Unit1"...&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_1E4mCW_pDlM/TPVkELZm3YI/AAAAAAAAEqw/B7dBcGKApFU/s1600/nueva.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" ox="true" src="http://3.bp.blogspot.com/_1E4mCW_pDlM/TPVkELZm3YI/AAAAAAAAEqw/B7dBcGKApFU/s1600/nueva.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;...pero&amp;nbsp;podría tener otro nombre, "Unit2", etc...ahora sin hacer nada antes, selecciona la opción "File/Save" para guardar esta nueva unidad...&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&amp;nbsp;&lt;a href="http://3.bp.blogspot.com/_1E4mCW_pDlM/TPVlYNYdZZI/AAAAAAAAEq4/cxuZjCS8Fmc/s1600/guardar.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" ox="true" src="http://3.bp.blogspot.com/_1E4mCW_pDlM/TPVlYNYdZZI/AAAAAAAAEq4/cxuZjCS8Fmc/s1600/guardar.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;..observa que por defecto en el campo "Nombre" aparece&amp;nbsp;"Unit1", cambia este&amp;nbsp;nombe&amp;nbsp;por el nombre&amp;nbsp;de la unidad que está buscando tu proyecto "Planificador" y haz clic en el botón "Guardar" para continuar:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_1E4mCW_pDlM/TPVmA61-48I/AAAAAAAAEq8/OQavzCEvsG8/s1600/planificador.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" ox="true" src="http://4.bp.blogspot.com/_1E4mCW_pDlM/TPVmA61-48I/AAAAAAAAEq8/OQavzCEvsG8/s1600/planificador.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;..no hace falta que&amp;nbsp;añadas la extensión ".cpp" al nombre de la unidad, Borland lo hace automáticamente. &lt;br /&gt;Una vez&amp;nbsp;guardada la nueva unidad "Planificador" (o la que corresponda con tu proyecto), guarda todo el proyecto con la opción "File/Save all" y recompila. &lt;br /&gt;&lt;br /&gt;Ahora puedes escribir el código en este unidad, pero asegúrate de guardar tu proyecto frecuentemente y haz copia de seguridad en algún medio portátil como un lápiz usb o enviándote un correo con todo el proyecto comprimido (más vale prevenir!).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-2075553823420863824?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/2075553823420863824/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=2075553823420863824&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/2075553823420863824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/2075553823420863824'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/11/requested-file-doesnt-exist-el-fichero.html' title='The requested file doesn&apos;t exist / El fichero no existe...'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_1E4mCW_pDlM/TPVgk4P24NI/AAAAAAAAEqo/wWzm9H52GnU/s72-c/noexiste.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-8309735671234446889</id><published>2010-11-28T23:28:00.007+01:00</published><updated>2011-02-27T12:47:51.483+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><title type='text'>Caja de resonancia</title><content type='html'>En la vida después de la Universidad, el estudiante&amp;nbsp;fluye,&amp;nbsp;viene y va, comienza en una empresa, se mueve a otra, pasa un tiempo..o nunca más&amp;nbsp;se mueve de la primera&amp;nbsp;y acaba jubilándose allí, observando todas las primaveras&amp;nbsp;desde el mismo cristal, algo tremendamente aburrido. Fuera de nuestras fronteras, cambiar de empresa está bien visto, añade experiencia, aporta diferentes puntos de vista y sobre todo curte, pero lo más interesante es que después de todo ese viaje sideral por el mundo laboral, para aquellos que nos encontramos mirando al infinito y que pensamos que el mundo se mueve más lento&amp;nbsp;de lo que debería, este viaje, ayuda a encontrar la mejor caja de resonancia, una mágica conjunción de elementos que&amp;nbsp;usando&amp;nbsp;aire, lo convierte en música....A veces te puedes desanimar, es difícil encontrarla, pero intenta&amp;nbsp;no conformarte con escuchar ruido, busca un poco más tu caja de resonancia, en el trabajo, en todo lo que haces.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://infoind-etsid-upv.blogspot.com/2011/02/discurso-de-steve-jobs-en-standford.html"&gt;Discurso de Steve Jobs en Standford.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Una sugerencia: "O mio babbino caro"&lt;br /&gt;&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/ul9OTShQ_rc?fs=1&amp;amp;hl=es_ES&amp;amp;rel=0"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/ul9OTShQ_rc?fs=1&amp;amp;hl=es_ES&amp;amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-8309735671234446889?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/8309735671234446889/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=8309735671234446889&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/8309735671234446889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/8309735671234446889'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/11/caja-de-resonancia.html' title='Caja de resonancia'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-5396819794906641552</id><published>2010-11-19T00:56:00.001+01:00</published><updated>2010-11-19T00:57:41.622+01:00</updated><title type='text'>miniproyecto</title><content type='html'>Esto es sólo una prueba, para intentar explicar el miniproyecto con ayuda de un modelo 3D, quizá ayude, quizá se entienda mejor o no..bueno, es sólo un borrador, una idea (usando &lt;a href="http://sketchup.google.com/intl/es/"&gt;Google Sketchup&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/sgM0u3e6lT8?fs=1&amp;amp;hl=es_ES&amp;amp;rel=0"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/sgM0u3e6lT8?fs=1&amp;amp;hl=es_ES&amp;amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-5396819794906641552?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/5396819794906641552/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=5396819794906641552&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/5396819794906641552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/5396819794906641552'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/11/miniproyecto-y-3d.html' title='miniproyecto'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-7579987750720349998</id><published>2010-11-14T20:22:00.005+01:00</published><updated>2010-11-14T20:36:27.549+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='control'/><category scheme='http://www.blogger.com/atom/ns#' term='ejercicios bloque I'/><title type='text'>Poner en marcha un temporizador (control)</title><content type='html'>&lt;strong&gt;&lt;span style="color: black;"&gt;Ejercicio de repaso:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;strong&gt;Realizar una función en C sin parámetros de entrada que ponga en marcha el temporizador "Timer1" del formulario "Form1" con una frecuencia de 1s.&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Como es una función sin parámetros y no devuelve ningún resultado, el esqueleto de la misma será:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;void Activar_Timer (void)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{...código...}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Observa que se ha fijado 'void' antes del nombre de la función para indicar que no devuelve ningún resultado. Dentro de los paréntesis también aparece 'void' indicando que no se le pasa ningún dato (parámetros). &lt;br /&gt;&lt;br /&gt;La función&amp;nbsp;incluye las&amp;nbsp;instrucciones en Borland C++ para fijar la frecuencia y activar el temporizador:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;void Activar_Timer (void)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: red;"&gt;Form1-&amp;gt;Timer1-&amp;gt;Enabled = 1;&lt;/span&gt;&amp;nbsp; // se activa el temporizador&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: red;"&gt;Form1-&amp;gt;Timer1-&amp;gt;Interval = 1000;&lt;/span&gt; //&amp;nbsp;frecuencia en 1000 ms = 1s&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;&lt;strong&gt;Ejercicio propuesto:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-family: inherit;"&gt;Suponiendo que el "Timer1" ya está en marcha, escribir una función en&amp;nbsp;C que reinicie la cuenta del mismo.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-7579987750720349998?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/7579987750720349998/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=7579987750720349998&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/7579987750720349998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/7579987750720349998'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/11/poner-en-marcha-un-temporizador.html' title='Poner en marcha un temporizador (control)'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-6604966453135677759</id><published>2010-11-14T19:25:00.011+01:00</published><updated>2010-11-14T20:57:19.438+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='control'/><category scheme='http://www.blogger.com/atom/ns#' term='primer bloque'/><category scheme='http://www.blogger.com/atom/ns#' term='ejercicios bloque I'/><title type='text'>Ejercicios con máscaras AND y OR (control)</title><content type='html'>&lt;strong&gt;&lt;span style="color: black;"&gt;Ejercicios de repaso:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;Con estos ejercicios repasamos el uso de los operadores "AND" y "OR" para modificar el estado de algunos bits. Recuerda que la importancia de estos operaciones radica en&amp;nbsp;poder cambiar el estado de un bit aislado "sin modificar" el estado de los demás.&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;Teniendo en cuenta que usamos la variable &lt;em&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;unsigned char mivar&lt;/span&gt;&lt;/em&gt;...&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: red;"&gt;1. Poner los bits 2 y 5 a "0".&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Una variable tipo &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;char&lt;/span&gt; almacena un carácter (1 byte), cuando se usa junto&amp;nbsp;al modificador&amp;nbsp;'unsigned' quiere decir que todos los bits son utilizados como dato. Cuando&amp;nbsp;se usa junto al modificador&amp;nbsp;'signed', el bit 7 se utiliza como signo y por lo tanto sólo se dispone de 7 bits. En nuestro caso disponemos de 8 bits (b7....b0).&lt;br /&gt;&lt;br /&gt;Si deseamos&amp;nbsp;poner un bit a "0",&amp;nbsp;usamos el operador "AND".&lt;br /&gt;Escribe un&amp;nbsp;&amp;nbsp;"0"&amp;nbsp;en los bits&amp;nbsp;a cancelar y "1" en los demás.&amp;nbsp;La máscara quedará:&lt;br /&gt;&lt;br /&gt;valor = valor &amp;amp; 11&lt;strong&gt;&lt;span style="color: red;"&gt;0&lt;/span&gt;&lt;/strong&gt;1&amp;nbsp;1&lt;span style="color: red;"&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;/span&gt;11; &amp;nbsp;(observa que se ha puesto "0" en los bits a cancelar)&lt;br /&gt;valor = valor &amp;amp; 0xDB;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: red;"&gt;2. Poner los bits 1, 3, 7 a "1".&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Si deseamos poner a "1" un bit usamos el operador "OR".&lt;br /&gt;Escribe un "1" en los bits que deseamos activar y "0" en los demás. La máscara quedará:&lt;br /&gt;&lt;br /&gt;valor = valor | &lt;strong&gt;&lt;span style="color: red;"&gt;1&lt;/span&gt;&lt;/strong&gt;000 &lt;strong&gt;&lt;span style="color: red;"&gt;1&lt;/span&gt;&lt;/strong&gt;0&lt;strong&gt;&lt;span style="color: red;"&gt;1&lt;/span&gt;&lt;/strong&gt;0; &lt;br /&gt;valor = valor | 0x8A;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;strong&gt;3. Complementar el valor de los bits 4 y 6.&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para complementar usamos el operador XOR.&lt;br /&gt;Escribe un "1" en el bit a complementar y los demás a "0". La máscara quedará por lo tanto:&lt;br /&gt;&lt;br /&gt;valor = valor XOR 0101 0000;&lt;br /&gt;valor = valor XOR 0x50;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: red;"&gt;4. Utilizando la variable&amp;nbsp;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;valor&amp;nbsp;char&lt;/span&gt;, poner a "1" la parte alta del registro y a "0" la parte baja,&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;La&amp;nbsp;variable &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;valor&lt;/span&gt; tipo &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;char&lt;/span&gt; contiene 8 bits. La parte alta son los cuatro bits de la izquierda.&lt;br /&gt;Para poner a "1" estos bits utilizamos el operador "OR" con una máscara:&lt;br /&gt;&lt;br /&gt;valor = valor OR &lt;strong&gt;&lt;span style="color: red;"&gt;1111&lt;/span&gt;&lt;/strong&gt; 0000;&lt;br /&gt;valor = valor OR 0xF0;&lt;br /&gt;&lt;br /&gt;Si deseamos poner a "0" la parte baja, utilizamos el operador "AND":&lt;br /&gt;&lt;br /&gt;valor = valor AND &lt;span style="color: black;"&gt;1111&lt;/span&gt;&lt;span style="color: red;"&gt;&lt;strong&gt;0000&lt;/strong&gt;&lt;/span&gt;;&lt;br /&gt;valor = valor AND 0xF0;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Nota&lt;/strong&gt;: Un grupo de 4 bits se llama "nibble", &lt;a href="http://es.wikipedia.org/wiki/Nibble"&gt;leer más en Wikipedia&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;Importante&lt;/strong&gt;: Cuando se hace referencia al bit 5, no hay que olvidar contar desde la derecha (cero incluido).&lt;br /&gt;&lt;br /&gt;También puedes leer en el blog el artículo&amp;nbsp;&lt;a href="http://infoind-etsid-upv.blogspot.com/2010/11/poner-un-bit-0-con-and.html"&gt;"Usar el operador AND&lt;/a&gt;"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-6604966453135677759?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/6604966453135677759/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=6604966453135677759&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/6604966453135677759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/6604966453135677759'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/11/ejercicios-con-mascaras-control.html' title='Ejercicios con máscaras AND y OR (control)'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-9131838241302946138</id><published>2010-11-14T17:17:00.009+01:00</published><updated>2010-11-14T19:38:49.865+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='control'/><category scheme='http://www.blogger.com/atom/ns#' term='ejercicios bloque I'/><title type='text'>Esqueleto de una función en C con argumentos (control)</title><content type='html'>&lt;span style="color: red;"&gt;&lt;strong&gt;Realiza una función en C que reciba tres númeos reales&amp;nbsp;y devuelva el menor.&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Una función en C tiene el siguiente aspecto:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;void nombre_función (parámetros)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{...código de la función..}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Si la función necesita algún valor, se define en la zona de parámetros. Si la función devuelve un resultado, habrá que definirlo.&amp;nbsp;En el código de arriba&amp;nbsp;aparece 'void' al principio de la función, esto significa que la función no devuelve nada.&lt;br /&gt;&lt;br /&gt;En nuestro caso, la función necesita tres datos reales, por lo tanto hay que definirlos en la zona de&amp;nbsp;parámetros, indicando el nombre y el tipo (double = real):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;void nombre_función (&lt;span style="color: red;"&gt;double dato1, double dato2, double dato3&lt;/span&gt;) &lt;br /&gt;{...código de la función..}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Como la función devuelve un valor real, hay que especificarlo.&lt;br /&gt;En la función donde pone&amp;nbsp;'void'&amp;nbsp;debe&amp;nbsp;escribirse 'double':&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: red;"&gt;double&lt;/span&gt; nombre_función (double dato1, double dato2, double dato3) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{...código de la función..}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Una vez definidos correctamente los parámetros&amp;nbsp;necesarios para&amp;nbsp;la función y el tipo de resultado que devolverá, sólo queda añadir la instrucción&amp;nbsp;encargada de pasar al programa principal dicho valor:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;double nombre_función (double dato1, double dato2, double dato3) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{...código de la función..&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; return resultado;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En este punto, siendo la&amp;nbsp;definición de la función y sus parámetros&amp;nbsp;correcta,&amp;nbsp;sólo queda implementar una solución para el problema propuesto,&amp;nbsp;quedando como ejercicio. Lo que más me interesa es que defináis correctamente la función y sus argumentos, la solución puede ser más o menos buena pero sin este paso bien hecho, la función fallará.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;strong&gt;Importante:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;Cuando se pide implementar una función que realice una tarea determinada, hay que escribirla fuera del bloque principal 'main'. Si lo escribimos dentro de este bloque, técnicamente el problema estará resuelto pero no es lo que se pide. Cuando se define una función, habrá que hacerlo en otra unidad o al principio del bloque, antes del 'main' y la función deberá incluir la instrucción 'return'.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-9131838241302946138?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/9131838241302946138/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=9131838241302946138&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/9131838241302946138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/9131838241302946138'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/11/esqueleto-de-una-funcion-en-c-con.html' title='Esqueleto de una función en C con argumentos (control)'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-8843769396693257192</id><published>2010-11-14T15:52:00.020+01:00</published><updated>2010-11-14T21:16:24.391+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='repaso'/><category scheme='http://www.blogger.com/atom/ns#' term='control'/><category scheme='http://www.blogger.com/atom/ns#' term='primer bloque'/><category scheme='http://www.blogger.com/atom/ns#' term='ejercicios bloque I'/><title type='text'>Bus de direcciones y datos (control)</title><content type='html'>&lt;strong&gt;&lt;span style="color: black;"&gt;Ejercicios de repaso:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: red;"&gt;1. Una&lt;/span&gt;&lt;span style="color: red;"&gt; memoria&amp;nbsp;dispone de&amp;nbsp;2 líneas de dirección&amp;nbsp;y 8 líneas de datos. &lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;strong&gt;¿Cuántos bits es capaz de almacenar? ¿Cuál es el valor hexadecimal de la última dirección?&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Con 2 líneas de direcciones, podremos direccionar 2^2&amp;nbsp;= 4&amp;nbsp;direcciones.&lt;br /&gt;&lt;br /&gt;00-&amp;nbsp; posición 0&lt;br /&gt;01 - posición 1&lt;br /&gt;10 -&amp;nbsp;posición 2&lt;br /&gt;11 - posición 3&lt;br /&gt;&lt;br /&gt;En total son 4 posiciones, pero al empezar a contar desde cero,&amp;nbsp;hay que restar una unidad.&lt;br /&gt;La última dirección será: 2^2-1= 3 (0x3).&lt;br /&gt;En&amp;nbsp;cada posición&amp;nbsp;podemos almacenar 8 bits, por lo tanto la capacidad total es de 4x8 = 32 bits.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: red;"&gt;2. Una&lt;/span&gt;&lt;span style="color: red;"&gt; memoria dispone de 16 líneas de dirección y 8 líneas de datos. &lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;strong&gt;¿Cuántos bits es capaz de almacenar? ¿Cuál es el valor hexadecimal de la última dirección?&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Con 16 líneas, tenemos&amp;nbsp;2^16 = 65536 direcciones.&lt;br /&gt;&lt;br /&gt;0000000000000000 - posición 0&lt;br /&gt;0000000000000001 - posición 1&lt;br /&gt;...............................&lt;br /&gt;...............................&lt;br /&gt;111111111111110 &lt;br /&gt;111111111111111 - última dirección.&lt;br /&gt;&lt;br /&gt;Igual que antes,&amp;nbsp;son&amp;nbsp;65536 posiciones, pero al empezar a contar desde cero,&amp;nbsp;hay que restar una unidad.&lt;br /&gt;La última dirección será 2^16-1 = 65536-1 = 65535 = 0xFF.&lt;br /&gt;En&amp;nbsp;cada una&amp;nbsp;almacenamos 8 bits, la capacidad total será de&amp;nbsp;65536x8 = 524.288 bits.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Resumiendo&lt;/strong&gt;:&amp;nbsp;Podemos conocer la cantidad de direcciones de memoria como las combinaciones de 2 elevando a 'n', donde 'n' es el número de líneas de direcciones. Cuantas más bits (líneas) de direcciones, más posiciones de memoria podremos direccionar y por lo tanto más información podremos almacenar.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Sugerencias a tener en cuenta:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;"Puede direccionar 2^16 x 8" - &lt;span style="color: red;"&gt;Ésto es la capacidad de la memoria en bits (16 líneas de direcciones y 8 de datos), no el número de posiciones de memoria que se calcula como 2^16. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;"El valor hexadecimal será FFFF" &lt;span style="color: red;"&gt;-&lt;/span&gt;&amp;nbsp;&lt;span style="color: red;"&gt;No es un error importante, pero&amp;nbsp;incluid siempre&amp;nbsp;la notación correctamente, si el valor está expresado&amp;nbsp;en hexadecimal, precededlo con "0x". Lo correcto sería 0xFFFF.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;span style="color: black;"&gt;"La capacidad de la memoria será 2^16 x 2^8"&lt;/span&gt; - Error grave, en cada posición se puede almacenar sólo 8 bits, no la combinación de todos ellos, por lo tanto si tenemos 65536 posiciones donde en cada una se almacena 8 bits, entonces la capacidad será 2^16 x 8 = 524288 bits.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Ejercicios propuestos:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&lt;strong&gt;1. Una memoria dispone de 4 líneas de dirección y&amp;nbsp;16 líneas de datos.&amp;nbsp; &lt;/strong&gt;&lt;/span&gt;&lt;span style="color: #38761d;"&gt;&lt;strong&gt;¿Cuántas posiciones&amp;nbsp;de memoria pueden direccionarse? ¿Cuántos bits es capaz de almacenar?&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&lt;strong&gt;¿Cuál es el valor hexadecimal de la última dirección?&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&lt;strong&gt;2. Una memoria dispone de 32 líneas de dirección y&amp;nbsp;2 líneas de datos. &lt;/strong&gt;&lt;/span&gt;&lt;span style="color: #38761d;"&gt;&lt;strong&gt;¿Cuántas posiciones de memoria pueden direccionarse? ¿Cuántos bits es capaz de almacenar?&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&lt;strong&gt;¿Cuál es el valor hexadecimal de la última dirección?&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: #38761d;"&gt;3. Necesito&amp;nbsp;disponer de&amp;nbsp;1543 direcciones de memoria&amp;nbsp;¿cuántas líneas de direcciones son necesarias?&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="color: #38761d;"&gt; ¿Cuál es el valor hexadecimal de la última dirección?&lt;/span&gt;&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: #38761d;"&gt;4. Necesito disponer de 9 bits de datos en cada dirección de memoria, ¿cuántas líneas de datos necesito? &lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="color: #38761d;"&gt;Para el caso anterior, ¿cuál es la capacidad total en bits de la memoria?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Lee más sobre el bus de direcciones en Wikipedia:&lt;br /&gt;&lt;a href="http://es.wikipedia.org/wiki/Bus_de_direcciones"&gt;http://es.wikipedia.org/wiki/Bus_de_direcciones&lt;/a&gt;&lt;br /&gt;..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-8843769396693257192?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/8843769396693257192/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=8843769396693257192&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/8843769396693257192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/8843769396693257192'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/11/ejercicios-de-repaso-control.html' title='Bus de direcciones y datos (control)'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-4135872722532089076</id><published>2010-11-10T23:55:00.009+01:00</published><updated>2010-11-11T00:28:59.398+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><title type='text'>Técnico y personal</title><content type='html'>Este blog lleva en marcha desde marzo de 2008 y hasta ahora, en él sólo había publicado sobre la asignatura, videos, explicaciones, preguntas vuestras, etc, pero no había prestado atención&amp;nbsp;a&amp;nbsp;la parte personal, quizá pensando que lo más importante&amp;nbsp;estaba en la técnica y en el conocimiento. Este año&amp;nbsp;y&amp;nbsp;gracias a una pregunta de mis alumnos hace unas semanas, también publicaré sobre las personas..he&amp;nbsp;empezado&amp;nbsp;&lt;a href="http://infoind-etsid-upv.blogspot.com/2010/11/en-que-vamos-trabajar-luego.html"&gt;aquí&lt;/a&gt;, unas entradas más abajo..&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://2.bp.blogspot.com/_1E4mCW_pDlM/TNsoKw8RsvI/AAAAAAAAEpk/Uxw82p4qkSo/s1600/imagesCA7RLDF2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" px="true" src="http://2.bp.blogspot.com/_1E4mCW_pDlM/TNsoKw8RsvI/AAAAAAAAEpk/Uxw82p4qkSo/s1600/imagesCA7RLDF2.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Algo personal,&amp;nbsp;la&amp;nbsp;canción&amp;nbsp;"No Name #3" de la banda sonora del Indomable Will Hunting.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-4135872722532089076?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/4135872722532089076/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=4135872722532089076&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/4135872722532089076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/4135872722532089076'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/11/este-blog-lleva-en-marcha-tres-anos-y.html' title='Técnico y personal'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_1E4mCW_pDlM/TNsoKw8RsvI/AAAAAAAAEpk/Uxw82p4qkSo/s72-c/imagesCA7RLDF2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-3212497168028829301</id><published>2010-11-07T01:00:00.004+01:00</published><updated>2010-11-07T01:03:23.941+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programación C'/><category scheme='http://www.blogger.com/atom/ns#' term='bloque I'/><title type='text'>Poner un bit a "0" con AND</title><content type='html'>En este video se explica la operación que debe realizarse para poner a cero algún bit en un registro.&lt;br /&gt;&lt;br /&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/1prCFh7onaI?fs=1&amp;amp;hl=es_ES&amp;amp;rel=0"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/1prCFh7onaI?fs=1&amp;amp;hl=es_ES&amp;amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-3212497168028829301?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/3212497168028829301/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=3212497168028829301&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/3212497168028829301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/3212497168028829301'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/11/poner-un-bit-0-con-and.html' title='Poner un bit a &quot;0&quot; con AND'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-7039068931606734837</id><published>2010-11-04T10:09:00.004+01:00</published><updated>2010-11-04T10:20:52.513+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Prácticas NI USB 6008'/><category scheme='http://www.blogger.com/atom/ns#' term='drivers NI USB 6008'/><title type='text'>Drivers tarjeta NI USB 6008</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_1E4mCW_pDlM/TNJ6YLLOVWI/AAAAAAAAEpc/YLo6TKeLSrQ/s1600/040716_usb6008_l.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="232" px="true" src="http://2.bp.blogspot.com/_1E4mCW_pDlM/TNJ6YLLOVWI/AAAAAAAAEpc/YLo6TKeLSrQ/s320/040716_usb6008_l.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;Después de tener que formatear el ordenador, hay que volver a instalar los controladores de la tarjeta DAQ para que Windows la reconozca y podamos acceder a ella desde nuestros programas. &lt;br /&gt;&lt;br /&gt;Hay dos tipos de controladores proporcionados por&amp;nbsp;el fabricante, el paquete completo que incluye todas las herramientas de diagnóstico y configuración y el paquete reducido (core),&amp;nbsp;es el "sistema mínimo" necesario para hacerla funcionar. Observa la diferencia que existe en&amp;nbsp;el tamaño del fichero que hay que descargar.&lt;br /&gt;&lt;br /&gt;Si necesitamos&amp;nbsp;arrancar rápido o realizar la instalación de nuestro programa en&amp;nbsp;un cliente, podemos optar por la&amp;nbsp;opción reducida, pero si queremos&amp;nbsp;comprobar las entradas y salidas,&amp;nbsp;visualizar esta información en pantalla y poder ver el&amp;nbsp;identificador de la tarjeta, optaremos por la opción completa. Aquí os dejo los enlaces:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://joule.ni.com/nidu/cds/view/p/id/2216"&gt;Paquete&amp;nbsp;reducido (154MB)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://joule.ni.com/nidu/cds/view/p/id/2215/lang/es"&gt;Paquete completo (1115MB)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-7039068931606734837?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/7039068931606734837/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=7039068931606734837&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/7039068931606734837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/7039068931606734837'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/11/drivers-tarjeta-ni-usb-6008.html' title='Drivers tarjeta NI USB 6008'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_1E4mCW_pDlM/TNJ6YLLOVWI/AAAAAAAAEpc/YLo6TKeLSrQ/s72-c/040716_usb6008_l.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-4159623823958574100</id><published>2010-11-02T23:21:00.012+01:00</published><updated>2011-02-27T12:49:53.094+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><title type='text'>¿En qué vamos a trabajar luego?</title><content type='html'>En la clase de hoy, mientras estaba entre los pupitres revisando las preguntas&amp;nbsp;de las actividades, un grupo de alumnos&amp;nbsp;me ha hecho esta pregunta. Me he quedado pensando unos segundos, ha habido un nervioso pensamiento que casi me hace hablar sin reflexionar. La pregunta ha sido sincera y entre líneas había&amp;nbsp;preocupación. &lt;br /&gt;&lt;br /&gt;Habían trabajado&amp;nbsp;ocasionalmente, aquí y allá, como todos hemos hecho en tiempos de estudiantes, pero no para&amp;nbsp;aquello que están estudiando.&amp;nbsp;En su campo no tienen ninguna experiencia. Estudiar ha sido lo único que he podido contestarles. He llegado a casa y he estado pensando en ello. &lt;br /&gt;&lt;br /&gt;Cuando trabajáis aprendéis, ponéis en práctica lo estudiado, etc..pero&amp;nbsp;sobre todo podéis descubrir qué es lo que más&amp;nbsp;os&amp;nbsp;gusta.&amp;nbsp;Eso&amp;nbsp;es lo importante, porque&amp;nbsp;lo vais a hacer toda&amp;nbsp;vuestra vida.&amp;nbsp;Esa podría ser una&amp;nbsp;directriz que difícilmente&amp;nbsp;os decepcionará. Todo vuestro esfuerzo,&amp;nbsp;estudios, prácticas y trabajos,&amp;nbsp;encaminadlos a buscar esa sensación,&amp;nbsp;a descubrirla. Ser los mejores entonces&amp;nbsp;será fácil. Y para no aburriros más,&amp;nbsp;cierro con mi frase favorita:&lt;br /&gt;&lt;br /&gt;"Trabaja en algo que te guste y ese mismo día dejarás de trabajar".&lt;br /&gt;Confucio (551 AC-478 AC).&lt;br /&gt;&lt;a href="http://www.blogger.com/goog_1211525375"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://infoind-etsid-upv.blogspot.com/2011/02/discurso-de-steve-jobs-en-standford.html"&gt;Discurso de Steve Jobs en Standford.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Y como fuente de inspiración&amp;nbsp;os recomiendo la banda sonora de la película Spirit.&lt;br /&gt;En especial la canción "Run Free"..&lt;br /&gt;&lt;br /&gt;&lt;object height="340" width="560"&gt;&lt;param name="movie" value="http://www.youtube.com/v/lG8zfpel7NE?fs=1&amp;amp;hl=es_ES&amp;amp;rel=0"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/lG8zfpel7NE?fs=1&amp;amp;hl=es_ES&amp;amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-4159623823958574100?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/4159623823958574100/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=4159623823958574100&amp;isPopup=true' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/4159623823958574100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/4159623823958574100'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/11/en-que-vamos-trabajar-luego.html' title='¿En qué vamos a trabajar luego?'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-5053535167864546558</id><published>2010-11-01T20:30:00.001+01:00</published><updated>2010-11-01T20:30:44.305+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bloque I'/><title type='text'>El desarrollo de un proyecto</title><content type='html'>En la clase de hoy veremos el tema 3 "Desarrollo de un proyecto".&lt;br /&gt;&lt;a href="http://www.bitschips.com/infoind/sii.pdf"&gt;Descargar tema.&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.bitschips.com/infoind/mini2010.pdf"&gt;Descargar especificación mini2010.&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.bitschips.com/infoind/tema4.pdf"&gt;Descargar tema 4.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-5053535167864546558?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/5053535167864546558/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=5053535167864546558&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/5053535167864546558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/5053535167864546558'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/11/el-proyecto.html' title='El desarrollo de un proyecto'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-798069321862025028</id><published>2010-10-30T14:58:00.015+02:00</published><updated>2010-11-11T00:50:36.515+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programación C'/><category scheme='http://www.blogger.com/atom/ns#' term='borland c++'/><category scheme='http://www.blogger.com/atom/ns#' term='primer bloque'/><category scheme='http://www.blogger.com/atom/ns#' term='Prácticas C'/><title type='text'>Añadir un formulario al proyecto</title><content type='html'>Cuando trabajo en un proyecto&amp;nbsp;Borland C++, puedo necesitar más formularios además del principal "Form1". Para añadirlo sólo hay que seleccionar la opción del menú "File/New/Form".&lt;br /&gt;&lt;br /&gt;Lo que ocurre entonces es que Borland crea una unidad nueva asociada al formulario. Ambos objetos forman un conjunto. En el formulario se añaden&amp;nbsp;los elementos gráficos y en la unidad&amp;nbsp;el código de cada objeto, función, etc.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;strong&gt;Para verlo en HD &lt;/strong&gt;&lt;/span&gt;&lt;span style="color: red;"&gt;&lt;strong&gt;activa&amp;nbsp;"Pantalla completa" después de iniciar la reproducción.&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;object height="340" width="560"&gt;&lt;param name="movie" value="http://www.youtube.com/v/hMzYjrWHSUU?fs=1&amp;amp;hl=es_ES&amp;amp;rel=0"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/hMzYjrWHSUU?fs=1&amp;amp;hl=es_ES&amp;amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-798069321862025028?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/798069321862025028/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=798069321862025028&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/798069321862025028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/798069321862025028'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/10/anadir-un-formulario-al-proyecto.html' title='Añadir un formulario al proyecto'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-3346783434682274224</id><published>2010-10-26T23:16:00.042+02:00</published><updated>2010-10-28T00:26:12.845+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='errores de programación'/><category scheme='http://www.blogger.com/atom/ns#' term='borland c++'/><category scheme='http://www.blogger.com/atom/ns#' term='primer bloque'/><category scheme='http://www.blogger.com/atom/ns#' term='Prácticas C'/><title type='text'>Quiero cargar otro formulario en Borland C++</title><content type='html'>&lt;span style="color: blue;"&gt;"He creado un proyecto en Borland C++, he guardado correctamente y al compilar, mi programa abre un formulario que no es el que deseaba. ¿Qué está ocurriendo? ¿Cómo puedo hacer que mi programa abra el formulario que deseo si tengo varios?" - Ana.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;strong&gt;&lt;span style="color: blue;"&gt;Primera Opción:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Cuando compilamos un programa, el primer formulario que se muestra en pantalla está determinado por las instrucciones&amp;nbsp;del bloque principal "Project1.cpp".&amp;nbsp;Selecciona la opción&amp;nbsp;"View/Project manager" para abrir el gestor de proyectos y haz doble clic en "Project1.cpp":&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_1E4mCW_pDlM/TMc6VtJ9DYI/AAAAAAAAEb0/oq9Jdge7gqw/s1600/projectmng.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" nx="true" src="http://4.bp.blogspot.com/_1E4mCW_pDlM/TMc6VtJ9DYI/AAAAAAAAEb0/oq9Jdge7gqw/s1600/projectmng.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;"Project1.cpp"&amp;nbsp;podría&amp;nbsp;tener otro nombre si lo has renombrado al crear tu proyecto. Una vez abierto,&amp;nbsp;verás&amp;nbsp;algunas instrucciones dentro. Puedes ver una muestra en la figura siguiente:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_1E4mCW_pDlM/TMilRd6DrAI/AAAAAAAAEcc/6edidJFsAh4/s1600/dosform.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="196" nx="true" src="http://1.bp.blogspot.com/_1E4mCW_pDlM/TMilRd6DrAI/AAAAAAAAEcc/6edidJFsAh4/s400/dosform.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;En la primera línea aparece: &lt;span style="color: blue;"&gt;"&lt;strong&gt;Useform("Unit1.cpp",Form1)"&lt;/strong&gt;&lt;/span&gt;.&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: left;"&gt;En esta instrucción&amp;nbsp;se declara el formulario&amp;nbsp;creado&amp;nbsp;en la unidad "Unit1.cpp". Para cada formulario&amp;nbsp;en el proyecto, aquí habrá una línea. Recuerda que un formulario está vinculado a las unidades.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Más adelante aparece: &lt;strong&gt;&lt;span style="color: blue;"&gt;"Application..CreateForm"&lt;/span&gt;&lt;/strong&gt;.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Dicha instrucción crea los formularios. También habrá una instrucción para cada formulario. &lt;u&gt;El formulario al que se haga referencia en la primera línea será el primero en cargarse&lt;/u&gt; (el que verá el usuario). Veamos un ejemplo:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_1E4mCW_pDlM/TMdbdt15KbI/AAAAAAAAEcA/4UlUbhBPw2k/s1600/dosunidades.png" imageanchor="1" style="cssfloat: left; margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" nx="true" src="http://3.bp.blogspot.com/_1E4mCW_pDlM/TMdbdt15KbI/AAAAAAAAEcA/4UlUbhBPw2k/s1600/dosunidades.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: left;"&gt;En este proyecto tienes el bloque principal "Project1.cpp" y las dos unidades "Unit1.cpp" y "Unit3.cpp", con&amp;nbsp;sus correspondientes formularios "Form1" y "Form3". Vamos a echar un vistazo al código del bloque principal "Project1.cpp" que es el encargado de cargar el formulario inicial:&lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_1E4mCW_pDlM/TMimVWd7drI/AAAAAAAAEck/zoFFrS2C8cs/s1600/form13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="193" nx="true" src="http://2.bp.blogspot.com/_1E4mCW_pDlM/TMimVWd7drI/AAAAAAAAEck/zoFFrS2C8cs/s400/form13.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: justify;"&gt;En la figura anterior se puede ver que se han definido los dos formularios en las primeras líneas con la instrucción&amp;nbsp; "Useform". Más adelante se&amp;nbsp;crean con la instrucción "Application..CreateForm". Es importante fíjarse en&amp;nbsp;el orden, primero se crea el formulario "Form1" y después "Form3", por lo tanto el que aparecerá al ejecutar la aplicación será el primero: "Form1". &lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: left;"&gt;Si se quisiera mostrar inicialmente el segundo, sólo se tendría que cambiar el orden de las instrucciones.&lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: left;"&gt;&lt;span style="color: blue;"&gt;&lt;strong&gt;Segunda Opción:&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: left;"&gt;Esta operación puedes realizarla también&amp;nbsp;configurando las opciones del proyecto. Activa la opción del menú "Project/Options":&lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_1E4mCW_pDlM/TMibHdiiBOI/AAAAAAAAEcI/qxK6Z2adasg/s1600/options.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" nx="true" src="http://4.bp.blogspot.com/_1E4mCW_pDlM/TMibHdiiBOI/AAAAAAAAEcI/qxK6Z2adasg/s400/options.png" width="321" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;Se muestra la&amp;nbsp;ventana de configuración de tu proyecto. Haz clic en la pestaña "Forms":&lt;br /&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_1E4mCW_pDlM/TMicsIuIQEI/AAAAAAAAEcM/OUpIWOvnw18/s1600/ordenform.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="395" nx="true" src="http://4.bp.blogspot.com/_1E4mCW_pDlM/TMicsIuIQEI/AAAAAAAAEcM/OUpIWOvnw18/s400/ordenform.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: left;"&gt;En la figura anterior puedes ver que en la zona de la izquierda aparecen los formularios usados por la aplicación (en este caso hay dos). Justo arriba en el apartado&amp;nbsp;"Main form"&amp;nbsp;puedes definir el formulario principal de tu aplicación. Aparece seleccionado "Form1", éste será el que se abrirá primero. Si quieres cambiarlo, sólo tienes que abrir la lista desplegable y seleccionar otro. &lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: left;"&gt;Esta operación lo que hace es cambiar&amp;nbsp;el orden de las instrucciones que se acaban de explicar&amp;nbsp;unos párrafos más arriba. Puedes comprobarlo cambiando el formulario por defecto aquí y abriendo el bloque principal de tu programa "Project1.cpp", busca las instrucciones "Application..CreateForm" y comprueba que se ha cambiado el orden de las instrucciones.&lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: left;"&gt;----&lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: left;"&gt;&lt;span style="color: #cccccc; font-family: Arial, Helvetica, sans-serif; font-size: x-small;"&gt;tiempo edición: 2'30h.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-3346783434682274224?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/3346783434682274224/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=3346783434682274224&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/3346783434682274224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/3346783434682274224'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/10/quiero-cargar-otro-formulario-en-mi.html' title='Quiero cargar otro formulario en Borland C++'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_1E4mCW_pDlM/TMc6VtJ9DYI/AAAAAAAAEb0/oq9Jdge7gqw/s72-c/projectmng.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-1526942836753437406</id><published>2010-10-26T22:17:00.025+02:00</published><updated>2010-10-30T14:48:14.867+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='errores de programación'/><category scheme='http://www.blogger.com/atom/ns#' term='borland c++'/><category scheme='http://www.blogger.com/atom/ns#' term='primer bloque'/><category scheme='http://www.blogger.com/atom/ns#' term='Prácticas C'/><title type='text'>Elementos de un proyecto nuevo en Borland C++</title><content type='html'>&lt;span style="color: blue;"&gt;"No tengo muy claro cual es la estructura de un proyecto, ¿por favor podrías explicármelo un poco? Gracias." - José.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Cuando empiezas un&amp;nbsp;proyecto nuevo en Borland, se crean&amp;nbsp;una serie de archivos.&amp;nbsp;Para ver los elementos que componen dicho proyecto, puedes activar la opción del menú "View/Project manager":&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_1E4mCW_pDlM/TMc6VtJ9DYI/AAAAAAAAEb0/oq9Jdge7gqw/s1600/projectmng.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="296" nx="true" src="http://4.bp.blogspot.com/_1E4mCW_pDlM/TMc6VtJ9DYI/AAAAAAAAEb0/oq9Jdge7gqw/s400/projectmng.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;"Project1.cpp"&amp;nbsp;es el bloque de código&amp;nbsp;que&amp;nbsp;"arranca"&amp;nbsp;tu programa&amp;nbsp;(contiene el "main").&amp;nbsp;Normalmente&amp;nbsp;no escribirás tu código aquí.&lt;br /&gt;&lt;br /&gt;"Unit1.cpp" es un bloque o segmento de código donde escribirás tu programa. También se&amp;nbsp;llama "unidad" y&amp;nbsp;puedes tener las unidades que desees, pero cuando se crea un proyecto nuevo, sólo se crea una por defecto.&amp;nbsp;Un buen programa tendrá varias unidades y cada una&amp;nbsp;incluirá funciones diferentes, de modo que&amp;nbsp;el código esté bien organizado.&lt;br /&gt;&lt;br /&gt;"Form1" es el formulario. Cuando se crea una unidad, Borland crea también un formulario vinculado a ella. Puedes ver en la figura anterior que justo debajo de "Unit1.cpp" aparece "Form1". Un formulario te permitirá incluir elementos gráficos como botones,&amp;nbsp;etiquetas y otros objetos que dotarán a tu aplicación de la necesaria interactividad.&lt;br /&gt;&lt;br /&gt;En el siguiente diagrama puedes ver la estructura general de un proyecto.&amp;nbsp;Del fichero "Project1.cpp" dependen&amp;nbsp;las diferentes unidades "Unit1.cpp", "Unit2.cpp", etc. Observa que cada formulario está vinculado a una unidad. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: red;"&gt;Importante&lt;/span&gt;&lt;/strong&gt;: Si eliminas&amp;nbsp;de tu proyecto una unidad,&amp;nbsp;también estarás borrando su formulario asociado.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_1E4mCW_pDlM/TMdHW1zpLqI/AAAAAAAAEb4/m6y9bMFZecs/s1600/bloques.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="295" nx="true" src="http://3.bp.blogspot.com/_1E4mCW_pDlM/TMdHW1zpLqI/AAAAAAAAEb4/m6y9bMFZecs/s400/bloques.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="color: red;"&gt;&lt;strong&gt;Lo&amp;nbsp;verás mejor&amp;nbsp;si activas&amp;nbsp;el modo "Pantalla completa".&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;strong&gt;&lt;span style="color: red;"&gt;(icono situado en la esquina inferior derecha del video)&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;object height="250" width="400"&gt;&lt;param name="movie" value="http://www.youtube.com/v/wh6GCvJQRJs?fs=1&amp;amp;hl=es_ES&amp;amp;rel=0&amp;amp;hd=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/wh6GCvJQRJs?fs=1&amp;amp;hl=es_ES&amp;amp;rel=0&amp;amp;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="400" height="250"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;----&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="color: #cccccc; font-family: Arial, Helvetica, sans-serif; font-size: xx-small;"&gt;t.edición del post 1'30h&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="color: #cccccc; font-family: Arial; font-size: xx-small;"&gt;grabación y publicación en HD&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="color: #cccccc; font-family: Arial; font-size: xx-small;"&gt;insertado en ventana, no enlace&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-1526942836753437406?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/1526942836753437406/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=1526942836753437406&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/1526942836753437406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/1526942836753437406'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/10/me-abre-un-formulario-diferente.html' title='Elementos de un proyecto nuevo en Borland C++'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_1E4mCW_pDlM/TMc6VtJ9DYI/AAAAAAAAEb0/oq9Jdge7gqw/s72-c/projectmng.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-5789189414449621679</id><published>2010-10-18T08:25:00.010+02:00</published><updated>2010-11-11T00:51:18.506+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programación C'/><category scheme='http://www.blogger.com/atom/ns#' term='borland c++'/><category scheme='http://www.blogger.com/atom/ns#' term='Prácticas C'/><category scheme='http://www.blogger.com/atom/ns#' term='bloque I'/><title type='text'>Prácticas con Builder C</title><content type='html'>Aquí tenéis dos artículos sencillos que os vendrán bien para repasar las prácticas que realizaremos en el laboratorio con Borland C++ Builder. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.bitschips.com/infoind/unidades.pdf"&gt;Introducción al uso de las unidades (1 página, formato PDF)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.bitschips.com/infoind/propiedades.pdf"&gt;Uso de las propiedades de los objetos (2 páginas, formato PDF)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://2.bp.blogspot.com/_1E4mCW_pDlM/TLvqbJ9-TWI/AAAAAAAAEbo/yGoilnx1_-c/s1600/borland.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" ex="true" height="195" src="http://2.bp.blogspot.com/_1E4mCW_pDlM/TLvqbJ9-TWI/AAAAAAAAEbo/yGoilnx1_-c/s320/borland.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;En el primero se introduce&amp;nbsp;el uso de las unidades, que nos permitirán separar el código en bloques independientes. Esta metodología permite acercarnos a la programación modular.&lt;br /&gt;&lt;br /&gt;En el segundo artículo, se hace una introducción al uso de las propiedades de los objetos utilizando el panel "Inspector de objetos". Lo utilizarás siempre que tengas que modificar&amp;nbsp;alguna propiedad de los objetos de tu aplicación como botones, cajas de texto, imágenes,&amp;nbsp;etc.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-5789189414449621679?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/5789189414449621679/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=5789189414449621679&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/5789189414449621679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/5789189414449621679'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/10/aqui-teneis-dos-articulos-sencillos-que.html' title='Prácticas con Builder C'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_1E4mCW_pDlM/TLvqbJ9-TWI/AAAAAAAAEbo/yGoilnx1_-c/s72-c/borland.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-7932620786566240873</id><published>2010-06-10T20:54:00.016+02:00</published><updated>2010-11-11T00:48:34.526+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Prácticas NI USB 6008'/><category scheme='http://www.blogger.com/atom/ns#' term='sensor remoto'/><category scheme='http://www.blogger.com/atom/ns#' term='daq rf digital link'/><title type='text'>rf sensor digital remoto para usar con DAQ</title><content type='html'>Una tarjeta de adquisición de datos (DAQ) se encarga de actuar de interfaz entre los sensores del sistema a controlar y el PC. Cuando usamos una tarjeta de adquisición de datos, como el modelo NI USB-6008, para conectar los sensores utilizamos cables y puede limitar nuestras instalaciones.&lt;br /&gt;Llevaba algún tiempo pensando en montar una conexión inalámbrica de bajo coste para la tarjeta y así poder leer sensores distribuidos por la casa, el aula, la empresa, todo sin cables...sensores de luz, presencia, alarmas, etc.&lt;br /&gt;&lt;br /&gt;He investigado un poco por Internet y voilà! el transmisor y el receptor! De este modo tenemos disponibles 8 canales digitales que podemos leer vía radio. Cuando el sensor se activa en el TX, por ejemplo por una vibración, en el RX se activa dicha salida y con el programa en C leyendo el puerto del DAQ, podemos monitorizarlo todo remotamente.&lt;br /&gt;&lt;br /&gt;Las placas están en su etapa de desarrollo y todavía habrá que modificar algunas cosas pero funcionan perfectamente. Puedes ver los módulos en la siguiente captura:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_1E4mCW_pDlM/TBFPdyy8bDI/AAAAAAAAEO4/_4QqiNJhyrs/s1600/copia+de+IMGP1708.JPG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5481249594756852786" src="http://3.bp.blogspot.com/_1E4mCW_pDlM/TBFPdyy8bDI/AAAAAAAAEO4/_4QqiNJhyrs/s320/copia+de+IMGP1708.JPG" style="height: 240px; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Aquí os pongo el esquema del circuito donde se aprecia el transmisor y los componentes:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_1E4mCW_pDlM/TLsbIPumGII/AAAAAAAAEbk/m1-PgzDkwEI/s1600/tx-kh2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" ex="true" height="260" src="http://4.bp.blogspot.com/_1E4mCW_pDlM/TLsbIPumGII/AAAAAAAAEbk/m1-PgzDkwEI/s320/tx-kh2.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Observa que la placa RX tiene conectada una salida digital a la entrada digital del DAQ para que podamos leerla desde el PC. Ambas placas tienen una batería tipo botón CR2032 de 3V, así podemos colocar el transmisor en cualquier lugar con el sensor que necesitemos, presencia, vibración, etc y hacer experimentos remotos!&lt;br /&gt;&lt;br /&gt;Estos módulos pueden utilizarse con cualquier tarjeta de adquisición de datos que tenga entradas digitales (todas!!) y permiten realizar prácticas educativas sin cables incrementando la motivación del alumno que realiza los experimentos, ya sea en prácticas universitarias o en ciclos formativos relacionado con la electrónica.&lt;br /&gt;&lt;br /&gt;Al hacer algunas pruebas enviado datos desde el TX, se aprecia un retardo considerable, si la señal del sensor es demasiado rápida, el RX no es capaz de detectarla, ésto me ha sugerido hacer algunos cambios en la placa añadiendo un microcontrolador, de este modo, podremos escribir el código en el micro y gestionará las entradas de los sensores. Por ejemplo podremos mantener al TX enviando una señal de alarma durante un tiempo o descartar señales muy rápidas.&lt;br /&gt;&lt;br /&gt;Aquí os pongo el esquema del TX modificado para incluir un microcontrolador, es el que aparece en primer lugar, justo después está el módulo TX (&lt;a href="http://www.linxtechnologies.com/"&gt;Lynx&lt;/a&gt;) y a su derecha el DIP para configurar el código TX-RX.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_1E4mCW_pDlM/TLsamBLJF_I/AAAAAAAAEbg/_Z_QnVw7nSU/s1600/Trans.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" ex="true" height="226" src="http://4.bp.blogspot.com/_1E4mCW_pDlM/TLsamBLJF_I/AAAAAAAAEbg/_Z_QnVw7nSU/s320/Trans.bmp" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Quieres ayudar a diseñar el módulo, envíame un correo!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-7932620786566240873?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/7932620786566240873/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=7932620786566240873&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/7932620786566240873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/7932620786566240873'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/06/rf-digital-sensor-remoto.html' title='rf sensor digital remoto para usar con DAQ'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_1E4mCW_pDlM/TBFPdyy8bDI/AAAAAAAAEO4/_4QqiNJhyrs/s72-c/copia+de+IMGP1708.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-8728547532433798595</id><published>2010-06-04T20:54:00.015+02:00</published><updated>2010-06-05T15:47:48.191+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programación C'/><category scheme='http://www.blogger.com/atom/ns#' term='keil'/><category scheme='http://www.blogger.com/atom/ns#' term='puertos'/><title type='text'>Problema de puertos con sentencias "if"</title><content type='html'>Usando un sistema MCS-51, se pretende controlar un sistema de entradas y salidas según la tabla siguiente:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_1E4mCW_pDlM/TAlMnBy8-TI/AAAAAAAAEN4/vHsE7wKy4mY/s1600/tabla.png"&gt;&lt;img style="margin: 0px 10px 10px 0px; width: 400px; float: left; height: 177px;" id="BLOGGER_PHOTO_ID_5478994655053674802" alt="" src="http://4.bp.blogspot.com/_1E4mCW_pDlM/TAlMnBy8-TI/AAAAAAAAEN4/vHsE7wKy4mY/s400/tabla.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Observa que las entradas están asociadas al puerto “P0” y corresponden a los bits 5, 6 y 7 (los tres de la parte alta). Las salidas están asociadas al puerto “P1” y corresponden a los bits 0, 1 y 4. Puedes resolver el problema usando “sbits” o desplazando la posición de los bits.&lt;br /&gt;&lt;br /&gt;Se pide escribir un programa en C que resuelva el requerimiento. Define los registros “sfr” necesarios y el bloque principal del programa. Comprueba con Keil que funciona.&lt;br /&gt;&lt;br /&gt;El procedimiento para resolverlo va a ser definir los “sbits” necesarios (entradas y salidas). Puedes ver como se han definido los "sfr" y "sbits" necesarios:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_1E4mCW_pDlM/TApHk_zxiII/AAAAAAAAEOg/qcThENCHei4/s1600/def_registros.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 367px;" src="http://1.bp.blogspot.com/_1E4mCW_pDlM/TApHk_zxiII/AAAAAAAAEOg/qcThENCHei4/s400/def_registros.png" alt="" id="BLOGGER_PHOTO_ID_5479270597579081858" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Para detectar cada una de las combinaciones de entrada, utilizamos sentencias “if”. Como hay sólo cuatro casos, no es excesivamente complicado hacerlo de esta manera:&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1E4mCW_pDlM/TApFrCSDKJI/AAAAAAAAEOY/K9UWmw8haoo/s1600/sentencias.png"&gt;&lt;img style="cursor: pointer; width: 379px; height: 476px;" src="http://4.bp.blogspot.com/_1E4mCW_pDlM/TApFrCSDKJI/AAAAAAAAEOY/K9UWmw8haoo/s400/sentencias.png" alt="" id="BLOGGER_PHOTO_ID_5479268502298896530" border="0" /&gt;&lt;/a&gt;&lt;/p&gt; En la figura anterior tienes cuatro condiciones “if” que supervisan los cuatro estados a detectar en las entradas. Son sentencias independientes, cada una “vigila” una combinación única. Si en las entradas aparece una entrada &lt;em&gt;no contemplada&lt;/em&gt; en alguna sentencia “if” sencillamente, el programa &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;no hace absolutamente nada&lt;/span&gt;, no la tiene en cuenta. Esta acción de omisión puede generar un problema.&lt;br /&gt;&lt;br /&gt;Imagina que se ha detectado la entrada “000”, el programa la detecta con el primer “if” y activa las salidas “000”. Ahora las entradas cambian a “011”, una combinación que no detecta ningún “if”, el programa no hace nada y las salidas mantienen la activación anterior. Aquí está el problema, &lt;span style="color: rgb(204, 0, 0); font-weight: bold;font-size:100%;" &gt;&lt;strong&gt;nuestro programa está manteniendo activas unas salidas cuando detecta una combinación de entradas inexistente, es decir, se activan las salidas cuando no toca&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para resolver este problema, hay que asegurarse de que el programa detecte el caso “ninguno de los anteriores”. Esto se consigue agrupando las sentencias “else if” en un bloque único donde se comprueban una a una las condiciones y si ninguna cumple, se activa la sentencia “else” final. La condición final pondrá una determinada combinación en las salidas (a determinar). Esto contesta a la nota que se plantea al final del problema:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_1E4mCW_pDlM/TApI34jnecI/AAAAAAAAEOo/lrpjviL6eEA/s1600/elseif.png"&gt;&lt;img style="cursor: pointer; width: 358px; height: 400px;" src="http://3.bp.blogspot.com/_1E4mCW_pDlM/TApI34jnecI/AAAAAAAAEOo/lrpjviL6eEA/s400/elseif.png" alt="" id="BLOGGER_PHOTO_ID_5479272021561407938" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Nota&lt;/strong&gt;: Como última consideración, ¿qué pasaría si después de detectar la combinación “000”, en las entradas apareciera un “011”, una entrada no contemplada?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-8728547532433798595?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/8728547532433798595/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=8728547532433798595&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/8728547532433798595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/8728547532433798595'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/06/problema-de-puertos.html' title='Problema de puertos con sentencias &quot;if&quot;'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_1E4mCW_pDlM/TAlMnBy8-TI/AAAAAAAAEN4/vHsE7wKy4mY/s72-c/tabla.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-4262134930863027990</id><published>2010-06-01T13:54:00.016+02:00</published><updated>2010-06-05T14:57:07.294+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='temporizadores'/><category scheme='http://www.blogger.com/atom/ns#' term='Programación C'/><category scheme='http://www.blogger.com/atom/ns#' term='keil'/><title type='text'>Ejemplo de temporizadores sin usar calculadora</title><content type='html'>&lt;strong&gt;T&lt;span style="font-weight: bold;"&gt;emporiza 6 segundos con el timer T0 (v.1.1)&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Se desea supervisar un sensor (S0) con un microcontrolador compatible 8051. El sensor “S0” está conectado al bit 4 del puerto “P1”. Cuando se detecta un nivel bajo en el sensor “S0”, el bit 7 del puerto “P0” deberá ponerse a nivel alto e iniciarse una temporización de 6 segundos. Cuando finalice este tiempo, el bit 7 del puerto “P0” deberá ponerse a nivel bajo.&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_1E4mCW_pDlM/TAklvDn1vbI/AAAAAAAAENg/4_DbzxksKwM/s1600/timer.png"&gt;&lt;img style="margin: 0px 10px 10px 0px; width: 395px; float: left; height: 140px;" id="BLOGGER_PHOTO_ID_5478951912029404594" alt="" src="http://1.bp.blogspot.com/_1E4mCW_pDlM/TAklvDn1vbI/AAAAAAAAENg/4_DbzxksKwM/s400/timer.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Se pide:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Realizar un programa en C que implemente la especificación anterior. Para ello, se deberá contemplar la programación de los registros involucrados (“sfr”), los bits necesarios y la utilización de las variables. La temporización se realizará por encuestas (sin utilizar interrupciones). Considérese que el reloj del sistema funciona a 12 Mhz.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solución&lt;/strong&gt;:&lt;br /&gt;&lt;br /&gt;Como nos piden una temporización grande, usaremos el modo 1 (16 bits).&lt;br /&gt;desbordamientos_enteros: 6000000/65536=91&lt;br /&gt;resto: 6000000-(91*65536)=36224 (un desborde parcial).&lt;br /&gt;&lt;br /&gt;Por lo tanto debemos realizar:&lt;br /&gt;&lt;br /&gt;- 91 desbordamientos completos (timer empieza en cero) y&lt;br /&gt;- 1 desbordamiento parcial (timer no empieza en cero).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_1E4mCW_pDlM/TAkqRUqdwhI/AAAAAAAAENo/CFN7R4Ms6eg/s1600/desbordes.png"&gt;&lt;img style="margin: 0px 10px 10px 0px; width: 398px; float: left; height: 370px;" id="BLOGGER_PHOTO_ID_5478956898765881874" alt="" src="http://2.bp.blogspot.com/_1E4mCW_pDlM/TAkqRUqdwhI/AAAAAAAAENo/CFN7R4Ms6eg/s400/desbordes.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;* Sin calculadora, se deja indicado:&lt;br /&gt;desbordamientos_enteros: 6000000/65536 (91)&lt;br /&gt;resto: 6000000 % 65536 (36224)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El desbordamiento parcial debe temporizar resto (36224 microsegundos).&lt;br /&gt;Para cargar “TH0” y “TL0” con esta cuenta inicial, debemos, como siempre, restar del valor total del temporizador:&lt;br /&gt;&lt;br /&gt;cuenta_inicial=65536-36224 = 29312 = 0x7280&lt;br /&gt;TH0 = 0x72;&lt;br /&gt;TL0 = 0x80;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;* Sin calculadora, se deja indicado:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;cuenta_inicial=65536-resto&lt;br /&gt;TH = cuenta_inicial/256;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;TL= cuenta_inicial % 256;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Esta operación anterior “separa” un valor de 16 bits en dos registros de 8 bits. Se hace así porque este micro no permite la asignación de un registro de 16 bits en una operación única.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Ejemplo del programa:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;font-size:85%;"  &gt;&lt;strong&gt;void main (void){&lt;br /&gt;&lt;br /&gt;TR1=0;&lt;br /&gt;P0=0x01; // configura línea 0 del puerto P0 como entrada&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;font-size:85%;"  &gt;&lt;strong&gt;TMOD=0x01; // modo temporizador, gate=0, modo 16 bits&lt;br /&gt;&lt;br /&gt;while (1){&lt;br /&gt;desbordes=92;&lt;br /&gt;if (s0 == 0) {&lt;br /&gt;salida = 1;&lt;br /&gt;TH0 = 29312/256; // carga parcial &lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;font-size:85%;"  &gt;&lt;strong&gt;TL0= 29312 % 256; // carga parcial&lt;br /&gt;TR0=1;&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-size:0pt;"&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;font-size:85%;"  &gt;&lt;strong&gt;// puesta en marcha del timer&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;…terminarlo y probarlo…&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-4262134930863027990?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/4262134930863027990/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=4262134930863027990&amp;isPopup=true' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/4262134930863027990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/4262134930863027990'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/06/ejemplo-de-temporizadores-sin-usar.html' title='Ejemplo de temporizadores sin usar calculadora'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_1E4mCW_pDlM/TAklvDn1vbI/AAAAAAAAENg/4_DbzxksKwM/s72-c/timer.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-5163355493334451033</id><published>2010-06-01T00:39:00.002+02:00</published><updated>2010-06-01T00:43:47.064+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='problemas pre-examen'/><title type='text'>Problemas pre-examen</title><content type='html'>Os he preparado dos problemas tipo examen para que repaséis conceptos, un problema de puertos y otro de timers resolviéndolo con interrupciones.&lt;br /&gt;&lt;br /&gt;Los resolveremos en clase y los probaremos con el compilador Keil. Para los que no estéis en el aula, podéis resolverlo en casa y mandar vuestras dudas por correo o al blog.&lt;br /&gt;&lt;br /&gt;En un par de días publicaré las soluciones.&lt;br /&gt;Descargar &lt;a href="http://www.bitschips.com/infoind/problemas_pre_examen_1.pdf"&gt;aquí&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Mucho ánimo!!&lt;br /&gt;Luis Escolar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-5163355493334451033?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/5163355493334451033/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=5163355493334451033&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/5163355493334451033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/5163355493334451033'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/06/problemas-pre-examen.html' title='Problemas pre-examen'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-2591707156212983900</id><published>2010-05-24T19:52:00.002+02:00</published><updated>2010-05-24T20:14:31.570+02:00</updated><title type='text'>Discusión sobre el retardo al medir señales con interrupciones</title><content type='html'>..comentar..&lt;br /&gt;posibles soluciones:&lt;br /&gt;- media&lt;br /&gt;- dividir frecuencia&lt;br /&gt;&lt;br /&gt;diferencia en ejecución / zonas de memoria volatile&lt;br /&gt;&lt;br /&gt;bloques atómicos con EA=0....EA=1, para evitar que se corrompan los datos..&lt;br /&gt;el punto crítico puede ser cuando la señal es muy rápida...la interrupción se producirá un tiempo después o quizá no se produzca, dependerá del sistema..de la cola de interrupciones..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-2591707156212983900?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/2591707156212983900/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=2591707156212983900&amp;isPopup=true' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/2591707156212983900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/2591707156212983900'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/05/discusion-sobre-el-retardo-al-medir.html' title='Discusión sobre el retardo al medir señales con interrupciones'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-6256920126338632528</id><published>2010-05-11T13:42:00.005+02:00</published><updated>2010-06-05T15:53:36.078+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='errores de programación'/><category scheme='http://www.blogger.com/atom/ns#' term='Programación C'/><category scheme='http://www.blogger.com/atom/ns#' term='Prácticas microcontroladores'/><category scheme='http://www.blogger.com/atom/ns#' term='puertos'/><title type='text'>Definir puertos como entradas o salidas</title><content type='html'>Cuando vamos a utilizar los puertos para leer sensores o manejar actuadores debemos especificar si estos puertos serán entradas o salidas, es decir, definir la dirección de los datos.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Para definir todas las líneas del puerto "P0" como entradas:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255); font-weight: bold;"&gt;P0 = 0xFF; // todos los bits del puerto cero como entradas&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Para definir un puerto como salidas, no hace falta hacer nada, en este micro, por defecto están configurados como salidas.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Puedes ver un ejemplo en el siguiente código.&lt;br /&gt;Este programa lee un bit del puerto "P0" y activa una salida en el puerto "P1":&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255); font-family: courier new; font-style: italic; font-weight: bold;font-size:100%;" &gt;sfr  P0=0x80;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);font-size:100%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255); font-family: courier new; font-style: italic; font-weight: bold;font-size:100%;" &gt;sfr  P1=0x90;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);font-size:100%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255); font-family: courier new; font-style: italic; font-weight: bold;font-size:100%;" &gt;sbit P0_0=P0^0;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);font-size:100%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255); font-family: courier new; font-style: italic; font-weight: bold;font-size:100%;" &gt;sbit P1_7=P1^7;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);font-size:100%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255); font-family: courier new; font-style: italic; font-weight: bold;font-size:100%;" &gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);font-size:100%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255); font-family: courier new; font-style: italic; font-weight: bold;font-size:100%;" &gt;void main(void){&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);font-size:100%;" &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255); font-weight: bold; font-family: courier new; font-style: italic;font-size:100%;" &gt;P0=0xFF; // definimos todo el puerto P0 como entradas&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);font-size:100%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255); font-weight: bold; font-family: courier new; font-style: italic;font-size:100%;" &gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);font-size:100%;" &gt;&lt;span style="font-family: courier new; font-style: italic;"&gt;// el puerto P1 configurado como salida por defecto&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255); font-family: courier new; font-style: italic; font-weight: bold;font-size:100%;" &gt;while (1){&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);font-size:100%;" &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255); font-family: courier new; font-style: italic; font-weight: bold;font-size:100%;" &gt;if (P0_0==0) P1_7=1; // comprueba nivel bit P0.0&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);font-size:100%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255); font-family: courier new; font-style: italic; font-weight: bold;font-size:100%;" &gt;else P1_7=0; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);font-size:100%;" &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255); font-family: courier new; font-style: italic; font-weight: bold;font-size:100%;" &gt;}&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);font-size:100%;" &gt;&lt;span style="font-family: courier new; font-style: italic;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;Nota: &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Si no tienes en cuenta este paso definiendo la dirección de los datos, cuando simules en el compilador Keil, tendrás un error y en ocasiones el programa podrá terminar inesperadamente.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;Prueba a compilar y simular este programa sin definir la dirección de los puertos y observa como al cambiar el estado de los bits en los puertos, el programa se bloquea (trabajando con la versión 2 de Keil).&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-6256920126338632528?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/6256920126338632528/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=6256920126338632528&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/6256920126338632528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/6256920126338632528'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/05/definir-puertos-como-entradas-o-salidas.html' title='Definir puertos como entradas o salidas'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-4767494693836252751</id><published>2010-04-27T12:26:00.001+02:00</published><updated>2010-04-27T12:26:50.314+02:00</updated><title type='text'>Ejercicio con dos temporizadores</title><content type='html'>&lt;pre&gt;sfr TMOD=0x89; sfr  TCON=0x88; sfr  TH0=0x8C; sfr  TL0=0x8A; sfr  TH1=0x8D; sfr&lt;br /&gt;TL1=0x8B; sfr  P2=0xA0; sfr  P3=0xB0;&lt;br /&gt;sbit P3_0=P3^0; sbit  P3_1=P3^1; sbit  P2_0=P2^0; sbit  TF0=TCON^5; sbit&lt;br /&gt;TRO=TCON^4; sbit  TF1=TCON^7; sbit  TR1=TCON^6;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;void main(void){&lt;br /&gt;int desbordes=0,cont=0;&lt;br /&gt;TMOD=0x11;&lt;br /&gt;TH0=0xD8;&lt;br /&gt;TL0=0xEF;&lt;br /&gt;TL1=0xA3;&lt;br /&gt;TH1=0x3E;&lt;br /&gt;TF0=0;&lt;br /&gt;TF1=0;&lt;br /&gt;P3_0=0;&lt;br /&gt;if(cont&lt;10){&lt;br /&gt;          if(P2_0==1){&lt;br /&gt;        TRO=1;&lt;br /&gt;                     P3_0=1;&lt;br /&gt;                     while(!TF0){}&lt;br /&gt;                     P3_0=0; P3_1=1;&lt;br /&gt;        TR1=1;&lt;br /&gt;                     while(desbordes&lt;2){&lt;br /&gt;                                       if(TF1==1){&lt;br /&gt;                      desbordes++;&lt;br /&gt;                                           TR1=0;&lt;br /&gt;               TL1=0xA3;&lt;br /&gt;                      TH1=0x3E;&lt;br /&gt;               TR1=1;&lt;br /&gt;        TF1=0;&lt;br /&gt;        }&lt;br /&gt;     }&lt;br /&gt;                     P3_0=1; P3_1=0;&lt;br /&gt;                     cont++;&lt;br /&gt;        }&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-4767494693836252751?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/4767494693836252751/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=4767494693836252751&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/4767494693836252751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/4767494693836252751'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/04/ejercicio-con-dos-temporizadores.html' title='Ejercicio con dos temporizadores'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-95041015262526138</id><published>2010-04-13T08:41:00.004+02:00</published><updated>2010-05-04T09:30:31.242+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Teoría'/><category scheme='http://www.blogger.com/atom/ns#' term='cuestionarios'/><title type='text'>Lección temporizadores y contadores</title><content type='html'>Lección sobre el uso de los temporizadores y contadores (&lt;a href="http://www.bitschips.com/infoind/t_temporizadores.pdf"&gt;Descargar&lt;/a&gt;)&lt;br /&gt;Cuestionario de repaso (&lt;a href="http://www.bitschips.com/infoind/c_temporizadores.pdf"&gt;Descargar&lt;/a&gt;)&lt;br /&gt;Segundo cuestionario de repaso (&lt;a href="http://www.bitschips.com/infoind/ej_tempo.pdf"&gt;Descargar&lt;/a&gt;)&lt;br /&gt;Entendiendo los temporizadores (Descargar)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;ref. fecha inicial publicación 21 Abril 2009&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-95041015262526138?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/95041015262526138/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=95041015262526138&amp;isPopup=true' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/95041015262526138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/95041015262526138'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2009/04/leccion-temporizadores-y-contadores.html' title='Lección temporizadores y contadores'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-801950009989090613</id><published>2010-03-30T23:03:00.001+02:00</published><updated>2010-03-30T23:09:08.352+02:00</updated><title type='text'>Ejercicio de C</title><content type='html'>sfr P1 = 0x90; // definimos el puerto completo&lt;br /&gt;// definimos las entradassbit e0 = P1^0; // bit 0 del puerto (entrada e0)sbit e1 = P1^1; // bit 1 del puerto (entrada e1)&lt;br /&gt;// definimos las salidassbit s0 = P1^4; // bit 4 del puerto (salida s0)sbit s1 = P1^5; // bit 5 del puerto (salida s1)sbit s2 = P1^6; // bit 6 del puerto (salida s2 de error)while (1) {&lt;br /&gt;if(e0==0 &amp;amp;&amp;amp; e1==0){&lt;br /&gt; s0=1; s1=1; s2=0;}&lt;br /&gt;if(e0==0 &amp;amp;&amp;amp; e1==1){&lt;br /&gt; s0=0; s1=0; s2=1;}&lt;br /&gt;if(e0==1 &amp;amp;&amp;amp; e1==0){&lt;br /&gt; s0=0; s1=1; s2=0;}&lt;br /&gt;if(e0==1 &amp;amp;&amp;amp; e1==1){&lt;br /&gt; s0=0; s1=0; s2=0;}}&lt;br /&gt;&lt;br /&gt;Solución de:&lt;br /&gt;Sergio P.&lt;br /&gt;Israel V.&lt;br /&gt;Rocio T.&lt;br /&gt;Alberto N.&lt;br /&gt;Nicolas G.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-801950009989090613?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/801950009989090613/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=801950009989090613&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/801950009989090613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/801950009989090613'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/03/ejercicio-de-c.html' title='Ejercicio de C'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-755179094415958099</id><published>2010-03-30T21:31:00.004+02:00</published><updated>2010-03-30T21:36:43.789+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bibliografía'/><title type='text'>Bibliografía</title><content type='html'>&lt;strong&gt;Microcontrolador PIC16F84 · &lt;/strong&gt;&lt;strong&gt;Desarrollo de proyectos&lt;/strong&gt;&lt;br /&gt;Enrique Palacios, Fernando Remiro, Lucas J. López&lt;br /&gt;Editorial Ra-Ma&lt;br /&gt;ISBN-84-7897-600-0 · 2003&lt;br /&gt;&lt;a href="http://www.pic16f84a.org/"&gt;http://www.pic16f84a.org/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-755179094415958099?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/755179094415958099/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=755179094415958099&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/755179094415958099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/755179094415958099'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/03/bibliografia.html' title='Bibliografía'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-5837006707832386449</id><published>2010-03-29T17:38:00.011+02:00</published><updated>2010-03-30T02:04:10.370+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='clase 5'/><title type='text'>Puertos de E/S digital</title><content type='html'>&lt;a href="http://www.bitschips.com/infoind/puertos.pdf"&gt;Teoría&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.bitschips.com/infoind/ports%28english%29.pdf"&gt;Teoría (inglés)&lt;/a&gt; desde la página 6&lt;br /&gt;&lt;a href="http://www.bitschips.com/infoind/c_puertos_2.pdf"&gt;Cuestionario&lt;/a&gt;&lt;br /&gt;Solución (la semana que viene)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ejercicio&lt;/span&gt;: En este caso vamos a utilizar el puerto P1 como Entrada/Salida. Los 4 bits de menor peso serán las entradas (e3 e2 e1 e0) y el resto serán las salidas (e7 e6 e5 e4).&lt;br /&gt;&lt;br /&gt;entradas e0 e1 e2 e3 -- P1.0 P1.1 P1.2 P1.3&lt;br /&gt;salidas s0 s1 s2 s3 -- P1.4 P1.5 P1.6 P1.7&lt;br /&gt;&lt;br /&gt;Escribir un programa en C que genere la siguiente secuencia:&lt;br /&gt;&lt;br /&gt;entradas  salidas (bin hex dec)&lt;br /&gt;0000 -&gt; 0100 0x4 4&lt;br /&gt;0001 -&gt; 1001 0x9 9&lt;br /&gt;0010 -&gt; 1011 0xB 11&lt;br /&gt;0011 -&gt; 0110 0x6 6&lt;br /&gt;0100 -&gt; 0101 0x5 5&lt;br /&gt;0101 -&gt; 1101 0xD 13&lt;br /&gt;0110 -&gt; 1111 0xF 15&lt;br /&gt;0111 -&gt; 1100 0xC 12&lt;br /&gt;1000 -&gt; 1010 0xA 10&lt;br /&gt;1001 -&gt; 1000 0x8 8&lt;br /&gt;1010 -&gt; 0111 0x7 7&lt;br /&gt;1011 -&gt; 0000 0x0 0&lt;br /&gt;1100 -&gt; 0010 0x2 2&lt;br /&gt;1101 -&gt; 1110 0xE 14&lt;br /&gt;1110 -&gt; 0001 0x1 1&lt;br /&gt;1111 -&gt; 0011 0x3 3&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Nota&lt;/span&gt;: tener en cuenta que hay que configurar los bits del puerto como entrada o salida.&lt;br /&gt;&lt;br /&gt;...................................................................&lt;br /&gt;&lt;br /&gt;Cuando se usa un puerto -- hay que definirlo como entrada o salida&lt;br /&gt;Si el puerto es de entrada -- valores a "1"&lt;br /&gt;&lt;br /&gt;Conceptos:&lt;br /&gt;- Lectura de pins y escritura latchs&lt;br /&gt;- Operación lectura-modificación-escritura&lt;br /&gt;- Manipulación bit a bit&lt;br /&gt;- Sólo ciertas zonas lo admiten&lt;br /&gt;&lt;br /&gt;Bibliografía:&lt;br /&gt;&lt;a href="http://books.google.es/books?id=5PDx2Q9Ea_YC&amp;amp;pg=PA34&amp;amp;lpg=PA34&amp;amp;dq=microcontroller+port+latch&amp;amp;source=bl&amp;amp;ots=uAsxT7Uvhs&amp;amp;sig=Dt3nuSuGEyaJK1QjcymfXGIo9Ac&amp;amp;hl=es&amp;amp;ei=oDWxS6f_BYKJ4gax8MyvAg&amp;amp;sa=X&amp;amp;oi=book_result&amp;amp;ct=result&amp;amp;resnum=4&amp;amp;ved=0CBgQ6AEwAw#v=onepage&amp;amp;q=microcontroller%20port%20latch&amp;amp;f=false"&gt;Microcontrollers: theory and applications&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Links:&lt;br /&gt;&lt;a href="http://www.8051projects.info/ebooks.asp"&gt;8051 Forum (free ebooks)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.bitschips.com/infoind/chap4%288051%29.ppt"&gt;8051 Ports&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.cornerstonerobotics.org/curriculum/lessons_year2/erii_rmw_problem.pdf"&gt;Problema de lectura-modificacion-escritura explicado&lt;/a&gt;&lt;br /&gt;&lt;a href="http://es.wikipedia.org/wiki/Latch"&gt;Definición de latch (wikipedia)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;Ejemplo a revisar:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;sfr P2=0xA0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;sbit pulsador =P2^1;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;sbit rele=P2^0;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;void main(void) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;rele=1;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;pulsador=1;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;}&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-5837006707832386449?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/5837006707832386449/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=5837006707832386449&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/5837006707832386449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/5837006707832386449'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/03/puertos-de-es-digital.html' title='Puertos de E/S digital'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-6628491020477518195</id><published>2010-03-26T18:54:00.018+01:00</published><updated>2010-03-30T22:32:34.250+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='errores de programación'/><category scheme='http://www.blogger.com/atom/ns#' term='vuestras dudas'/><category scheme='http://www.blogger.com/atom/ns#' term='Prácticas microcontroladores'/><category scheme='http://www.blogger.com/atom/ns#' term='keil'/><category scheme='http://www.blogger.com/atom/ns#' term='clase 4'/><title type='text'>Error "Access violation at"...al depurar</title><content type='html'>Diego (curso 2009-2010) escribe un programa, lo compila con Keil y comienza la depuración. Empieza a usar "F11" para ejecutar paso a paso y encuentra el siguiente error:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_1E4mCW_pDlM/S60DukPRi7I/AAAAAAAAEM0/ae2O683JT3Q/s1600/error.PNG"&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_1E4mCW_pDlM/S61WWawShmI/AAAAAAAAEM8/VEu87BM7uTg/s1600/error.png"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 393px; FLOAT: left; HEIGHT: 109px" id="BLOGGER_PHOTO_ID_5453109666954511970" border="0" alt="" src="http://3.bp.blogspot.com/_1E4mCW_pDlM/S61WWawShmI/AAAAAAAAEM8/VEu87BM7uTg/s400/error.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt;El código es el siguiente:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;sfr P1=0x90;&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;sfr P2=0xA0;&lt;br /&gt;&lt;/span&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;void main(void)&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;{int i;&lt;br /&gt;&lt;/span&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;i=P1&amp;0x07; &lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;switch(i){&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;case 0:P2=0x3f; break;&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;case 1:P2=0x06; break;&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;case 2:P2=0x5b; break; }&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Cuando se graba un programa en el micro, empieza a ejecutarse inmediatamente desde el punto de entrada (main). Si te fijas, en el programa del ejemplo, sólo se ejecuta una vez ya que no está dentro de ningún bucle.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;En un microcontrolador hay que 'encerrar' al programa en un bucle infinito&lt;/span&gt;&lt;/em&gt; (dentro de un "while"). El motivo es que al grabar el programa en la memoria y comienza la ejecución si no tiene un bucle rápidamente llega al final, pero no se detiene y sigue buscando instrucciones en las posiciones de memoria siguientes, pero como no encuentra nada 'coherente' se genera un error de ejecución. Por lo tanto el programa escrito correctamente sería:&lt;br /&gt;&lt;br /&gt;sfr P1=0x90;&lt;br /&gt;sfr P2=0xA0;&lt;br /&gt;void main(void)&lt;br /&gt;{&lt;br /&gt;int i;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;&lt;strong&gt;while(1) {&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;i=P1&amp;0x07;&lt;br /&gt;switch(i){&lt;br /&gt;case 0:P2=0x3f; break;&lt;br /&gt;case 1:P2=0x06; break;&lt;br /&gt;case 2:P2=0x5b; break; }&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-6628491020477518195?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/6628491020477518195/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=6628491020477518195&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/6628491020477518195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/6628491020477518195'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/03/un-alumno-compila-un-programa-y.html' title='Error &quot;Access violation at&quot;...al depurar'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_1E4mCW_pDlM/S61WWawShmI/AAAAAAAAEM8/VEu87BM7uTg/s72-c/error.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-6407496253984592245</id><published>2010-03-23T16:39:00.002+01:00</published><updated>2010-03-23T16:40:07.587+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ensamblador'/><title type='text'>Saltos relativos</title><content type='html'>&lt;span style="color: rgb(204, 204, 204);"&gt;explicar...&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-6407496253984592245?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/6407496253984592245/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=6407496253984592245&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/6407496253984592245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/6407496253984592245'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/03/saltos-relativos.html' title='Saltos relativos'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-5222472403274039412</id><published>2010-03-23T16:39:00.001+01:00</published><updated>2010-03-23T16:39:47.280+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ensamblador'/><title type='text'>Modos de direccionamiento</title><content type='html'>&lt;span style="color: rgb(204, 204, 204);"&gt;Explicar..&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-5222472403274039412?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/5222472403274039412/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=5222472403274039412&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/5222472403274039412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/5222472403274039412'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/03/modos-de-direccionamiento.html' title='Modos de direccionamiento'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-4911986719647252486</id><published>2010-03-23T16:38:00.003+01:00</published><updated>2010-03-23T16:39:03.071+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ensamblador'/><title type='text'>Sintaxis de las instrucciones en ensamblador</title><content type='html'>&lt;span style="color: rgb(204, 204, 204);"&gt;MOV destino, fuente..(poner ejemplos) y comparar..(pendiente)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-4911986719647252486?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/4911986719647252486/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=4911986719647252486&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/4911986719647252486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/4911986719647252486'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/03/sintaxis-de-las-instrucciones-en.html' title='Sintaxis de las instrucciones en ensamblador'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-7536322133398821414</id><published>2010-03-23T16:37:00.001+01:00</published><updated>2010-03-23T16:37:58.167+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ensamblador'/><title type='text'>Distintos microcontroladores tienen distintas instrucciones</title><content type='html'>...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-7536322133398821414?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/7536322133398821414/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=7536322133398821414&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/7536322133398821414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/7536322133398821414'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/03/distintos-microcontroladores-tienen.html' title='Distintos microcontroladores tienen distintas instrucciones'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-7077619579796639354</id><published>2010-03-23T16:24:00.005+01:00</published><updated>2010-03-27T02:01:51.867+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='errores de programación'/><category scheme='http://www.blogger.com/atom/ns#' term='Programación C'/><category scheme='http://www.blogger.com/atom/ns#' term='vuestras dudas'/><category scheme='http://www.blogger.com/atom/ns#' term='clase 4'/><title type='text'>No olvides el punto de entrada al programa</title><content type='html'>&lt;span style="COLOR: rgb(0,0,0)"&gt;Intenta compilar este programa utilizando Keil:&lt;br /&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;sfr P1 = 0x90; &lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;sbit e0 = P1^0;&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;sbit e1 = P1^1; &lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;sbit s0 = P1^4; &lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;sbit s1 = P1^5; &lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;while (1) {&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;if (e0==0 &amp;amp;&amp;amp; e1==0){s0=1;s1=1;}&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En un programa escrito en Keil, tenemos dos bloques:&lt;br /&gt;1.- La definición de los registros a utilizar (sfr) y&lt;br /&gt;2.- Punto de entrada del programa (main).&lt;br /&gt;&lt;br /&gt;En el código anterior, no se ha incluido el segundo bloque, por lo tanto al intentar compilar el programa se produce un error. Recuerda que todo programa debe tener un punto de arranque, por donde empieza la ejecución. Si no incluyes el "main", nuestro programa no funcionará. La versión correcta del programa sería:&lt;br /&gt;&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt;&lt;br /&gt;// definición de registros&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;sfr P1 = 0x90; &lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;sbit e0 = P1^0;&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;sbit e1 = P1^1;&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;sbit s0 = P1^4;&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;sbit s1 = P1^5;&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt;// punto de entrada del programa&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;void main(void) {&lt;br /&gt;&lt;/strong&gt;while (1) {&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;if (e0==0 &amp;amp;&amp;amp; e1==0)&lt;br /&gt;{s0=1;s1=1;}&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;}&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-7077619579796639354?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/7077619579796639354/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=7077619579796639354&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/7077619579796639354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/7077619579796639354'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/03/la-definicion-de-los-registros-fuera.html' title='No olvides el punto de entrada al programa'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-5343598255164462695</id><published>2010-03-23T00:27:00.011+01:00</published><updated>2010-03-23T16:39:26.277+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cuestionarios'/><category scheme='http://www.blogger.com/atom/ns#' term='clase 4'/><title type='text'>Cuestionario Ensamblador</title><content type='html'>&lt;a href="http://www.bitschips.com/infoind/ciclos_y_tiempos.pdf"&gt;Ciclos de máquina y tiempos de ejecución&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.bitschips.com/infoind/c_asm_1.pdf"&gt;Cuestionario&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.bitschips.com/infoind/c_asm_puertos.pdf"&gt;Cuestionario 2 (opcional)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://infoind-etsid-upv.blogspot.com/2010/03/practica-c-keil.html"&gt;Práctica&lt;/a&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;230310.v1.0&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-5343598255164462695?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/5343598255164462695/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=5343598255164462695&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/5343598255164462695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/5343598255164462695'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/03/blog-post.html' title='Cuestionario Ensamblador'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-4741000239153926270</id><published>2010-03-22T23:16:00.007+01:00</published><updated>2010-03-27T02:02:30.363+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programación C'/><category scheme='http://www.blogger.com/atom/ns#' term='vuestras dudas'/><category scheme='http://www.blogger.com/atom/ns#' term='clase 3'/><title type='text'>No tengo claro cuando usar "if" o "while"...</title><content type='html'>Es una pregunta que me habéis hecho algunos alumnos. El caso es que hay veces que al programar surge la duda. Cuando compruebo una condición puedo utilizar ambas sentencias pero el funcionamiento del programa puede verse afectado si tomo una decisión equivocada.&lt;br /&gt;&lt;br /&gt;Pongamos un supuesto. Imagina un comedor. Muchos clientes levantando la mano solicitando atención. Tenemos a un camarero muy especial. Tiene la sorprendente capacidad de poder moverse a la velocidad de la luz. Si algún cliente le llama, se dirige al cliente y le pregunta lo que desea tomar.&lt;br /&gt;&lt;br /&gt;El camarero se dirige al cliente y se queda inmóvil esperando. Algunos clientes son rápidos, saben lo que quieren y le entregan al instante la información al camarero. Cuando el camarero recibe la petición, la procesa y la entrega al cliente de manera inmediata.&lt;br /&gt;&lt;br /&gt;Algunos clientes se piensan un poco el pedido, están dubitativos, no lo tienen claro o bien han cambiado de opinión. En este caso nuestro supercamarero se queda inmóvil mirando al cliente y espera...&lt;br /&gt;&lt;br /&gt;Imagina que el cliente se entretiene. El camarero está inmóvil pendiente del cliente.&lt;br /&gt;Si el cliente no se decide, el camarero seguirá inmóvil esperando. Otros clientes pueden haber levantado la mano, pero el camarero no puede atenderlos porque está bloqueado hasta que el cliente decida que ya no necesita atención.&lt;br /&gt;&lt;br /&gt;Este caso descrito representa el uso del "While". Cuando utilizamos esta sentencia, el programa queda bloqueado y "secuestra" el control hasta que la condición del "While" se libera. Con el uso de esta condición, el control del programa queda controlado por las condiciones. Si la condición no se libera (el cliente no se decide a pedir...) el programa (nuestro camarero) quede enganchado dentro de este bucle y no puede hacer nada más.&lt;br /&gt;&lt;br /&gt;El problema en esta circunstancia es que mientras el programa está encerrado en el bucle, NO puede hacer otra cosa (aunque otros clientes soliciten atención, nuestro camarero está ocupado). Por lo tanto, de esta manera, nuestro programa se queda aislado frente a otros eventos.&lt;br /&gt;&lt;br /&gt;En ciertas circunstancias, no hay más remedio que hacerlo de esta manera. Por ejemplo cuando el camarero atiende al cliente, espera cobrar por ello, por lo tanto, en este caso es obligado incluir una sentencia "While" (el camarero no se irá del lugar hasta que cobre).&lt;br /&gt;&lt;br /&gt;Cuando necesitamos que nuestro programa no siga adelante hasta que se cumpla una determinada condición usaremos "While" aún a riesgo de que el programa quede bloqueado hasta que se libere la condición.&lt;br /&gt;&lt;br /&gt;Si hubiéramos utilizado la sentencia "if", nuestro camarero hubiera podido atender a otros clientes si alguno no se decide. Como es muy rápido, mientras un cliente se piensa lo que desea tomar, es capaz de atender a muchos porque la sentencia "if" no es bloqueante.&lt;br /&gt;&lt;br /&gt;También puedes entenderlo con el siguiente ejemplo. Imagina un pasillo de un hospital, desde un extremo puedes ver todas las puertas de las habitaciones, incluso las más alejadas. También puedes ver los indicadores luminosos en la parte superior del marco de las puertas. Con una sentencia "if" puedes comprobar si algún paciente solicita atención porque puedes ver todos los indicadores luminosos. Sin embargo, si entras en una habitación para atender a un cliente, no podrás ver el resto de indicadores y no podrás atender al resto de clientes hasta que no salgas de la habitación (este caso sería usando "While").&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-4741000239153926270?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/4741000239153926270/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=4741000239153926270&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/4741000239153926270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/4741000239153926270'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/03/no-tengo-claro-cuando-usar-if-o-while.html' title='No tengo claro cuando usar &quot;if&quot; o &quot;while&quot;...'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-2635663340702278977</id><published>2010-03-11T11:26:00.009+01:00</published><updated>2010-03-23T13:48:58.084+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='clase 3'/><category scheme='http://www.blogger.com/atom/ns#' term='Prácticas microcontroladores'/><category scheme='http://www.blogger.com/atom/ns#' term='keil'/><title type='text'>Práctica en C con Keil · Control de un depósito</title><content type='html'>Escribir en C un programa que controle un depósito según las especificaciones:&lt;br /&gt;&lt;br /&gt;sensores (nivel) 1=detecta agua / 0=no detecta nivel&lt;br /&gt;entradas e0, e1 &gt; P1.0 P1.1&lt;br /&gt;&lt;br /&gt;motores (bombas) 1=on / 0=off&lt;br /&gt;salidas &gt; s0, s1 &gt; P1.4, P1.5&lt;br /&gt;&lt;br /&gt;indicador (error) &gt; salidas s2 P1.6&lt;br /&gt;&lt;br /&gt;Funcionamiento a programar&lt;br /&gt;e s&lt;br /&gt;00 011 llenar si depósito vacío&lt;br /&gt;01 100 parar bomba y emitir un error del sensor&lt;br /&gt;10 010 llenar si no lleno&lt;br /&gt;11 000 parar bomba si depósito vacío&lt;br /&gt;----&lt;br /&gt;&lt;br /&gt;Para definir loa puertos utilizamos sfr.&lt;br /&gt;Definamos los registros que necesitamos (P1):&lt;br /&gt;&lt;br /&gt;sfr P1 = 0x90; // definimos el puerto completo&lt;br /&gt;&lt;br /&gt;// definimos las entradas&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;sbit e0 = P1^0;  // bit 0 del puerto (entrada e0)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;sbit e1 = P1^1;  // bit 1 del puerto (entrada e1)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;// definimos las salidas&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;sbit s0 = P1^4;  // bit 4 del puerto (salida s0)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;sbit s1 = P1^5;  // bit 5 del puerto (salida s1)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;sbit s2 = P1^6; //  bit 6 del puerto (salida s2 de error)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;...a partir de aquí ya a programar...&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;...una solución posible:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;sfr P1 = 0x90; // definimos el puerto completo &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;// definimos las entradas&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;sbit e0 = P1^0; // bit 0 del puerto (entrada e0)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;sbit e1 = P1^1; // bit 1 del puerto (entrada e1)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;// definimos las salidas&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;sbit s0 = P1^4; // bit 4 del puerto (salida s0)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;sbit s1 = P1^5; // bit 5 del puerto (salida s1)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;sbit s2 = P1^6; // bit 6 del puerto (salida s2 de error)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;while (1) {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;if(e0==0 &amp;amp;&amp;amp; e1==0){&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;    s0=1;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;    s1=1;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;    s2=0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;if(e0==0 &amp;amp;&amp;amp; e1==1){&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;    s0=0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;    s1=0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;    s2=1;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;if(e0==1 &amp;amp;&amp;amp; e1==0){&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;    s0=0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;    s1=1;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;    s2=0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;if(e0==1 &amp;amp;&amp;amp; e1==1){&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;    s0=0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;    s1=0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;    s2=0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-2635663340702278977?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/2635663340702278977/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=2635663340702278977&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/2635663340702278977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/2635663340702278977'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/03/practica-c-keil.html' title='Práctica en C con Keil · Control de un depósito'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-3153854805246919004</id><published>2010-03-09T13:45:00.009+01:00</published><updated>2010-03-15T00:58:44.472+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='errores de programación'/><category scheme='http://www.blogger.com/atom/ns#' term='port redefinition'/><category scheme='http://www.blogger.com/atom/ns#' term='clase 3'/><category scheme='http://www.blogger.com/atom/ns#' term='autoevaluación'/><title type='text'>Inicializar las variables dentro del main</title><content type='html'>Tienes el siguiente programa escrito en C. El objeto del mismo es complementar todos los bits de el registro P0...&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;sfr P0 = 0x80; //define el puerto P0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;P0 = 0x00; // intentamos asignar un valor al puerto P0...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;void main (void) &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;{while (1)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;{P0=~P0;} &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;...pero al compilarlo en Keil obtienes el siguiente error: "&lt;span style="color: rgb(255, 0, 0);"&gt;error C231 : 'P0' : redefinition&lt;/span&gt;".&lt;br /&gt;¿Qué está pasando? Al asignar un valor al puerto en la instrucción 'P0 = 0x00;' lo hemos hecho fuera del programa principal (fuera del main) y el compilador interpreta que la instrucción es una definición de una variable (a la que asigna un valor directamente), pero como esta variable ha sido definida en la instrucción anterior '&lt;span style="color: rgb(51, 102, 255);"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;sfr P0 = 0x80&lt;/span&gt;;&lt;/span&gt;' el compilador no lo permite.&lt;br /&gt;&lt;br /&gt;La solución es inicializar las variables dentro del main.&lt;br /&gt;Recuerda: Define todas las variables que vayas a necesitar antes del 'main' e inicialízalas dentro.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-3153854805246919004?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/3153854805246919004/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=3153854805246919004&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/3153854805246919004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/3153854805246919004'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/03/tienes-el-siguiente-programa-escrito-en.html' title='Inicializar las variables dentro del main'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6561333251154900986.post-2873610928551729852</id><published>2010-03-09T13:33:00.006+01:00</published><updated>2010-03-15T00:59:05.611+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='operadores en C'/><category scheme='http://www.blogger.com/atom/ns#' term='escribiendo código C'/><category scheme='http://www.blogger.com/atom/ns#' term='complementar un registro'/><category scheme='http://www.blogger.com/atom/ns#' term='clase 3'/><title type='text'>Complementar todos los bits de un registro</title><content type='html'>Cuando se trata de complementar todos las posiciones de un registro, la manera más cómoda de hacerlo es utilizando el operador "~". Por ejemplo si deseas complementar todos los bits del puerto P0, escribirías el siguiente código:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;// defines el registro&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;sfr P0 = 0x80;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;// complementas todos los bits&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;P0 = ~P0;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ten en cuenta que esta operación afecta a &lt;strong&gt;todos&lt;/strong&gt; los bits del registro.&lt;br /&gt;Donde hay un "0" lo cambia a "1" y donde hay un "1" escribe un "0".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6561333251154900986-2873610928551729852?l=infoind-etsid-upv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoind-etsid-upv.blogspot.com/feeds/2873610928551729852/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6561333251154900986&amp;postID=2873610928551729852&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/2873610928551729852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6561333251154900986/posts/default/2873610928551729852'/><link rel='alternate' type='text/html' href='http://infoind-etsid-upv.blogspot.com/2010/03/complementar-todos-los-bits-de-un.html' title='Complementar todos los bits de un registro'/><author><name>Luis T.</name><uri>http://www.blogger.com/profile/10267697192186640295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
