Unidad 4

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 24

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

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.

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

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).

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 <unidad de disco>
push <nmero de sectores a leer>
push <prime
r sector a leer>
push SEG <buffer>
push OFFSET <buffer>
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 <unidad de disco>
push <nmero de sectores a escribir>
push <primer sector a escribir>
push SEG <buffer>
push OFFSET <buffer>
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 <unidad de disco>
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

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
00
01
02
03

Descripcin
Inicializar puerto serie
Enviar un dato
Recibir un dato
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 <= '9' ) {
// si lo es lo convertimos a un entero entre 0 y 9
int brillo = dato - '0';
// y lo mapeamos a un valor entre 0 y 255
brillo = map(brillo, 0, 9, 0, 255);
// devuelve 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);
} else {
Serial.println("Debes enviar un numero entre 0 y 9");
}
}
}

16

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"
include "PACHDESC.ASM"
include "CDCDESC.ASM"

; USB descriptores for mouse demo


; USB descriptors for Francisco Gonzlez's demo
; 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
CMCON = 7
Cnt = 16
USBInit

' Set all I/Os to Digital


' Disable Comparators

' 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
USBInit
Low LED

48

' 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-PuertoUSB.html
http://www.itpn.mx/recursosisc/6semestre/lenguajesdeinterfaz/Unidad%20IV.pdf
https://prezi.com/fza8xd9uiku8/unidad-4-programacion-de-dispositivos/

23

También podría gustarte