• No results found

8086 Programs

N/A
N/A
Protected

Academic year: 2021

Share "8086 Programs"

Copied!
41
0
0

Loading.... (view fulltext now)

Full text

(1)

Following is the Assembly language program for a real time clock Code:

LCALL 061D

AGAIN MOV DPTR, #2845

REPEAT DEC82 ; Decrement DPL MOVX A,@DPTR MOV R3,A MOV R5,#02 LCALL 059E MOV A,20 LCALL 2006 MOVA,82

CJNE A,#42; REPEAT (ED)

MOVA,#OD ; OD = ASCII FOR ENTER LCALL 2006 LJMP; AGAIN ( 6003 ) To change the RTC 2844-hrs 2843-minutes 2842-seconds 0 comments

Labels: 8086, Assembly Language, c program, real time clock O C T 2 1 , 2 0 0 8

(2)

Program to interface DAC using 8255 and generate square waveform

Program to interface DAC using 8255 and generate square waveform

The following is the assembly language using DAC to interface with 8255 and generate a square wave on CRO. Here in the code, we use two delay elements one for the rising part of the wave and the other delay element to reach zero i.e decrement. Certain value chosen is delayed or sustained for a time period to form the square wave. The two loops used in the program are iterated to repeat cycles of a square wave.

Code:

MOV DX,8807 : DX is loaded with control word register address of 8255 MOV AL,80

OUT DX,AL : Contents of AL are transferred to portA of 8255 MOV DX,8801 : DX is loaded with Port A address of 8255 Begin MOV AL,00

OUT DX,AL ; Contents of AL are transferred to portA of 8255 MOV CX,00FF

Delay1 Loop Delay1 MOV AL,FF

OUT DX,AL : Contents of AL are transferred to portA of 8255 MOV CX,00FF : CX is loaded with 00FFH

(3)

Delay2 Loop Delay2 : Repeat until CX=0 JMP Begin ; Repeat the same

The expected square wave can be observed as in the figure shown. Thus we programed in assembly language to interface DAC using 8255 to generate a square waveform.

Related links

Ebooks for micro processors and micro controllers

0 comments

(4)

Assembly language program to find square root of 8-bit number

Following is the assembly language program to find square root of 8-bit number. In this program we initially load the index registers with specified values. We load the value of the number into SI Register. Then using a few logical steps as mentioned in the code i.e JMP insctructions we find the square root of a 8-bit number.

Code: MOV SI,2000 MOV DI,4000 MOV CX,0001 MOV BX,0000

MOV AL,[SI] ; Load AL with the value given as at SI UP SUB AL,CL

JL down ; jump to down label INC BL

ADD CL,02 ; add 2 to contents of CL register JMP UP ; jump to up label

DOWN MOV[DI],BL INT A5

Thus by implementing the above code we can find the square root of 8-bit number Related posts

square root of hexa decimal number Ebooks

You might be also interested in:

:: Find Square Root of a hexadecimal number in assembly language

:: common intreview questions on 8086

:: Assembly Language Source Codes

1 comments

(5)

O C T 1 5 , 2 0 0 8

Program to interface stepper motor with 8086 and rotate with anti clock

wise direction in full stepping

The following program is to interface stepper motor with 8086 and rotate with anti clock wise direction in full stepping. The purpose of this is to observe and control the stepping action of the motor using assembly language code. The code is also practically illustrated with two live demonstrations on how speed of the motor varies if one of the instruction codes is changed to a new value.

Code:

MOV DX,8807 : Load DX with control word register address of 8255 MOV AL,80 : load control word 80 into AL

OUT DX,AL: Contents of AL are loaded into control word register of 8255 MOV DX,8801: Load PortA address of 8255 into DX

MOV AL,33: Load value 33 into AL

Again OUT DX,AL: Contents of AL are loaded into control word register of 8255 MOV CX,0100: set counter to delay

Loop Again

ROL AL,1 : Rotate left by 1

JMP Again : Unconditional jump to label again

Following is the practical illsutration of the output for the above given code.

The instruction MOV CX,0100 can be changed to a new value in order to vary the speed. So, for instance lets say MOV CX,7000. Following is the video demonstration of how the speed varies if the value is changed in the above instruction

Thus by changing the instruction the speed of the stepper motor can be varied according with interfacing it to an 8086 microprocessor for full stepping

(6)

Related posts:

Interfacing a stepper motor with an AVR Microprocessor Interfacing a stepper motor with pic micro controller Interfacing a stepper motor to 8086 using 8255 0 comments

Labels: 8086, Assembly Language, interface stepper motor S E P 2 8 , 2 0 0 8

(7)

program to find factorial of given numbers

following is the assembly language program to find factorial of given numbers MOV SI , 2000

MOV DI,2002 MOV CX,[SI]

MOV AX,CX ; Move contents of CX to contents of AX register DEC CX ; Decrement CX

UP: MUL CX

DEC CX ; Decrement CX JNZ; UP ; Jump if not zero

MOV [DI], AX ; Load the values of AX into location given by DI INT A5; Halt the program

You might be also interested in:

:: Troubleshooting a simple 8086 microprocessor based microcomputer

:: centigrade (celsius) to fahrenheit calculation for 8086 Assembly Language :: Data transfer instructions of 8086 microprocessor

0 comments

Labels: 8086, Assembly Language, factorial S E P 2 6 , 2 0 0 8

(8)

Program to find arithmetic mean of n numbers

Program to find arithmetic mean of n numbers

CLC ; clear carry flag MOV SI , 2000

MOV DI, 2050

MOV CX, 0000 ; Load CX register with the value given by 0000 MOV AX,0000

MOV CL,[SI] MOV DL,CL

A1: INC SI ; Increment SI contents

ADD AL,[SI] ; ADD AL with the value given by that at SI and store in AL LOOP AI ( 1011) ; Repeat until CX=0

DIV BL; Divide AX With the value given by BL

MOV [DI],AX ; Load the value in AX into as location at DI INT A5 ; HALT

Thus with the above code the arithmetic mean of n numbers can found accordingly. sample input: 0000:2000 array size 0000:20001 array elements from 2001 location Output 0000:2050 Result

You might be also interested in:

::Interfacing pic microcontroller with LCD

:: Serial Port interfacing with atmega :: TCP/IP on PIC 18 series

(9)

assembly language program to reverse a given string

Following is the assembly language program to reverse a given string. MOV AX @ DATA ; AX IS INITIALIZED WITH DATA

MOV DS AX ; AX IS MOVED INTO DS MOV CX 0005H ; CX IS INITIALIZED TO 5 LEA SI A1 ; SI IS HAVING LEAD E.A OF A1 LEA DI A2; DI IS HAVING LEAD E.A OF A2 ADD SI 0004

AGAIN: MOV AL[SI]

MOV [DI]AL ; AL IS MOVED INTO DI DEC SI

INC DI LOOP AGAIN INT 3 ; INTERRUPT END

Using the above code if an Input for instance ' ad-cole': 0006 is given then the output will be shown as

DS: 0011: 16

10A0: 0010 : 65, 64 , 63 , 62 , 61 05 e d c b a You might be also interested in:

:: Find Square Root of a hexadecimal number in assembly language

:: common intreview questions on 8086

:: Assembly Language Source Codes

0 comments

Labels: 8086, Assembly Language, reverse, string S E P 2 3 , 2 0 0 8

(10)

stack program for push and pop

following is the assembly language program for push and pop operations in a stack. code segment

main:

mov sp,1000h initialize SP to point to stack mov ax,1234h mov bx,5678h mov cx,9abcdh push ax push cx pop ax pop ax pop bx pop cx mov bx,0200h

mov w[bxx],1234h; address 0200 holds 1234 push [0200h]

push[bx] mov bx,0210h pop [bx] pop[0212h]

imp main ; demo again code ends

This program establishes the stack at 0100h and puts some random numbers in registers AX , BX , CX. AX is pushed on the stack that stores it at SS:OFFFh(MSB) and SS:0FFEh{LSB}. BX and CX are stored in similar manner with the attendant decrement of SP bt 2 for each push. The contents of the stack are then popped from the stack, in reverse order.

(11)

8086 program to find GCD of two 2 numbers

Euclid (a Greek mathematicians and philosopher of about 300 BC) describes this algorithm in Propositions 1 and 2 of Book 7 of The Elements, although it was probably known to the Babylonian and Egyptian mathematicians of 3000-4000 BC also.

If we try it with an two numbers, the final non-zero remainder is the greatest number that is an exact divisor of both our original numbers (the greatest common divisor)

Here is the program

mov ax,4000h mov ds,ax mov si,0000h

mov al,num1 ;num1 is first no. mov cl,num2 ;num2 is second no. mov ah,00h cmp al,cl ja next xchg al,cl next: mov bl,cl div cl cmp ah,00h je down mov al,cl mov cl,ah mov ah,00h jmp next

down mov result,bl ;result is the mem.loc. ;where gcd is to be stored

hlt

You might be also interested in:

(12)

:: Answers of Microprocessor(8085) & Electronics FAQ

:: The 8085 Microprocessor Architecture Microprocessors & Interfacing

0 comments

Labels: 8086, Assembly Language, Program J U L 6 , 2 0 0 8

(13)

decimal addition program for 8086

This program will add two decimal numbers LXI H,2200H MOV A,M INX H ADD M DAA STA 2300H HLT

DAA will convert HEX to valid BCD number now the program can be easily understood You might be also interested in:

:: 8051 or PIC microcontroller which is better :: Effective addresses

:: Floating Point Initializations

0 comments

Labels: 8086, Assembly Language, Program A P R 3 , 2 0 0 8

(14)

Data transfer instructions of 8086 microprocessor

General purpose byte or word transfer instructions

MOV

copy byte or word from specified source to specified destination PUSH

copy specified word to top of stack. POP

copy word form top of stack to specified location PUSHA

copy all registers to stack POPA

copy words from stack to all registers. XCHG

Exchange bytes or exchange words XLAT

translate a byte in AL using a table in memory. These are I/O port transfer instructions IN

copy a byte or word from specific port to accumulator OUT

copy a byte or word from accumulator to specific port Special address transfer Instructions

(15)

load effective address of operand into specified register LDS

load DS register and other specified register from memory LES

load ES register and other specified register from memory Flag transfer instructions

LAHF

load AH with the low byte of flag register SAHF

store AH register to low byte of flag register PUSHF

copy flag register to top of stack POPF

copy word to top of stack to flag register You might be also interested in:

:: Assembly Language Programs to compute an expression

:: Interfacing Analog-to-Digital converter to 8086 using 8255

:: Interfacing Digital-To-Analog converter to 8086 using 8255

0 comments

Labels: 8086, Assembly Language M A R 2 9 , 2 0 0 8

(16)

centigrade (celsius) to fahrenheit calculation for 8086 Assembly

Language

; this program prints out the result in binary code.

; to see result in hexadecimal or decimal form click vars. name "celsi"

org 100h jmp start

tc db 10 ; t celsius. tf db 0 ; t fahrenheit.

result1 db ? ; result in fahrenheit. result2 db ? ; result in celsius. start:

; convert celsius to fahrenheit according ; to this formula: f = c * 9 / 5 + 32 mov cl, tc mov al, 9 imul cl mov cl, 5 idiv cl add al, 32 mov result1, al mov bl, result1 call print ; print bl

; convert fahrenheit to celsius according ; to this formula: c = (f - 32) * 5 / 9 mov cl, tf

(17)

sub cl, 32 mov al, 5 imul cl mov cl, 9 idiv cl mov result2, al mov bl, result2 call print ; print bl

; wait for any key press... mov ah, 0

int 16h

ret ; return to the operating system.

; procedure prints the binary value of bl print proc near

pusha

; print result in binary: mov cx, 8

p1: mov ah, 2 ; print function. mov dl, '0'

test bl, 10000000b ; test first bit. jz zero

mov dl, '1' zero: int 21h shl bl, 1 loop p1

; print binary suffix: mov dl, 'b'

(18)

; print carrige return and new line: mov dl, 0Dh int 21h mov dl, 0Ah int 21h popa

ret ; return to the main program. print endp

0 comments

Labels: 8086, Assembly Language, celsius, centigrade, fahrenheit, temperature M A R 2 6 , 2 0 0 8

(19)

Troubleshooting a simple 8086 microprocessor based microcomputer

This post will teach you how to troubleshoot a simple microcomputer system such as an SDK-86 board

Identify the Symptoms

make the list of symptoms that you find.they to find wether the proble is with the system or the it is with how the person is use the machine.

Make a careful visual and tactile inspection

check for the components that have been extensively hot.

check to see that all ic are firmly seated in there sockets and that IC's have no bent pins. check for broken wires and loose connections or a thin film of dust etc.

ome meter check to verify your suspicions. Check the power supply

determine the power supply voltages for the manual and check the supply voltages directly on the appropriate pins of some IC's to make sure the voltage is actually getting there.

Do a signal Rool Call

make a quick check of some key signals around the CPU of the microprocessor. if the problem is a bad IC this can help point you towards the one that is bad.

check if clock signals is present with the oscilloscope.

check if CPU is putting out control signals such as RD WR and ALE.

check the bus line to see if there is any activity on the buses. if there is no activity on these buses then the common problem is that the CPU is stuck on hold wait halt or reset condition or by afilure od some TTL devices.

perform check on the RAM and ROM and port decoders. Systematically substitute socketed IC's

the easiest case of substitution is that where you have two identical microprocessor one that works and one that doesn't and the IC's of both units are in the sockets for this case you can use the working system to test the IC's from the non working system.

(20)

Equipment for troubleshooting Microcomputers Logical Analyzers

a logical analyzer is very powerfully troubleshooting tool but to use it effectively you need some detailed knowledge ans d program listing for the system that you are trying to troubleshoot.

for detailed steps for the trouble shooting you can refer the book microprocessor and interfacing by DOUGLAS V HALL . This post is based on that the steps given in that book You might be also interested in:

:: Assembly Language Programs to compute an expression

:: Interfacing Analog-to-Digital converter to 8086 using 8255

:: Interfacing Digital-To-Analog converter to 8086 using 8255

1 comments

Labels: 8086, Troubleshooting M A R 1 5 , 2 0 0 8

(21)

free and open source 8086 Microprocessor Emulator

i8086emu

this is a free and open source Intel 8086 based microprocessor cross-platform emulator. It has support for dynamically loadable device plugins and some peripherals like a PIT, PIC, 8-segment-displays, buttons and leds. i8086emu comes with an ncurses and an GTK-2 gui here is the screen short of the emulator this can work major operating systems likeAll 32-bit MS Windows (95/98/NT/2000/XP), All POSIX (Linux/BSD/UNIX-like OSes) Linux this software is downloaded more than 4500 time from sourceforge.net

dowload it here download microprocessor emulator

You might be also interested in:

(22)

:: common intreview questions on 8086

:: Assembly Language Source Codes

1 comments

Labels: 8086, emulator, microprocessor, software M A R 8 , 2 0 0 8

(23)

Program to display ASCII characters on the display unit

this is the program to display ascii characters on the screen it is written in assembly language and can work of 8086 microprocessors

.model small .stack .data .code ; program starting main proc mov dl, 00h lop: mov ah, 02h int 21h inc dl jnz lop mov ax,4c00h int 21h main endp end main

; end of the program

You might be also interested in:

:: Interfacing Stepper Motor to 8086 using 8255

:: MASM 611 SOFTWARE

:: bit reversal and sorting programs

0 comments

Labels: 8086, Assembly Language, microprocessor, Program M A R 2 , 2 0 0 8

(24)

why there are two ground pins in 8086

here are the different answers

first one :

1 for analog n other for digital ground as i ve heard..the diff b/w analog n digital ground is digital ground doesnt have transient currents sumthin like that i heard dont knw in detail..

second one :

several pins of 8086 are multiplexed (means they have different functions in different situations). the functions of those pins are controlled by these ground pins. the two functions of processor is grouped in two groups namely 'min mode operation' and 'max mode operation'.

third one :

there are two pins to support max mode and min mode...one of the mode is

multiprocessor mode i.e. in ithis mode u can connect two or more multiprocessors to work in cooperation. if both pin r grounded it means single procesor mode..

last one :

consider a circuit where ur 8086 has to be activated only when certain condition is met. say the output of a logic circuit is low. the output pin of this device is connected to the gnd pin of 8086. when ever the out put pin is low there is a voltage diff between vcc and gnd pins of 8086 and 8086 is activated. so the logic device output pin acts a current sink. the sinking capacities of normal ttl devices are far less compared to the current sourced by a 8086 up. hence 2 gnd pins to split current from 8086 and ensure the current at gnd pin of 8086 does not exceed the sinking capacities of the peripherals.

You might be also interested in:

0 comments

Labels: 8086, ground pin F E B 2 7 , 2 0 0 8

(25)

Assembly Language Source Codes

Here is the list of programs in assembly language with complete source code is provided Assembler Source Code for emu8086 microprocessor emulator and compatible assemblers (16 bit) simply copy these codes and past them on your editor

http://www.emu8086.com/dr/asm2html/assembler_source_code/

it contains list of programs like

 Input 8 bit binary number and print out its decimal equivalent.

 This is a very basic example of a tiny OS. Your own Operating System that runs from floppy drive - easy!

 This example shows how to add huge unpacked BCD numbers  Calculate the sum of elements in V1 array, store result in V2.  How CMP instruction sets the flags.

 See how to operate with Octal, Binary and Decimal values.

 Learn how to set and get file attributes, in other words how to make file Read Only or Hidden.

 This is an example of AAS instruction, it is used to subtract huge BCD numbers.  This sample gets two numbers from the user, calculates the sum of these numbers,

and prints it out.

 This sample shows how to use CMPSW instruction to compare strings.  Make your own interrupts - Custom_Interrupt.asm

 Encryption in Assembly Language

 This sample gets the number from the user, and calculates factorial for it. Supported input from 0 to 8 inclusive!

 Call a procedure from another segment or interrupt.

 This program calculates linear equation: ax + b = 0 The result is printed with floating point.

 This example prints out The easiest and the fastest way to print "Hello World!" using DOS INT 21h (still works under Windows XP in Dos prompt).

 This example converts 2 digit Hex value into numeric value and decimal string representation (so that it can be easily printed if required).

(26)

 A very handy code that can be assembled into a very tiny utility to make floppy boot records and tiny operating systems.

 This sample shows the use of input and output string functions of emu8086.inc  This sample shows how to use SCASW instruction to find a WORD (2 bytes). You might be also interested in:

:: Temperature Control system using 8086

:: Traffic light control system using 8086

:: Assembly Language Program to serve NMI

0 comments

Labels: 8086, Assembly Language F E B 1 9 , 2 0 0 8

(27)

Assembly Language Program to be executed when NMI is generated

Assembly Language Program to be executed when NMI is generated

AIM:To write Assembly Language Program to be executed when NMI is generated APPARATUS:-

Microprocessor trainer kit & power supply. NON MASKABLE INTERRUPT (NMI)

NMI is an edge triggered input pin which causes Type-2 interrupt. The NMI is not mask able internally by software. A transition from low to high initiates the interrupt response at the end of the current instruction. This input is internally synchronized.

When an external device interrupts the CPU at the interrupt pin NMI and the CPU is executing an instruction of a program. The CPU first completes the execution of current instruction. The IP is then incremented by one to point next instruction. The CPU then acknowledges the requesting device on its INTA pin immediately for NMI. After an interrupt is acknowledged, the CPU computes the vector address from the type of the interrupt that may be passed to interrupt structure of the CPU internally or externally (for NMI vector address is 00008 H). The contents of PSW, CS & IP are next pushed on stack. The contents of IP & CS now points to the address of the next instruction in main program from which the execution is to be continued after executing the ISR. The control is then transferred to Interrupt Service Routine for serving the interrupting device. The new address is found out from the interrupt vector table (for NMI [00009:00008] = ISR IP & [0000B:0000A] = ISR CS. The execution of ISR starts. At the end of ISR the last instruction should be IRET. When CPU executes IRET instruction the IP, CS & PSW is popped back from the stack and the execution continued from address received by IP & CS.

WRITE THIS PROGRAM AT 0000:4000 H MEMORY LOCATION AND EXECUTE IT 0000:4000 MOVAX,0FFFFH

0000:4003 MOVBX,0FFFFH 0000:4006 ADDAX,BX 0000:4008 HLT

0000:4009

(28)

0000:4100 MOVAX,0000H 0000:4103 MOVDS,AX 0000:4105 MOVAL,00H 0000:4107 MOV[0008],AL 0000:410A MOVAL,40H 0000:410C MOV[0009],AL 0000:410F MOVAL,00H 0000:4111 MOV[000A],AL 0000:4114 MOVAL,00H 0000:4116 MOV[000B],AL 0000:4119 HLT 0000:411A

NOW PRESS NMI BUTTON ON 8086 MICROPROCESSOR KIT You might be also interested in:

:: MASM 611 SOFTWARE

:: bit reversal and sorting programs

:: Find Square Root of a hexadecimal number in assembly language

:: common intreview questions on 8086 1 comments

Labels: 8086, 8255, Experiment, microprocessor, NMI, Program F E B 9 , 2 0 0 8

(29)

Traffic light control system using 8086

AIM:-

To develop Traffic light Control system using 8086

APPARATUS:-

Microprocessor trainer kit, Traffic light controller kit, power supply, data cable etc THEORY:-

Traffic light controller interface module is designed to simulate the function of four way traffic light controller. Combinations of red, amber and green LED’s are provided to indicate Halt, Wait and Go signals for vehicles. Combination of red and green LED’s are provided for pedestrian crossing. 36 LED’s are arranged in the form of an intersection. A typical junction is represented on the PCB with comprehensive legend printing.

At the left corner of each road, a group of five LED’s (red, amber and 3 green) are

arranged in the form of a T-section to control the traffic of that road. Each road is named North (N), South(S), East (E) and West (W). LED’s L1, L10, L19 & L28 (Red) are for the stop signal for the vehicles on the road N, S, W, & E respectively. L2, L11, L20 & L29 (Amber) indicates wait state for vehicles on the road N, S, W, & E respectively. L3, L4 & L5 (Green) are for left, strait and right turn for the vehicles on road S. similarly L12-L13-L14, L23-L22-L21 & L32-L31-L30 simulates same function for the roads E, N, W

respectively. A total of 16 LED’s (2 Red & 2 Green at each road) are provided for pedestrian crossing. L7-L9.L16-L18, L25-L27 & L34-L36 (Green) when on allows

pedestrians to cross and L6-L8, L15-L17, L24-L26 & L33-L35 (Red) when on alarms the pedestrians to wait.

To minimize the hardware pedestrian’s indicator LED’s (both red and green are connected to same port lines (PC4 to PC7) with red inverted. Red LED’s L10 & L28 are connected to port lines PC2 & PC3 while L1 & L19 are connected to lines PC0 & PC1 after inversion. All other LED’s (amber and green) are connected to port A & B.

WORKING:-

8255 is interfaced with 8086 in I/O mapped I/O and all ports are output ports. The basic operation of the interface is explained with the help of the enclosed program. The enclosed program assumes no entry of vehicles from North to West, from road East to South. At the beginning of the program all red LED’s are switch ON, and all other LED‘s are switched OFF. Amber LED is switched ON before switching over to proceed state from

(30)

Halt state.

The sequence of traffic followed in the program is given below. a) From road north to East

From road east to north From road south to west From road west to south From road west to north b) From road north to East From road south to west From road south to north From road south to east c) From road north to south From road south to north

Pedestrian crossing at roads west & east d) From road east to west

From road west to east

Pedestrian crossing at roads north & south

ASSEMBLY LANGUAGE PROGRAMS:- MODEL SMALL .STACK 100 .DATA CWR EQU 0FFC6 H PORTA EQU 0FFC0 H PORTB EQU 0FFC2 H PORTC EQU 0FFC4 H

(31)

.CODE START: MOV AX,@DATA MOV DS,AX MOV AL,80H MOV DX,CWR OUT DX,AL MOV AL,F3H MOV DX,PORTC OUT DX,AL MOV AL,FFH MOV DX,PORTA OUT DX,AL MOV AL,FFH MOV DX,PORTB OUT DX,AL MOV CL,03H CALL DELAY TOP: MOV AL,EEH MOV DX,PORTA OUT DX,AL MOV AL,EEH MOV DX,PORTB OUT DX,AL MOV CL,02H CALL DELAY MOV AL,FCH MOV DX,PORTC OUT DX,AL MOV AL,7DH MOV DX,PORTA OUT DX,AL MOV AL,57H MOV DX,PORTB

(32)

OUT DX,AL MOV CL,15H CALL DELAY MOV AL,E7H MOV DX,PORTB OUT DX,AL MOV AL,FDH MOV DX,PORTA OUT DX,AL MOV AL,EDH MOV DX,PORTA OUT DX,AL MOV CL,02H CALL DELAY MOV AL,F7H MOV DX,PORTB OUT DX,AL MOV AL,F0H MOV DX,PORTC OUT DX,AL MOV AL,F1H MOV DX,PORTA OUT DX,AL MOV CL,15H CALL DELAY MOV AL,FBH MOV DX,PORTA OUT DX,AL MOV AL,FBH MOV DX,PORTB OUT DX,AL MOV AL,50H MOV DX,PORTC

(33)

OUT DX,AL MOV CL,15H CALL DELAY MOV AL,FEH MOV DX,PORTA OUT DX,AL MOV AL,FEH MOV DX,PORTB OUT DX,AL MOV CL,03H CALL DELAY MOV AL,FFH MOV DX,PORTA OUT DX,AL MOV AL,AFH MOV DX,PORTC OUT DX,AL MOV AL,EEH MOV DX,PORTA OUT DX,AL MOV AL,EEH MOV DX,PORTB OUT DX,AL MOV CL,02H CALL DELAY MOV AL,BFH MOV DX,PORTA OUT DX,AL MOV AL,BFH MOV DX,PORTB OUT DX,AL MOV CL,15H CALL DELAY

(34)

JMP TOP DELAY: MOV BX,10H D1: MOV CX,0FFFFH D2: LOOP D2 DEC BX JNZ D1 INT 03H END START

PROCEDURE:-1. Connect power supply 5V & GND to both microprocessor trainer kit & Traffic light controller interfacing kit.

2. Connect data bus between microprocessor trainer kit & Traffic light controller interfacing kit.

3. Enter the program to control Traffic light.

4. Execute the program by typing GO E000:0B80 ENTER. 5. Observe the LED’s on traffic light controller PCB.

You might be also interested in:

:: MASM 611 SOFTWARE

:: bit reversal and sorting programs

:: Find Square Root of a hexadecimal number in assembly language

:: common intreview questions on 8086

10 comments

Labels: 8086, Experiment, microprocessor, Program, Traffic light control system J A N 2 8 , 2 0 0 8

(35)

Temperature Control system using 8086

AIM:-

To develop Temperature Control system using 8086

APPARATUS:-

Microprocessor trainer kit, Temperature controller kit, power supply, data cable etc THEORY:-

Temperature control system involved interfacing successive approximation ADC and typical method of measuring and controlling the temperature using microprocessor. ADC is among the most widely used devices for data acquisition. A digital computer uses binary values, but in physical world everything is analog, temperature, pressure, humidity, and velocity are few examples of physical quantities that we seal with every day.

Temperature measurement is of great importance in industry as most of the processes are temperature dependent. A number of devices and schemes have been used over the years, for the measurement of temperature. Typical sensors include devices like thermocouples, thermostats, RTD’s and semiconductor sensor.

This system uses semiconductor sensor AD590 to monitor the temperature of water bath. The AD590 is basically a PTAT (proportional to absolute temperature) current regulator. It generates a current O/P of 1µA/K above absolute zero temperature that is -2730C. Thus at 00C the current O/P will be 273µA and 250 if will be 298µA and 373mV at 1000. This O/p is buffered through an OPAMP having a gain of 10. To enable easy equivalence between the transducers O/P in volts and the measured temperature a calibration procedure needs to be done.

WORKING:-

8255 is interfaced with 8086 in I/O mapped I/O. port A (PA0-PA7) as input port is connect to data lines of ADC, PB0, PB1, PB2 lines of port B for channel selection, PC2 connected to Start of conversion (SOC) and PC3 to O/P enable. Channel 1 of ADC is used to input analog signal, Channel 0 of ADC for temperature controller.

(36)

ADC will give binary equivalent of the I/P voltage. Input will vary from 0 to 5V (0 to 100 degree C) and the ADC O/P varies from 00-FFH. So 5V/100 i.e. 5000mvs/100 gives 50mvs/0C. And the counts for indication of temperature are taken as 2.5 (256/100) per degree C.

AC supply to the external heating element is controlled through the onboard Relay, based on the set value. When the temperature of the heating element (which is sensed by AD590, AD590 output is analog which is converted to digital by ADC) is less than the set value (reference value) heating element will be switched ON and when temperature crosses the set temperature AC supply is turned OFF.

MODEL SMALL

.STACK 100

.DATA START:

PORTA EQU FFC0H ; PORTA address

PORTB EQU FFC2H ; PORTB address

PORTC EQU FFC4H ; PORTC address

CTL EQU FFC6H ; Control port address

CTL_BYTE EQU 98H ; 8255 control reg.

CLEAR_DISPLAY EQU F800:4BB1H DWAD EQU F800:4BB1H DBDTA EQU F800:4F1F DEC_TEMP DB 0 SET_TEMP DB 0 ADC_VAL DB 0 COUNT DB 0 PRE_TEMP DB 0 .CODE ADC TABLE: DB 00H,03H,05H,08H,0aH,0dH,0fH,11H,14H,16H

(37)

DB 19H,1cH,1eH,21H,24H,27H,2aH,2cH,2eH,32H DB 34H,36H,39H,3cH,3fH,42H,45H,48H,4aH,4cH DB 4eH,50H,52H,54H,56H,58H,5bH,61H,64H,67H DB 6aH,6dH,70H,72H,74H,77H,7aH,7dH,7fH,82H DB a0H,a2H,a5H,a8H,aaH,aDH,afH,b0H,b3H,b6H DB b9H,bcH,bfH,c1H,c4H,c6H,c9H,ccH,cfH,d0H DB d2H,d5H,d7H,daH,dcH,dfH,e0H,e2H,e5H,e7H DB e9H,ebH,eeH,f1H,f4H,f6H,f9H,fcH,ffH START: MOV AL,CTL_BYTE ; 8255

MOV DX,CTL ; PORTC (lower) as output

OUT DX,AL ; PORTA as input

MOV AL,DEC_TEMP CALL DEC_HEX MOV SET_TEMP,AL MOV AL,DEC_TEMP MOV AH,00 MOV SI,AX

CALL FAR DWAD

MOV DX,CTL MOV AL,02 OUT DX,AL MOV AL,00 OUT DX,AL MOV CX,70 L0:

(38)

LOOP L0 BACK: MOV COUNT,0 CALL ADC CALL DISP_TEMP CALL TEMP_CONTL JMP BACK DISP_TEMP: MOV AL,ADC_VAL

MOV SI,OFFSET ADC_TABLE

AGAIN: CMP AL,[SI] JC FOUND JE FOUND INC SI INC COUNT JMP AGAIN FOUND: MOV AL,COUNT CALL HEX_DEC MOV AH,0 MOV SI,AX

CALL FAR DBDTA

RET TEMP_CONTL: MOV AL,COUNT CMP AL,SET_TEMP JC TURN_ON_RELAY RELAY_OFF: MOV DX,PORTB MOV AL,0FFH OUT DX,AL MOV DL,20H HERE1: MOV CX,FFFFH HERE:

(39)

LOOP HERE DEC DL JNZ HERE1 RET TURN_ON_RELAY: MOV DX,PORTB MOV AL,00H OUT DX,AL CONTINUE: MOV CX,FFFFH L22: LOOP L22 RET ADC: MOV DX,CTL MOV AL,01 OUT DX,AL MOV CX,70 L10: LOOP L10 MOV AL,00 OUT DX,AL L1: MOV DX,PORTC IN AL,DX AND AL,80H CMP AL,80H JNZ L1 MOV DX,PORTA IN AL,DX MOV ADC_VAL,AL RET HEX_DEC: MOV AH,00H MOV CL,0AH DIV CL

(40)

MOV CL,04H ROL AL,CL AND AL,F0H OR AL,AH RET DEC_HEX: MOV BL,AL AND BL,0FH AND AL,F0H MOV CL,04 ROR AL,CL MOV CL,0AH MUL CL ADD AL,BL RET END START PROCEDURE:-

<!--[if !supportLists]-->1. <!--[endif]-->Connect power supply 5V & GND to both microprocessor trainer kit & temperature controller interfacing kit.

<!--[if !supportLists]-->2. <!--[endif]-->Connect data bus between microprocessor trainer kit & temperature controller interfacing kit.

<!--[if !supportLists]-->3. <!--[endif]-->Enter the program to read temperature of the water bath from ADC at 0000:4000.

<!--[if !supportLists]-->4. <!--[endif]-->Execute the program by typing GO 0000:4000 enter.

<!--[if !supportLists]-->5. <!--[endif]-->Enter the reference temperature value, when temperature of water bath exceeds reference value then power supply to water bath is switched OFF.

(41)

You might be also interested in:

:: Traffic light control system using 8086

:: Assembly Language Program to serve NMI

References

Related documents

When used in this mode of operation, the telephone company provided ISDN Basic Rate interface is connected to the RJ- 45 connectors marked ISDN IFC #1 , #2 , #3 , and #4..

In this activity, you will connect the 7-segment LED display to the BASIC Stamp, and then run a simple program to test and make sure each LED is properly connected.. 7-Segment

Basic Functioning ...4-1 Power LED Not On ...4-2 Power LED Never Turns Green ...4-2 ADSL LED not On or Blinking ...4-2 LAN or Internet Port LEDs Not On ...4-3 Troubleshooting

Basic Functioning ...3-1 Power LED Is Off or Never Turns Green ...3-2 ADSL LED Is Off or Is Blinking ...3-3 LAN or Internet Port LEDs Not On ...3-4 Cannot Log in to the Modem Router

Basic Functioning ...3-1 Power LED Is Off or Never Turns Green ...3-2 ADSL LED Is Off or Is Blinking ...3-3 LAN or Internet Port LEDs Not On ...3-4 Cannot Log in to the Modem

Basic Functioning ...9-1 Power LED Not On ...9-1 LEDs Never Turn Off ...9-2 LAN or Internet Port LEDs Not On ...9-2 Troubleshooting the Web Configuration Interface

◦When the LED on the switch port connected to the PC or laptop is green, reenter the IP address of the switch in a web browser to display Device Manager.. When Device Manager

Full-duplex should only be configured if the interface will be connected to another port that supports full-duplex operation (for example, another NP-2E-FDX, and Ethernet switch,