Unidad 4

download Unidad 4

of 24

description

Lenguajes de interfaz

Transcript of Unidad 4

  • Instituto Tecnolgico de Milpa Alta

    Lenguajes de Interfaz

    Alumnos:

    Bravo Garca Emmanuel. Puebla Valencia Jess. Ramrez Gervacio Daniel. Velasco Velzquez Germn.

    Profesora:

    Mara Teresa De Len Jurez.

    Unidad iV

    Programacin de Dispositivos Ingeniera en Sistemas

    Computacionales

    (I.S.C. 62)

  • ndice de Contenidos Introduccin ...................................................................................................... 2

    4.1 El bfer de video en modo texto ................................................................. 3

    Ejemplo 1: ...................................................................................................... 4

    4.2 Acceso a discos en el lenguaje ensamblador .......................................... 5

    Ejemplo: ......................................................................................................... 6

    a) Rutina _AbsoluteRead: ............................................................................... 6

    b) Rutina _AbsoluteWrite: ............................................................................... 7

    c) Rutina _FreeDiskSpace .............................................................................. 8

    4.3 Programacin del puerto serial .............................................................. 10

    Ejemplo: ....................................................................................................... 11

    4.4 Programacin del puerto paralelo .......................................................... 14

    Ejemplo: ....................................................................................................... 14

    Variantes .................................................................................................. 15

    4.5 Programacin hibrida ............................................................................ 17

    Ejemplo: ....................................................................................................... 17

    4.6 Programacin de puerto USB ................................................................ 19

    Ejemplo: ....................................................................................................... 20

    Conclusines ...................................................... Error! Marcador no definido. Bravo Garca Emmanuel ........................................................................... 22

    Puebla Valencia Jess .............................................................................. 22 Ramrez Gervacio Daniel ........................................................................... 22 Velasco Velzquez Germn ....................................................................... 22

    Referencias ..................................................................................................... 23

    1

  • Introduccin

    En el presente trabajo se desarrollan temas relacionados con lenguajes de

    interfaz en especfico programacin de dispositivos ejemplos de cada tipo de

    programacin adems de una clara explicacin de que es un buffer que no es

    otro cosa que la ubicacin de la memoria de un dispositivo digital; mientras los

    datos se encuentran en el buffer los cuales se guardan para ser procesados.

    Los puertos de comunicacin de la PC son de particular inters para el estudioso

    de la electrnica ya que le permiten utilizar una computadora personal para

    controlar todo tipo circuitos electrnicos utilizados, principalmente, en

    actividades de automatizacin de procesos, adquisicin de datos, tareas

    repetitivas y otras actividades que demandan precisin.

    Existen dos mtodos bsicos para transmisin de datos en las computadoras

    modernas. En un esquema de transmisin de datos en serie un dispositivo enva

    datos a otro a razn de un bit a la vez a travs de un cable. Por otro lado, en un

    esquema de transmisin de datos en paralelo un dispositivo enva datos a otro a

    una tasa de n nmero de bits a travs de n nmero de cables a un tiempo. Sera

    fcil pensar que un sistema en paralelo es n veces ms rpido que un sistema

    enserie, sin embargo esto no se cumple, bsicamente el impedimento principal

    es el tipo de cable que se utiliza para interconectar los equipos.

    2

  • 4.1 El bfer de video en modo texto

    Buffer: Es la ubicacin de la memoria de un dispositivo digital o una computadora que est reservada para el almacenamiento temporal de informacin. Mientras los datos estn en el buffer, aguardan para ser procesados.

    Las aplicaciones en modo texto se comunican con el usuario mediante lneas de comandos e interfaces textuales de usuario, muchos juegos de caracteres usados en aplicaciones en modo texto tambin incluyen un conjunto limitado de caracteres semi grficos predefinidos que pueden usarse para dibujar cajas u otros grficos usados para destacar el contenido o simular widgets y controles como los presentes en las aplicaciones escritas para interfaces grficas.

    Segn el entorno, el buffer de pantalla puede ser directamente accesible, como memoria convencional, para los programas locales. Los programas que muestran salidas en una terminal remota deben enviar secuencias de control especiales para manipular el buffer de pantalla.

    Los estndares ms populares de dichas secuencias de control son ANSI y VT100. Los programas que acceder al buffer de pantalla mediante secuencias de control pueden perder la sincronizacin con la pantalla real, por lo que muchos programas en modo texto tienen un comando para refrescar toda la pantalla, a menudo asociado con la combinacin de teclas Ctrl+L.

    El uso del modo texto se hizo popular a principios de los aos 1970, cuando los terminales de texto orientados a vdeo empezaron a reemplazar a los teletipos en el uso interactivo de las computadoras.

    Figura 4.1.1 Diagrama

    3

  • Figura 4.1.2 Texto Pixeles

    Un ejemplo de buffer tiene lugar cuando se intenta ejecutar aplicaciones de audio o video directamente desde Internet, sin descargarlas a la computadora. Esta prctica, conocida como streaming, requiere de la utilizacin de un buffer para reducir el riesgo de que se corte la reproduccin ante problemas en el ancho de banda.

    Ejemplo 1: Abarcando los aspectos ms importantes del modo de video:

    ENDP

    prepararPantalla proc near

    mov ah, 06h;funcion de limpiar pantalla

    mov bh, 80h;Atributos de color de fondo

    mov al, 00h;cantidad de Filas a Borrar Enrollar

    mov cx, 00h;columna inicial en Ch, Columna Inicial en Cl

    mov dx, 30a0h;columna Final en Dh,Columna Final en Dl

    int 10h

    ret

    prepararPantalla endp

    para llamarlo debes hacerlo asi:

    call prepararPantalla

    En los atributos de color de fondo puedes ver un 80h, el primer nmero es el color del fondo (el 8) y el segundo es el color del texto (el 0).

    4

  • 4.2 Acceso a discos en el lenguaje ensamblador

    El acceso a discos implica movimientos mecnicos adems de que el acceso se da por sectores; en este proceso no interviene el CPU, puesto que solo enva los comandos a la interfaz que maneja la unidad de disco y esta es la encargada de leer, escribir informacin de un rea especial de memoria, llamada DMA; este proceso es conocido como acceso directo a memoria.

    Para el manejo de discos desde la BIOS se hace uso de la interrupcin 13h, y se con servicios de la misma interrupcin. Para el manejo de disco desde el sistema DOS, se utilizan los discos a los cuales se le haya aplicado el comando format, el cual realiza un formato a nivel de BIOS INT 13h, es decir mapea todos los sectores fsicos de un disco en sectores lgicos, divide el disco en 4 reas bsicas de informacin:

    Boot record: Contiene la informacin acerca del formato del disco, tal como nmero de sectores, nmero tracks, nmero de lados, etc. Adems contiene un pequeo programa que se encargar de bajar el sistema operativo (boot del sistema). Boot Strap: Lee el primer sector del disco (boot record) y le transfiere el control. Boot del sistema: Pasa a memoria los archivos del sistema operativo, les transfiere el control para que aparezca el prompt del sistema.

    Tabla de localizacin de archivos (FAT): En esta tabla se guarda una lista de los sectores ocupados por cada archivo contenido en el disco.

    Directorio: Se guarda informacin acerca de los archivos en el disco (nombre, extensin, tamao, fecha y hora de ltima actualizacin, atributos y un apuntador a su correspondiente en el FAT).

    Archivos (rea de datos): Es donde se guarda la informacin contenida en los archivos.

    Un archivo se puede acceder de dos formas: acceso secuencial; en este caso se sigue un orden en la lectura/escritura de registros, acceso aleatorio; no se sigue un orden establecido y se puede leer/escribir en cualquier registro. En DOS, para trabajar con archivos se necesitan dos estructuras de datos: Un rea de memoria para el DTA, donde se van a escribir los registros. DTA DB 128 DUP (0).

    5

  • Un rea para el bloque de control de archivos (FCB) en donde se guarda informacin importante para el acceso al archivo.

    Para leer o escribir en un disco, no se realiza byte a byte, sino ms bien en bloques de bytes, debido a que el acceso a disco implica movimientos mecnicos adems de que el acceso se da por sectores; en este proceso no intervienen el CPU, puesto que solo enva los comandos a la interface que maneja la unidad de disco y sta es la que se encarga de leer o escribir informacin de un rea especial de memoria, llamada DMA; este proceso es conocido como acceso directo a memoria.

    Ejemplo:

    El sistema de almacenamiento en disco constituye el soporte externo de la informacin. Los datos se registran sobre la superficie del disco en una serie de circunferencias concntricas llamadas pistas (track).

    Varias pistas, una por cada cara del disco (generalmente 2), componen un Clster. Cada pista est dividida en porciones iguales llamadas sectores (unidad bsica de almacenamiento en disco). El tamao de un sector se mide en bytes, y depende de las caractersticas del disco. En esta seccin se presentan 3 rutinas que permiten lectura y escritura absoluta de sectores, as como la determinacin del espacio libre disponible en un disco.

    a) Rutina _AbsoluteRead:

    Transfiere el contenido de uno o ms sectores del disco al buffer especificado, accesando directamente a los sectores lgicos. En caso de error, se enciende el bit de acarreo y AX contiene el cdigo del error.

    Invocacin:

    push push push push SEG push OFFSET call _AbsoluteRead PUBLIC _AbsoluteRead _AbsoluteRead PROC NEAR ARG Buffer:DWORD,Start:WORD,NumSect:WORD,Drive:BYTE= ArgLen push bp ; salvar BP mov bp,sp ; permitir acceso a los argumentos

    6

  • push bx ; salvar registros push cx push dx push ds mov al,Drive ; lectura absoluta de disco mov cx,NumSect mov dx,Start lds bx,Buffer int 25h pop bx pop ds ; recuperar registros pop dx pop cx pop bx pop bp ret ArgLen _AbsoluteRead ENDP

    b) Rutina _AbsoluteWrite:

    Transfiere el contenido del buffer especificado a uno o ms sectores de disco, accesando directamente a los sectores lgicos. En caso de error, se enciende el bit de acarreo y AX contiene el cdigo del error.

    Invocacin: push push push push SEG push OFFSET call _AbsoluteWrite PUBLIC _Absolut eWrite _AbsoluteWrite PROC NEAR ARG Buffer:DWORD,Start:WORD,NumSect:WORD,Drive:BYTE= ArgLen push bp ; salvar BP mov bp,sp ; permitir acceso a los argumentos push bx ; salvar registros push cx push dx push ds

    7

  • mov al,Drive ; escritura absoluta a disco mov cx,NumSect mov dx,Start lds bx,Buffer int 26h pop bx pop ds ; recuperar registros pop dx pop cx pop bx pop bp ret ArgLen _AbsoluteWrite ENDP

    c) Rutina _FreeDiskSpace

    Devuelve en DX:AX el espacio libre en disco (en Kb). En caso de error, se enciende el bit de accarreo.

    Invocacin: push call _FreeDiskSpace PUBLIC _FreeDiskSpace _FreeDiskSpace PROC NEAR ARG Drive:BYTE= ArgLen push bp ; salvar BP mov bp,sp ; permitir acceso a los argumentos push bx ; salvar registros push cx mov ah,36h ; funcin 36h mov dl,Drive int 21h ; del DOS mul cx ; DX:AX= bytes por cluster mov cx,1024 ; CX= 1 Kb div cx ; DX:AX= Kb por cluster mul bx

    8

  • ; DX:AX= Kb libres en el disco pop cx ; recuperar registros pop bx pop bp ret ArgLen _FreeDiskSpace

    Figura 4.2.1 Perifricos E/S

    9

  • 4.3 Programacin del puerto serial

    Cuando se pretende realizar aplicaciones tales como programas de terminal, programadores de micro controladores (por ejemplo para el PIC), el acceso a el bajo nivel, a las seales de control del puerto serie, en concreto DCD,DTR,DSR,RTS,CTS y RI resulta muy importante como primer solucin para el programador el acceso directo a los puertos de entrada y salida; Aunque esto implica dos inconvenientes: la necesidad de que el cdigo corra con privilegios de supe usuario, el hecho de necesitar conocer con precisin como esta implementado el dispositivo fsico. Este ltimo problema surge tambin si se decide hacer un controlador especfico para una tarea especfica.

    Comunicacin serial en lenguaje ensamblador. En lenguaje ensamblador, se puede acudir a la interrupcin 14H de la ROM -BIOS para configurar, leer, escribir o simplemente para conocer el estado del puerto; cada una de estas cuatro opciones es un servicio de la interrupcin, y se seleccionan a travs del registro AH. La tabla muestra los valores que debe contener el registro AH para invocar cada uno de los servicios. En todos los casos, el registro DX debe contener el nmero del puerto serie; el primero de ellos, COM1 se especifica como 00h. Servicio Descripcin 00 Inicializar puerto serie 01 Enviar un dato 02 Recibir un dato 03 Obtener el estado del puerto Servicios para el puerto serial disponibles a travs de la interrupcin 14H. Para configurar o inicializar el puerto serie, bastar con utilizar el servicio 00 de la interrupcin, colocando en el registro AL los valores equivalentes a los parmetros, como se puede observar en la figura 2. Con ste mtodo es posible obtener frecuencias de transmisin que van desde los 110 hasta los 9600 baudios.

    Figura 4.3.1 puertos seriales

    10

  • La Existen dos tipos de comunicaciones seriales: la sncrona y asncrona .En la

    comunicacin serial sincrona adems de una lnea sobre la cual se transmitirn

    los datos se necesita de una lnea la cual contendr los pulsos de reloj que

    indicaran cuando un datos es vlido. Ejemplos de este tipo de comunicacin son:

    I2C ONE WIRE SPI En la comunicacin serial asncrona, no son necesarios los pulsos de reloj.

    La duracin de cada bit est determinada por la velocidad con la cual se realiza la transferencia de datos.

    La siguiente figura muestra la estructura de una carcter que se trasmite en

    forma serial asncrono.

    Ejemplo:

    Pasos para poder enviar datos a travs del Puerto Serial: Insertar el control MS Comm sobre la forma:

    Establecer las siguientes propiedades:

    ComPort:

    Settings:

    Handshaking:

    Abrir el puerto, si este ya est abierto por otra aplicacin, entonces se debe

    cerrar esa aplicacin, para despus volverlo a abrir el puerto con una aplicacin

    en Visual Basic, esto se hace utilizando la siguiente instruccin:

    MSComm1.Portopen = true

    Definir el tamao del buffer receptor, esto se hace con la propiedad InputLen

    11

  • MSComm1.InputLen = 1024

    Enviar los datos que se desean

    Cuando la aplicacin se termine se debe cerrar el puerto.

    Aplicacin #1

    1. Cree un Nuevo proyecto Form1 (es creado por default).

    2. Seleccione del men Project ,verifique que el control MicrosoftComm, este en

    la barra de herramientas

    3. Agregue el control MSCOMM a la forma.

    4. Agregue 2 controles Command Buttons a la forma.

    Agregue el siguiente cdigo a sus respetivos controles:

    Option Explicit

    Const Xon = &H11

    Const Xoff = &H13

    Private Sub Form_Load()

    Form1.Caption = "Primera aplicacin con el Puerto Serial

    With MSComm1

    .Handshaking = 2 - comRTS

    .RThreshold = 1

    .RTSEnable = True

    .Settings = "9600,n,8,1"

    .SThreshold = 1

    .PortOpen = True

    End With

    Command1.Caption = "&Send Xoff"

    Command2.Caption = "Send &Xon"

    End Sub

    Private Sub Command1_Click()

    MSComm1.Output = "123456789" & Chr$(Xoff)

    End Sub

    Private Sub Command2_Click()

    MSComm1.Output = "987654321" & Chr$(Xon)

    End Sub

    Private Sub Form_Unload(Cancel As Integer)

    MSComm1.PortOpen = False

    12

  • End Sub

    clearall; closeall; clc; PS = serial('COM1') set(PS,'Baudrate',9600);%Se configura la velocidad a 9600 bps set(PS,'StopBits',1);%Se configura el bit de paro set(PS,'DataBit',8);%Se configura que el dato es de 8 bits set(PS,'Parity','none');%Se configura la paridad set(PS,'Terminator','CL/RF');%"c" carcter con que se finaliza el envo set(PS,'OutputBufferSize',1);%"n" es el nmero de bytes a enviar set(PS,'InputBufferSize',1);%"n" es el nmero de bytes a recibir set(PS,'Timeout',5);% 5 Segundos de tiempo de espera. fopen(PS) Para leer los datos del puerto serial se debe poner la instruccin: variable = fread(PS,1,'uint8');

    Para escribir el dato en el puerto serial se ocupa la siguente instruccin: Fwrite (PS,variable,'uint16');

    Finalmente, unca vez que lees del puerto o escribes en l se debe de cerrar a travs de lasinstrucciones

    Close (PS); Delete (PS); Clear PS;

    UART.- Decodifica serial a paralelo.

    DSP .- Dispositivo Digital Programable.

    13

  • 4.4 Programacin del puerto paralelo

    El puerto paralelo de una PC es ideal para ser usado como herramienta de control de motores, LED's, etc. El mismo posee un bus de datos de 8 bits (Pin 2 a 9) y muchas seales de control, algunas de salida y otras de entrada que tambin pueden ser usadas fcilmente.Las PC's generalmente poseen solo uno de estos puertos (LPT1) pero se le puede adicionar una tarjeta con un segundo puerto paralelo (LPT2).

    En lenguaje ensamblador, se puede leer un dato del puerto mediante la instruccin IN o escribir un dato en el puerto con la instruccin OUT, en ambos casos el registro AL debe participar activamente en la instruccin, bien sea como fuente (en operaciones de escritura) o destino (en operaciones de lectura) del dato, como en los siguientes casos:

    out DX, AL ;lleva al puerto DX el contenido del registro AL in AL,DX ;lleva al registro AL, el contenido del puerto DX

    Otra, exigencia, es que el nmero del puerto sobre el que se va a realizar la transferencia de datos debe estar sealado por le registro DX, a excepcin de los casos en los cuales el nmero del puerto es inferior a 255 (FFh), en cuyo caso la instruccin que lee o escribe puede sealar directamente el puerto. Como vern la utilizacin del puerto paralelo en lenguaje ensamblador es muy sencilla.

    Ejemplo:

    En este proyecto vamos a enviar la informacin al arduino usando el monitor serial. Para hacer esto lo hacemos desde la ventana que el monitor serial tiene para esto.

    Para recibir y procesar la informacin enviada desde la computadora, vamos a utilizar dos de las funciones de la biblioteca Serial. Primero la funcin Serial.available(); para saber si hay informacin disponible en el buffer de entrada. Y despues, en caso de que esta informacin est disponible, la funcin Serial.parseInt(); para leerla como nmeros enteros.

    Con la informacin recibida, un nmero entre 0 y 9, vamos a prender el led con el brillo correspondiente. Tendremos que usar la funcin map() para convertir estos valores a valores usados para las salidas analgicas con PWM, valores entre 0 y 255.

    14

  • /* En este proyecto cambiamos la instensidad de un led dependiendo de un dato enviado con el monitor serial y recibido por el serial del Arduino */ const int pinLed = 9; // el pin con el led, tienen que ser con pwm int brillo; // una constante para guardar el valor del dato enviado void setup() { // inicializa la comunicacion serial Serial.begin(9600); // envia un mensaje con las instrucciones Serial.println("Envia un numero entre 0 y 9"); // inicializa el pinLed de salida pinMode(pinLed, OUTPUT); } void loop() { // checa si la computadora ha enviado un dato if (Serial.available()) { // si es asi, lo lee, debe ser un valor entre 0 y 9): brillo = Serial.parseInt(); // mapea el valor de entrada a un valor entre 0 y 255 brillo = map(brillo, 0, 9, 0, 255); // limitamos el valor entre 0 y 255 brillo = constrain(brillo, 0, 255); // envia por el serial el valor convertido a un valor entre 0 y 255 Serial.println(brillo); // enciende el led con un valor entre 0 y 255 analogWrite(pinLed, brillo); } } Variantes

    Qu pasa si se envian caracteres distintos a un nmero entre 0 y 9? Podemos agregar un mensaje de error.

    /* En este proyecto cambiamos la instensidad de un led dependiendo de un dato enviado con el monitor serial y recibido por el serial del Arduino */

    15

  • const int pinLed = 9; // el pin con el led, tienen que ser con pwm void setup() { // inicializa la comunicacion serial Serial.begin(9600); // envia un mensaje con las instrucciones Serial.println("Envia un numero entre 0 y 9"); // inicializa el pinLed de salida pinMode(pinLed, OUTPUT); } void loop() { // checa si la computadora ha enviado un dato if (Serial.available()) { // si es asi, lo lee, y lo guarda en una variable de tipo caracter): char dato = Serial.read(); // checamos si es un valor entre 0 y 9 if (dato >= '0' && dato
  • 4.5 Programacin hibrida

    La programacin hibrida es utilizada en los casos en donde el cdigo en ensamblador dificulta la estructuracin del programa. La programacin hbrida proporciona un mecanismo por medio del cual podemos aprovechar las ventajas del lenguaje ensamblador y los lenguajes de alto nivel, todo esto con el fin escribir programas ms rpidos y eficientes.

    La compilacin hibrida es utilizada en lo que es conocida como programacin hibrida (vlgase la redundancia).

    La programacin hibrida es utilizada en los casos en donde el cdigo en ensamblador dificulta la estructuracin del programa. La programacin hbrida proporciona un mecanismo por medio del cual podemos aprovechar las ventajas del lenguaje ensamblador y los lenguajes de alto nivel, todo esto con el fin escribir programas ms rpidos y eficientes.

    Ventajas de la Programacin Hbrida Para mejorar la escalabilidad Cuando muchas tareas producen desbalanceo Aplicaciones que combinan paralelismo de grano grueso y fino Reduccin del tiempo de desarrollo de cdigo Cuando el nmero de procesos MPI es fijo En caso de mezcla de paralelismo funcional y de datos

    Ejemplo: La red es el siguiente donde utilizamos cdigo en ensamblador y cdigo pascal. El siguiente cdigo sirve para limpiar pantalla, est escrito en ensamblador dentro de una funcin en pascal, lo que es lo mismo a la funcin ClrScr en pascal.

    Uses Crt; Var Car: Char; i,j : integer; ;Este procedimiento limpia la pantalla y pone blanco sobre azul Procedure Limpia_Pantalla; Assembler; Asm Mov AX,0600h Mov Bh,17h Mov CX,0000h Mov DX,184Fh Int 10h End; ;Este procedimiento imprime el carcter en la pantalla Procedure Imprime_Car(C: Char); Assembler;

    17

  • Asm Mov Ah,02h Mov Dl,C Int 21h End; ;Este procedimiento tiene la misma funcin que el procedimiento Goto XY de Turbo Pascal Procedure Cursor_XY(X,Y: Byte); Assembler; Asm Mov Ah,02h Mov Bh,00h Mov Dh,Y Mov Dl,X Int 10h End; Begin Limpia_Pantalla; Repeat Limpia_Pantalla; Cursor_XY(0,0); Write(Introduce un carcter: ); Car:=Read Key; Imprime_Car(Car); Limpia_Pantalla; If car #13 then Begin For i:=0 to 24 do For j:=0 to 79 do Cursor_XY(j,i); Imprime_Car(Car); End; Cursor_XY(30,24); Write(Presiona enter para salir u otro para seguir); Readln; Until car = #13; End.

    18

  • 4.6 Programacin de puerto USB

    USB viene de frase en Ingles Universal Serial Bus que se utiliza para describir un tipo de puerto en la computadora personal en donde se conectan distintos perifricos tales como mquinas de imprimir, cmaras fotogrficas, teclados de computadoras e inanidad de productos de uso generalizado.

    Un puerto es una localizacin en la computadora en donde conectamos los perifricos "estos pueden enviar informacin a la computadora, recibir informacin de la misma o hacer ambas cosas.

    La computadora personal moderna tiene dos puertos tpicos de conexin

    a) El puerto USB descrito anteriormente b) El puerto Ethernet usado para conectar la computadora personal

    a la Internet.

    Tambin incluye internamente otros puertos nombrados PCI etc. Para usos en aplicaciones que requieran mayores velocidades de transferencia de informacin los cuales no fueron objeto de investigacin en este trabajo. Nos concentramos especficamente en el puerto USB.

    Caractersticas del puerto USB

    La versin USB.0 1 parece en el mercado, junto con el lanzamiento del microprocesador Intel2 Pentium II en 1997

    Cada puerto, permite conectar hasta 127 dispositivos externos, pero solo se recomiendan como mximo 8, porque se satura la lnea del puerto y se ralentiza el sistema al tener que administrarse todos simultneamente.

    Cuenta con tecnologa Plug-Play la cual permite conectar, desconectar y reconocer dispositivos sin necesidad de reiniciar o apagar la computadora.

    Las versiones USB 1.X y USB 2.0 transmiten en un medio unidireccional los datos, esto es solamente se enva o recibe datos en un sentido a la vez, mientras que la versin USB 3 cuenta con un medio Dplex que permite enviar o recibir datos de manera simultnea.

    A pesar de que el puerto USB 3, est actualmente integrado ya en algunas placas de nueva

    Generacin, aun no hay dispositivos comerciales/populares para esta tecnologa.

    19

  • Figura 4.6.1 prog_puerto_USB

    Ejemplo: USB con ASSEMBLER

    PASO 1 Usaremos MPASM en la version 4.7...Y tomaremos de la carpeta c:\pbp\usb18\*.* y lo copiaremos a donde queremos trabajar... en nuestro caso c:\cdcdemo... PASO 2. Abra el archivo de descriptores USB (llamado USBDESC.asm) Hay tres lineas de codigo ah, cambie ; para que CDCDESC.ASM pueda usarse. Code: ; include "MOUSDESC.ASM" ; USB descriptores for mouse demo ; include "PACHDESC.ASM" ; USB descriptors for Francisco Gonzlez's demo include "CDCDESC.ASM" ; USB descriptors for CDC demo Paso 3 Copie este cdigo y gurdelo en la carpeta c:\cdcdemo y compilelo.... Code: DEFINE OSC 48 Buffer VAR BYTE[16] Cnt VAR BYTE B0 VAR BYTE B1 VAR BYTE ADCON1 = 15 ' Set all I/Os to Digital CMCON = 7 ' Disable Comparators Cnt = 16 USBInit ' Initialize USART

    20

  • for b0 = 0 to 15 lookup b0,["USB CONNECTED!",10,13],B1 BUFFER(B0) = B1 NEXT B0 ' Main Program Loop Loop: USBService ' Must service USB regularly USBOut 3, Buffer, Cnt, loop goto loop end Cuando compila el programa de arriba, PBP toma los archivos USB18 en la carpeta cdcdemo para generar el correspondiente .hex VOILA!!!!... Ya tiene su programa listo para usar y creado en assembler, asi tendr mas rapidez de maquina... Windows detectar el dispositivo USB, asi que instale el Microchip CDC driver. STEP FOUR. Abra Hyperteminal y seleccione el componente virtual que usted instal, usted ver USB CONNECTED! repeditas veces. FELICIDADES,puede enviar datos del PIC al PC por Comunicacin Serial. Bueno, Y como envo y recibo los datos? Programe este cdigo en su PIC Code: buffer Var Byte[16] cnt Var Byte LED Var PORTB.0 Define OSC 48 USBInit Low LED ' LED off ' Wait for USB input idleloop: USBService ' Must service USB regularly cnt = 1 ' Specify input buffer size USBIn 3, buffer, cnt, idleloop ' Message received Toggle LED outloop: USBService ' Must service USB regularly USBOut 3, buffer, cnt, outloop Goto idleloop ' Wait for next buffer De nuevo abra Hyperterminal y el PIC har ecos de vuelta de lo que escriba de vuelta (un byte a la vez).

    21

  • Conclusiones Bravo Garca Emmanuel Con lo que hemos visto de todos estos tipos de programacin, se puede decir

    que como se tiene acceso a casi todo el hardware de la computadora va

    interrupciones de software, tiene posibilidades que se puedan programar

    virus, programacin en USB para la manipulacin de Arduino y hasta para

    sistemas ms complejos y poder manipularlos mediante la comunicacin

    USB.

    Puebla Valencia Jess El lenguaje ensamblador a pesar de ser ms rpido de cualquier otro lenguaje

    es tambin el ms complejo por eso es utilizado para complementar los limitantes

    de los lenguajes de programacin de alto nivel.

    Pero existen ramas donde es necesario el uso de lenguaje ensamblador como

    lo es la electrnica donde los recursos de los aparatos son limitados y es

    necesario utilizar lenguaje ensamblador para su manipulacin mediante los

    diferentes puertos y vistas de salida grficas.

    Ramrez Gervacio Daniel Se puede decir que este tipo de programacin para dispositivos ya sea

    paralelo, serial, hibrida o puerto USB es de gran ayuda para la comunicacin

    entre el usuario y algn dispositivo lo hace de manera ms fcil. Adems de

    que el lenguaje de programacin tiene un grado de complejidad, pero que

    actualmente esta herramienta de programacin nos da bastantes ventas

    como por ejemplo poder comunicar un robot por medio de instrucciones.

    Velasco Velzquez Germn Creo que el lenguaje ensamblador a pesar de ser ms rpido es eficaz a la

    hora de implementarlo claro que se debe saber del tema; por ejemplo, la

    electrnica donde los recursos de los aparatos son limitados y es necesario

    utilizar lenguaje ensamblador.

    22

  • Referencias

    https://www.goconqr.com/en/p/971362-unidad-4--programaci-n-de-dispositivos-mind_maps

    http://arduineando.matem.unam.mx/proyectos/enviandoMonitorSerial

    http://www.academia.edu/9552859/La_programaci%C3%B3n_hibrida

    http://ensam1.blogspot.mx/2005_09_01_archive.html

    http://instrumentaciongz.wikispaces.com/USB+CON+ASSEMBLER

    http://hgr.tripod.com/puertos_ensamblador.html

    http://www.lawebdelprogramador.com/foros/Ensamblador/1022270-Documentacion-Puerto-USB.html

    http://www.itpn.mx/recursosisc/6semestre/lenguajesdeinterfaz/Unidad%20IV.pdf

    https://prezi.com/fza8xd9uiku8/unidad-4-programacion-de-dispositivos/

    23

    Introduccin4.1 El bfer de video en modo textoEjemplo 1:

    4.2 Acceso a discos en el lenguaje ensambladorEjemplo:

    a) Rutina _AbsoluteRead:b) Rutina _AbsoluteWrite:c) Rutina _FreeDiskSpace4.3 Programacin del puerto serialEjemplo:

    4.4 Programacin del puerto paraleloEjemplo:Variantes

    4.5 Programacin hibridaEjemplo:

    4.6 Programacin de puerto USBEjemplo:

    ConclusionesBravo Garca EmmanuelPuebla Valencia JessRamrez Gervacio DanielVelasco Velzquez Germn

    Referencias