Sie sind auf Seite 1von 6

Problema en Ensamblador: Entregar un trabajo escrito que est constituido del diseo y desarrollo de una aplicacin en lenguaje ensamblador

para un sistema 80x86. El documento a entregar deber incluir las caractersticas del ciclo de vida del diseo del programa.

La aplicacin consiste en crear un programa para el control de velocidad de un ventilador basado en un motor a pasos que vara de manera autnoma de acuerdo a la variacin de temperatura registrada por un termmetro digital. Esto deber realizarse con ayuda del EMU8086. El procedimiento del programa es el siguiente: 1. Iniciando el sistema se deber sensar la temperatura registrada por un termmetro digital. Utilice el emulador de termmetro del emu8086. 2. De acuerdo a la temperatura, el sistema deber encender el giro de un motor a paso que emula un ventilador. (utilice el emulador de motor a pasos del emu8086). 3. Si la temperatura es alta, incremente la velocidad de giro proporcionalmente al aumento de temperatura. 4. Simultneamente realice el sensado de temperatura y almacnela en un archivo *.txt 5. El sistema permitir imprimir los valores de temperatura almacenados en el archivo *.txt. La impresin se realizar a travs del emulador de impresin del emu8086. Estos puntos debern cubrirse considerando: A. A. Planificacin del Proyecto. Estructura general. Entradas y salidas. B. Diagrama de flujo de la aplicacin. C. Cdigo de aplicacin de los puntos 1 a 5. D. Pruebas de funcionamiento. ESTE ES EL AVANCE QUE LLEVO EL PROFESOR YA ME RETROALIMENTO QUE EL DIAGRAMA DE FLUJO ESTA INCOMPLETO

Diseo y desarrollo de una aplicacin en lenguaje ensamblador para un sistema 80x86.


Introduccin

La base principal de este proyecto consiste en la aplicacin practica del Lenguaje Ensamblador, aprendiendo en el proceso las estructuras, el ensamblado, instrucciones basicas, propias del mismo. Teniendo como base el desarrollo de un programa en Lenguaje Ensamblador, tomando como base el sistema 80x86, enfocado al control de un motor a pasos, en base a la variable temperatura.

Objetivo
La aplicacin consiste en crear un programa para el control de velocidad de un ventilador basado en un motor a pasos que vara de manera autnoma de acuerdo a la variacin de temperatura registrada por un termmetro digital. Esto deber realizarse con ayuda del EMU8086. El procedimiento del programa es el siguiente: 1. Iniciando el sistema se deber sensar la temperatura registrada por un termmetro digital. Utilice el emulador de termmetro del emu8086. 2. De acuerdo a la temperatura, el sistema deber encender el giro de un motor a paso que emula un ventilador. (utilice el emulador de motor a pasos del emu8086). 3. Si la temperatura es alta, incremente la velocidad de giro proporcionalmente al aumento de temperatura. 4. Simultneamente realice el sensado de temperatura y almacnela en un archivo *.txt 5. El sistema permitir imprimir los valores de temperatura almacenados en el archivo *.txt. La impresin se realizar a travs del emulador de impresin del emu8086.

Diagrama de flujo

Codigo

1. Iniciando el sistema se deber sensar la temperatura registrada por un termmetro digital. Utilice el emulador de termmetro del emu8086.

#make_bin# name "thermo" ; set data segment to code segment: mov ax, cs mov ds, ax start: in al, 125 cmp al, 60 jl low cmp al, 80 jle ok jg high low: mov al, 1 out 127, al ; turn heater "on". jmp ok high: mov al, 0 out 127, al ; turn heater "off". ok: jmp start ; endless loop.

2. De acuerdo a la temperatura, el sistema deber encender el giro de un motor a paso que emula un ventilador. (utilice el emulador de motor a pasos del emu8086).

#start=stepper_motor.exe#

name "stepper" #make_bin# steps_before_direction_change = 20h ; 32 (decimal) jmp start ; ========= data =============== ; bin data for clock-wise ; half-step rotation: datcw db 0000_0110b db 0000_0100b db 0000_0011b db 0000_0010b ; bin data for counter-clock-wise ; half-step rotation: datccw db 0000_0011b db 0000_0001b db 0000_0110b db 0000_0010b

; bin data for clock-wise ; full-step rotation: datcw_fs db 0000_0001b db 0000_0011b db 0000_0110b db 0000_0000b ; bin data for counter-clock-wise ; full-step rotation: datccw_fs db 0000_0100b db 0000_0110b db 0000_0011b db 0000_0000b

start: mov bx, offset datcw ; start from clock-wise half-step. mov si, 0 mov cx, 0 ; step counter

next_step: ; motor sets top bit when it's ready to accept new command wait: in al, 7 test al, 10000000b jz wait mov al, [bx][si] out 7, al inc si cmp si, 4 jb next_step mov si, 0 inc cx cmp cx, steps_before_direction_change jb next_step mov cx, 0 add bx, 4 ; next bin data cmp bx, offset datccw_fs jbe next_step mov bx, offset datcw ; return to clock-wise half-step. jmp next_step

Das könnte Ihnen auch gefallen