Ec1019A Processor Lab: SRM Univeristy
Ec1019A Processor Lab: SRM Univeristy
Ec1019A Processor Lab: SRM Univeristy
EC1019A PROCESSOR LAB
LABORATORY MANUAL
SEMESTER V
DEAPRTMENT OF
ELECTRONICS AND COMMUNICATION ENGINEERING
SRM UNIVERISTY
(Under SECTION 3 of the UGC Act, 1956)
S.R.M. NAGAR, KATTANKULATHUR – 603203.
Department of Electronics and Communication Engineering
EC1019A
Processor Lab
Laboratory Manual
June 2015
Mr. R.Prithiviraj. and course committee
2
L T P C
EC1019A PROCESSOR LAB 0 0 3 2
Prerequisite : nil
PURPOSE :
This laboratory will provide the students a perfect introduction to the world of
Microprocessors and to provide hands‐on experience essential to the real
understanding of microprocessors architecture and it’s interfacing to the peripheral
devices. The experiments are designed to provide the students with the design principles
of microprocessor systems and real time programming. The course accomplishes this by
using microprocessor kits, simulators and software development systems.
INSTRUCTIONAL OBJECTIVES
1.To demonstrate programming proficiency using the various addressing modes and data
transfer instructions of the target microprocessor.
2.To apply knowledge of the microprocessor’s internal registers and operations by use of a PC based
microprocessor simulator.
3.To interface the processor to external devices
LIST OF EXPERIMENTS
S.No Lab Experiments
.
1 Introduction to microprocessor and microcontroller kit.
2 Introduction to registers , Instruction sets, arithmetic operators of 8086
Introduction to General purpose registers, addressing modes, logical operators of
3
8086
4 Interfacing of 8255 PPI with 8086
5 Interfacing of 8279 keyboard and display with 8086
6 Introduction to registers , Instruction sets, arithmetic operators of 8051
Introduction to General purpose registers, addressing modes, logical operators of
7
8051
8 Interfacing of 8254 timer with 8051 Microcontroller
9 Interfacing of Stepper motor control with 8051 Microcontroller
Implementation of Seven segment display from ‘0000’ to ‘9999’ using Nuvoton
10
board
11 Implementation of Seven segment display for ADC input using Nuvoton board
12 Implementation of UART using Nuvoton board
13 Implementation of temperature sensor using Nuvoton board
14 Linear convolution using TMS320C6713 kit
15 Circular convolution using TMS320C6713 kit
3
EC1019A – Processor Lab
Course designed by Department of Electronics & Communication Engineering
Program A b c d e f g h i j k
1
outcome X X X X X
Engineering
Basic Sciences
General Professional
Sciences and
2 Category (G) Subjects(P)
(B) Technical
Arts(E)
X
3 Broad area Communication Signal Processing Electronics VLSI Embedded
(for
X
‘P’category)
Staff
responsible Mr. A.V.M Manikandan
4 for Mr. Selvakumar
preparing
the syllabus
Date of
5 May 2014
preparation
4
S.R.M University
Faculty of Engineering and Technology
Department of Electronics and Communication Engineering
Sub Code: EC1019A Semester : V
Sub Title: Processor Lab Course Time: Jul–Dec’15
Pre‐requisite : NIL
Co‐requisite : EC1016A Microprocessors & Microcontrollers
Program Outcome
c. Graduate will demonstrate the ability to design and conduct experiments, analyze and
interpret data
Experiment 1 to Experiment no. 15 (Please refer Expt. list)
d. Graduate will demonstrate the ability to design a system, component or process as per
needs and specification
Experiment 4: To interface 8255 Programmable Peripheral Interface with 8086
microprocessor and to test mode 0 operation
Experiment 5: To interface Keyboard /Display to 8086 micro controller and to read key and
display data in leds.
Experiment 8: To interface 8254 programmable timer with 8051 controller and to test the
mode 0 operation.
Experiment 9: To interface a stepper motor with a 8051 kit and to make it run a) clockwise
b) anti clockwise
e. an ability to identify, formulate, and solve engineering problems
Experiment 1 to Experiment no. 15 (Please refer Expt. list)
f. Graduate will demonstrate the skills to use modern engineering tools, software’s and
equipment to analyze problems
Experiment 2: Using 8086 emulator add, subtract, multiply and divide two 16 bit numbers
stored in the memory and save the results of the operation in the memory.
Experiment 3: To find the largest and the smallest of the given array of numbers stored in
memory using 8086.
Experiment 3: To sort the given array of numbers stored in memory location into ascending
and descending order using 8086.
Experiment 10: Perform seven segment display from “0000” to “9999’ in Keil IDE
Experiment 11: Perform seven segment display fetching data from the potentiometer using
Keil IDE
(j) a knowledge of contemporary issues
Experiment 1 to Experiment no. 15 (Please refer Experiment list)
5
S.R.M University
Faculty of Engineering and Technology
Department of Electronics and Communication Engineering
Sub Code : EC1019A Semester : V
Sub Title : Processor Lab Course Time : Jul–Dec’15
Pre_requisite : NIL
Co_requisite : EC01016A Microprocessors & Microcontrollers
Program Educational Objectives Vs Program Outcome
d √ √ √
e √ √
f √ √ √ √
j √ √ √
6
S.R.M University
Faculty of Engineering and Technology
Department of Electronics and Communication Engineering
Sub Code : EC1019A Semester : V
Sub Title : Processor Lab Course Time : Jul–Dec’15
Pre_requisite : NIL
Co_requisite : EC1016A Microprocessors & Microcontrollers
Instructional Objective and Program Outcome
7
demonstrate the ability to
design and conduct
experiments, analyze and
interpret data
3 To interface the d. Graduate will 4.8255 PPI using 8086
processor to demonstrate the ability to
external devices. design a system,
component or process as 5.8279 keyboard and display
per needs and specification using 8086
e. an ability to identify,
formulate, and solve 8.8254 timer using 8051
engineering problems Microcontroller
f. Graduate will
demonstrate the skills to 9.Stepper motor control using
use modern engineering 8051 Microcontroller
tools, software’s and
equipment to analyze 10.Seven segment display using
problems NUVOTON board.
j. a knowledge of
11.ADC using NUVOTON board.
contemporary issues
12. UART using NUVOTON board.
13. Temperature sensor using
NUVOTON board
14. Linear convolution using
TMS320C6713 kit.
15. Circular convolution using
TMS320C6713 kit
8
S.R.M University
Faculty of Engineering and Technology
Department of Electronics and Communication Engineering
Sub Code : EC0321 Semester : V
Sub Title: Processor Lab Course Time : Jul–Dec’14
Pre_requisite : NIL
Co_requisite : EC0309 Microprocessors & Microcontrollers
EXPERIMENTS DETAILS
S.No. Experiments Detail Equipments Components
Required Required
I.Programming in 8086
1 Introduction to microprocessor and 8086 Trainer Kit Power Cables
microcontroller kit.
2 Introduction to registers , Instruction sets, 8086 Trainer Kit Power Cables
arithmetic operators of 8086
3 Introduction to General purpose registers, 8086 Trainer Kit Power Cables
addressing modes, logical operators of 8086
II. 8086 Interfacing
Interfacing of 8255 PPI using 8086 8086 Trainer Kit, Power Cables
4
8255
Interfacing of 8279 keyboard and display 8279 module, Power Cables
5 using 8086 8051 kit Add on card
connector bus.
III.Programming in 8051
Introduction to registers , Instruction sets, 8051 Trainer kit Power Cables
6
arithmetic operators of 8051
Introduction to General purpose registers, 8051 Trainer kit Power Cables
7
addressing modes, logical operators of 8051
IV.8051 Interfacing
Interfacing of 8254 timer using 8051 8253 module, Power Cables
8
Microcontroller 8051 kit
Interfacing of Stepper motor control using Stepper motor , Power Cables
9
8051 Microcontroller 8051 kit
V. Programming in Nuvoton Board
10 Implementation of Seven segment display Nuvoton kit Power Cables
from ‘0000’ to ‘9999’using Nuvoton board
11 Implementation of Seven segment display for Nuvoton kit, Power Cables
ADC input using Nuvoton board Potentiometer
Implementation of UART using Nuvoton Nuvoton kit Power Cables
12
board
Implementation of temperature sensor using Nuvoton kit Power Cables
13
Nuvoton board
VI. Programming in TMS320C6713 Digital signal processor
Linear convolution using TMS320C6713 kit TMS320C6713 Power Cables
14
kit
Circular convolution using TMS320C6713 kit TMS320C6713 Power Cables
15
kit
9
Academic Course Description
SRM University
Faculty of Engineering and Technology
Department of Electronics and Communication Engineering
EC1019A Processor lab
Fifth Semester, 2015‐16 (OddSemester)
Course (catalog) description
This Microprocessor is a required course for under‐graduate students in
the ECE program. The purpose of this course is to teach students the
fundamentals of microprocessor and microcontroller systems. The student will be
able to incorporate these concepts into their electronic designs for other courses
where control can be achieved via a microprocessor/controller implementation.
Compulsory/Elective course: Compulsory
Credit hours: 2 credits
Laboratory
Digital signal processing Laboratory (TP9L3) , Computing Laboratory (TP10L1), RF
Laboratory (TP13L4)
Course coordinator(s)
R.PRITHIVIRAJ, Assistant Professor (Ordinary Grade), Department of ECE
INSTRUCTOR(S)
Name of the Class Office Office Email
Consultations
instructor handling location phone (@ktr.srmuniv.ac.in)
Day 5‐12.45PM to
Mrs. R. Manohari X1 TP9S4 2055 manohari.r
1.20PM
Day 5‐12.45PM to
Mr. R. Prithiviraj X2 TP10S4 ‐‐ prithiviraj.r
1.20PM
Day 5‐12.45PM to
Dr.Diwakar.R.marur X3 TP1003A ‐‐ Diwakar.r
1.20PM
Day 5‐12.45PM to
Mr. S. Yuvaraj X4 TP10S4 ‐‐ yuvaraj.s
1.20PM .
Day 5‐12.45PM to
Mr. A. Joshua Jafferson X5 TP1206A 2067 joshua.j
1.20PM .
Day 5‐12.45PM to
Ms.D. Vijayalakshmi Y1 TP1203A 2064 vijayalakshmi.d
1.20PM
Day 5‐12.45PM to
Mr. K. Ramesh Y2 TP1106A 2063 ramesh.kr
1.20PM .
Day 5‐12.45PM to
Mrs. J. K. KasthuriBha Y3 TP10S8 2070 kasthuribha.jk
1.20PM .
10
Name of the Class Office Office Email
Consultations
instructor handling location phone (@ktr.srmuniv.ac.in)
Mr. M. Maria Dominic mariadominicsavio Day 5‐1.45PM to
Y4 TP10S4 ‐‐
Savio .m 3.20PM .
Mrs. K. Ferents Koni Day 5‐12.45PM to
Y5 TP10S8 2061 ferentskoni.k
Jiavana 1.20PM .
Day 5‐3.45PM to
Mr. A.Sriram Y6 TP103A 2065 sriram.a
4.40PM .
RELATIONSHIP TO OTHER COURSES
Pre‐requisites : NIL
Following courses : Nil
Text book(s) and/or required materials:
Lab manual; additional materials posted on SRM web.
References
1. Processor Lab MANUAL, Department of ECE, SRM University
2. Ray.A.K and Bhurchandi.K.M, “Advanced Microprocessors and Peripherals”, Tata
McGraw‐Hill, 2006.
3. Muhammad Ali Mazidi and Janice Gillispie Mazidi, Rolin D. McKinlay, “The 8051
– Microcontroller and Embedded Systems: Using Assembly and C”, 2nd Edition,
Pearson Education, 2011.
4. Nuvoton (NUC100/140 series Board Schematics manual, nuvoTon (NUC100/140)
series Educational sample codes), www.nuvoton.com
Computer usage
Students are expected to use the computer to write and assemble
assembly language programs and also run them by downloading them to the
target microprocessor. Students will also use a microprocessor software simulator
that runs on the personal computer. Students will also prepare lab reports and
conduct out‐of‐class assignments using the computer.
Class / Lab schedule : one 100 minutes lab session per week, for 10‐14 weeks
Group Schedule
X1 DAY 1 – 7, 8 & DAY 2 ‐ 3,4
X2 DAY 1 – 7, 8 & DAY 4 – 1,2
X3 DAY 3 – 7, 8 & DAY 5 ‐ 3,4
X4 DAY 2 – 3, 4 & DAY 3 ‐ 7,8
X5 DAY 2 – 3, 4 & DAY 5 ‐ 7,8
Y1 DAY 2 – 7, 8 & DAY 5 ‐ 3,4
Y2 DAY 2 – 7, 8 & DAY 3 ‐ 3,4
Y3 DAY 3 – 3, 4 & DAY 4 ‐ 7,8
Y4 DAY 3 – 3, 4 & DAY 5 ‐ 7,8
Y5 DAY 4 – 7, 8 & DAY 5 ‐ 3,4
Y6 DAY 1 – 7, 8 & DAY 4 ‐ 1,2
11
Professional component
General ‐ 0%
Basic Sciences ‐ 0%
Engineering sciences & Technical arts ‐ 0%
Professional subject ‐ 100%
Broad area: Communication | Signal Processing | Electronics | VLSI | Embedded
Mapping of Instructional Objectives with Program Outcome
This course provides the foundation education in Microprocessor and Correlates to
microcontroller. Through lecture, laboratory, and out‐of‐class Student
assignments, students are provided learning experiences that enable Outcome
them to: H M L
1. To demonstrate program proficiency using the various addressing c, d e j
modes and data transfer instructions of the target microprocessor.
2. To apply knowledge of the microprocessor’s internal registers and c, d j f
operations by use of a PC based microprocessor simulator.
3. To interface the processor to external devices. c, d e f,j
H: High correlation, M: Medium correlation, L: Low correlation
Course Learning Outcomes
1. Students should be able to solve basic binary math operations using the
microprocessor / microcontroller
2. Students should be able to demonstrate programming proficiency using the
various addressing modes and data transfer instructions of the target
microprocessor / microcontroller.
3. Students should be able to program using the capabilities of the stack, the
program counter, and the status register and show how these are used to
execute a machine code program.
4. Students should be able to apply knowledge of the microprocessor’s internal
registers and operations by use of a PC based microprocessor simulator.
COURSE TOPICS
S.No. Lab Experiments Sessions
1 Introduction to microprocessor and microcontroller kit. 1
Introduction to registers , Instruction sets, arithmetic operators
2 2
of 8086
Introduction to General purpose registers, addressing modes,
3 3
logical operators of 8086
4 Interfacing of 8255 PPI with 8086 4
5 Interfacing of 8279 keyboard and display with 8086 5
Introduction to registers , Instruction sets, arithmetic operators
6 6
of 8051
Introduction to General purpose registers, addressing modes,
7 7
logical operators of 8051
8 Interfacing of 8254 timer with 8051 Microcontroller 8
9 Interfacing of Stepper motor control with 8051 Microcontroller 9
12
10 Seven segment display using Nuvoton board 10
11 8 bit ADC using Nuvoton board 11
12 Design of UART using Nuvoton board 12
13 Design of thermistor using Nuvaton board 13
Mapping of Instructional Objective with experiments:
List of Experiments IO#1 IO#2 IO#3
Introduction to microprocessor and microcontroller
X
kit.
Introduction to registers , Instruction sets, arithmetic
X
operators of 8086
Introduction to General purpose registers,
X
addressing modes, logical operators of 8086
8255 PPI using 8086 X X
8279 keyboard and display using 8086 X X
Introduction to registers , Instruction sets, arithmetic
X
operators of 8051
Introduction to General purpose registers,
X
addressing modes, logical operators of 8051
8254 timer using 8051 Microcontroller X X
Stepper motor control using 8051 Microcontroller X X
Seven segment display using Nuvoton board X X
8 bit ADC using Nuvoton board X X
Design of UART using Nuvoton board X X
Design of Thermistor using Nuvoton board X X
EVALUATION METHODS
Internal Assessment Marks: 60 End Semester Examination Marks: 40
Carrying out lab work & : 25 Aim & Procedure : 05
Report Flowchart & Diagram : 10
Mini Project : 10 Program : 15
Attendance : 05 Result : 05
Model Exam : 20
Viva‐Voce : 05
Prepared by:
Mr. R.Prithiviraj, Assistant Professor (OG), Department of ECE
Dated: 26 june 2015
Revision No.: 00 Date of revision: NA Revised by: NA
Course Coordinator Academic Coordinator Professor In‐Charge HOD/ECE
(R.Prithiviraj) (Mrs.N. Saraswathy) (Dr.B. Ramachandran) (Dr.S.Malarvizhi)
13
LABORATORY POLICIES AND REPORT FORMAT
Reports are due at the beginning of the lab period. The reports are intended to be
a complete documentation of the work done in preparation for and during the lab.
The report should be complete so that someone else familiar with electronic
design could use it to verify your work. The prelab and postlab report format is as
follows:
1. A neat thorough prelab must be presented to your faculty Incharge at the
beginning of your scheduled lab period. Lab reports should be submitted
on A4 paper. Your report is a professional presentation of your work in the
lab. Neatness, organization, and completeness will be rewarded. Points will
be deducted for any part that is not clear.
2. In this laboratory students will work in teams of three. However, the lab
reports will be written individually. Please use the following format for
your lab reports.
a. Cover Page: Include your name, Subject Code, Section No.,
Experiment No. and Date.
b. Objectives: Enumerate 3 or 4 of the topics that you think the lab
will teach you. DO NOT REPEAT the wording in the lab manual
procedures. There should be one or two sentences per objective.
Remember, you should write about what you will learn, not what
you will do.
c. Design: This part contains all the steps required to arrive at your
final circuit. This should include diagrams, tables, equations,
explanations, etc. Be sure to reproduce any tables you completed
for the lab. This section should also include a clear written
description of your design process. Simply including a circuit
schematic is not sufficient.
d. Questions: Specific questions (Prelab and Postlab) asked in the lab
should be answered here. Retype the questions presented in the
lab and then formally answer them.
3. Your work must be original and prepared independently. However, if you
need any guidance or have any questions or problems, please do not
hesitate to approach your faculty incharge during office hours. Copying any
prelab/postlab will result in a grade of 0. The incident will be formally
reported to the University and the students should follow the dress code in
the Lab session.
4. Each laboratory exercise (circuit) must be completed and demonstrated to
your faculty Incharge in order to receive working circuit credit. This is the
procedure to follow:
a. Circuit works: If the circuit works during the lab period (2 hours),
call your faculty incharge, and he/she will sign and date it.. This is
14
the end of this lab, and you will get a complete grade for this
portion of the lab.
b. Circuit does not work: If the circuit does not work, you must make
use of the open times for the lab room to complete your circuit.
When your circuit is ready, contact your faculty incharge to set up a
time when the two of you can meet to check your circuit.
5. Attendance at your regularly scheduled lab period is required. An
unexpected absence will result in loss of credit for your lab. If for valid
reason a student misses a lab, or makes a reasonable request in advance of
the class meeting, it is permissible for the student to do the lab in a
different section later in the week if approved by the faculty incharge of
both the sections. Habitually late students (i.e., students late more than 15
minutes more than once) will receive 10 point reductions in their grades
for each occurrence following the first. Student attendance less than 75%
is detention.
6. Final grade in this course will be based on laboratory assignments. All labs
have an equal weight in the final grade. Grading will be based on pre‐lab
work, laboratory reports, post‐lab and in‐lab performance (i.e., completing
lab, answering laboratory related questions, etc.,).The faculty Incharge will
ask pertinent questions to individual members of a team at random. Labs
will be graded as per the following grading policy:
Attendance ‐ 05%
Lab Performance ‐ 10%
Prelab ‐ 05%
Post Lab ‐ 05%
Report ‐ 05%
Student Contribution ‐ 10%
Model Exam ‐ 20%
Final exam ‐ 40%
7. Reports Due Dates: Reports are due one week after completion of the
corresponding lab.
8. Systems of Tests: Regular laboratory class work over the full semester will
carry a weightage of 60%. The remaining 40% weightage will be given by
conducting an end semester practical examination for every individual
student if possible or by conducting a 1 to 1 ½ hours duration common
written test for all students, based on all the experiment carried out in the
semester.
15
ADDENDUM
ABET Outcomes expected of graduates of B.Tech / ECE / program by the time that they
graduate:
(a) an ability to apply knowledge of mathematics, science, and engineering
(b) an ability to design and conduct experiments, as well as to analyze and interpret
data
(c) an ability to design a system, component, or process to meet desired needs
within realistic constraints such as economic, environmental, social, political,
ethical, health and safety, manufacturability, and sustainability
(d) an ability to function on multidisciplinary teams
(e) an ability to identify, formulate, and solve engineering problems
(f) an understanding of professional and ethical responsibility
(g) an ability to communicate effectively
(h) the broad education necessary to understand the impact of engineering solutions
in a global, economic, environmental, and societal context
(i) a recognition of the need for, and an ability to engage in life‐long learning
(j) a knowledge of contemporary issues
(k) an ability to use the techniques, skills, and modern engineering tools necessary
for engineering practice.
Program Educational Objectives
PEO1: Graduates will perform as a successful professional engineer in related fields of
Electronics and Communication Engineering.
PEO2: Graduates will pursue higher education and/or engage themselves in continuous
professional development to meet global standards.
PEO3: Graduates will work as a team in diverse fields and gradually move into leadership
positions.
PEO4: Graduates will understand current professional issues, apply latest technologies and
come out with innovative solutions for the betterment of the nation and society.
16
ATTESTATION FROM COURSE TEACHERS
NAME OF THE INSTRUCTOR SIGNATURE
Mrs. R. Manohari
Mr. R. Prithiviraj
Dr.Diwakar.R.marur
Mr. S. Yuvaraj
Mr. A. Joshua Jafferson
Ms.D. Vijayalakshmi
Mr. K. Ramesh
Mrs. J. K. KasthuriBha
Mr. M. Maria Dominic Savio
Mrs. K. Ferents Koni Jiavana
Mr. A.Sriram
Course Coordinator Academic Coordinator Professor In‐Charge HOD/ECE
(R.Prithiviraj) (Mrs.N. Saraswathy) (Dr.B. Ramachandran) (Dr.S. Malarvizhi)
17
Lab 1
Ex.No.1: Introduction to registers, Instruction sets, arithmetic
operators of 8086
1.1(a) Introduction:
The purpose of this experiment is to learn about the registers, instruction sets, and
arithmetic operators of 8086 by addition and subtraction of the given two 16 bit numbers
and store them in a memory location.
1.2(a) Hardware Requirement:
The 8086 Microprocessor kit, Power Supply.
1.3 (a) Program Logic:
The add instruction requires either the addend or the augends to be in a register,
unless the source operand is immediate since the addressing modes permitted for the
source and destination are register‐register, memory to register, register to memory,
register to immediate, and finally memory to immediate.
Hence one of the operands is initially moved to AX. Then using the add instruction,
16‐bit addition is performed.
The next arithmetic primitive is SUB. As discussed in ADD it permits the same modes
of addressing. Hence moving the minuend to a register pair is necessary. Then the result is
moved to a location in memory.
1.4 (a) Program
Introduction of general purpose registers, arithmetic operators (add & sub),
immediate addressing, direct addressing:
Addition without carry:
LABEL MNEMONICS
MOV AX, data
MOV BX, data
ADD AX,BX
MOV [1200],AX
HLT
Addition With Carry:
LABEL MNEMONICS
MOV AX, data
MOV BX, data
MOV CX,0000
ADD AX,BX
JNC LOOP
INC CX
LOOP MOV [1200],AX
MOV [1202],CX
HLT
18
Subtraction without borrow:
LABEL MNEMONICS
MOV AX, data
MOV BX, data
SUB AX,BX
MOV [3580],AX
HLT
Subtraction with borrow
LABEL MNEMONICS
MOV AX, data
MOV BX, data
MOV CX,0000
SUB AX,BX
JNB LOOP
INC CX
LOOP MOV [1200],AX
MOV [1202],CX
HLT
1.5(a) Pre Lab Questions
1. Difference between Microprocessor & Microcontroller?
2. Define BUS and give the classification of Buses
3. What is an addressing mode?
4. How the Microprocessors can be categorized?
1.6(a) Post Lab Questions
1. Calculate the physical address for the given data. DS=1000h, BP=1234h
2. What is the purpose of HLT instruction?
3. What happens if the result is greater than 16bit?
4. The memory address starting from the logical address 0124h:0056h, store
the numbers 0978h, CE45h, 45h and 7809h in consecutive locations. Draw a
diagram showing the physical address and the corresponding data stored.
5. Write a program, which address a constant correction factor to a temp, that
is stored in the data segment. The corrected segment should be stored in a
new location in memory.
19
Ex.No:1‐B (Multiplication and Division)
1.1.(b)Introduction
The purpose of this experiment is to learn about the registers, instruction sets, and
arithmetic operators of 8086 by multiplication and division of the given two 16 bit numbers
and store them in a memory location.
1.2 (b) Hardware Requirement
The 8086 Microprocessor kit, Power Supply.
1.3(b) Program Logic
The 8086 Processor provides both signed and unsigned multiply in their instruction
set to overcome the loss of efficiency in performing the repeated addition.
The MUL instruction can have both 16 and 8 bit operands and the multiplicand is AX
or AL, accordingly the result for a byte multiply is a 16 bit number in AX while that for a word
multiply is a 32 bit number, the lower word of which is in AX and the higher word in DX.
1.4(b) Program
Introduction of general purpose registers, arithmetic operators (mul & div), direct
addressing:
Multiplication:
LABEL MNEMONICS
MOV AX,[1100]
MOV BX,[1102]
MUL BX
MOV [1200],AX
MOV [1202],DX
HLT
Division:
LABEL MNEMONICS
MOV AX,[1100]
MOV BX,[1102]
DIV BX
MOV [1200],AX
MOV [1202],DX
HLT
20
1.5(b) Pre‐Lab Questions
1. What is a Flag register?
2. What is a machine cycle?
3. What is a status signal?
4. What is minimum mode operation of 8086?
1.6(b) Post‐Lab Questions (Refer the program to answer these questions)
1. List out the type of addressing modes used in your program.
2. If result exceeds 32 bit where is it stored?
3. What is the name given to the register combination DX:AX?
4. What is the instruction used for signed division?
5. Explain what is done in the program:
. MODEL SMALL
. DATA
COSTP DB 55H
SELLP DB ?
. CODE
. STARTUP
PROFIT EQU 25H
MOV AL,COSTP
ADD AL,PROFIT
MOV SELLUP,ALL
. EXIT
END
21
Lab 2
Ex.No.2: Introduction to General purpose registers, addressing modes,
logical operators of 8086
2.1 Introduction:
The purpose of this experiment is to learn about the general purpose registers,
instruction sets, addressing modes and logical operators of 8086 by finding the larger and
the smaller numbers from an array which is stored in a memory location.
2.2 Hardware Requirement:
The 8086 Microprocessor kit, Power Supply.
2.3 Program Logic:
To find the largest number in any given array, the contents of the array must be
compared with an arbitrary biggest number. The first number of the array is taken in a
register AL. The second number of the array is compared with the first one. If the first one is
greater than the second one, it is left unchanged. However if the second one is greater than
the first, the second number replaces the first one in the AL register. The procedure is
repeated for every number in the array and thus it requires n iterations. At the end of nth
iteration the largest number will reside in the register AL.
For smallest number the above said logic is repeated but, If the first number is
smaller than the second one it is left unchanged. Otherwise the second number replaces the
first number in the AL register
2.4 Program:
Introduction of general purpose registers, logical operators, indirect addressing,
and loop instructions :
Smallest number:
LABEL MNEMONICS
MOV SI,1100
MOV CL,[SI]
INC SI
MOV AL,[SI]
DEC CL
LOOP1 INC SI
MOV BL,[SI]
CMP AL,BL
JC LOOP2
MOV AL,BL
LOOP2 DEC CL
JNZ LOOP1
MOV [1200],AL
HLT
22
Largest number:
LABEL MNEMONICS
MOV SI,1100
MOV CL,[SI]
INC SI
MOV AL,[SI]
DEC CL
LOOP1 INC SI
MOV BL,[SI]
CMP AL,BL
JNC LOOP2
MOV AL,BL
LOOP2 DEC CL
JNZ LOOP1
MOV [1200],AL
HLT
2.5 Pre‐Lab Questions:
1. Draw the flowchart to find the largest and smallest number of an array?
2. What is the similarity and difference between Subtract and Compare Instruction?
3. What are the addressing modes are used in our program?
4. Initialize register CX to value FFFF and register AX to value 0000, write a program to
exchange the contents of both these register?
2.6 Post‐Lab Questions:
1. What is the purpose of MOV DS, AX?
2. What will be the status of flags after executing the program?
3. What are the addressing modes are used in our program?
4. What is the difference between JUMP and LOOP instructions?
5. Write a program to find the factorial of a number N. for 8086, the maximum size of
an operand for multiplication is only a word. This places a limitation on the value of
N that can be used. Hence the value of N is to be less than 9. Store the result in
memory.
6. Find the values in the destination for each line of this program .
STC
MOV AX,5432H
RCR AL, 1
MOV CL,03
RCL AX,CL
MOV CL,05
ROR AX,CL
ROL AX,1
END
23
Ex.No.2‐b: Sorting of an array in ascending and descending series
2.1(b) Introduction:
The purpose of this experiment is to learn about the general purpose registers,
instruction sets, addressing modes and logical operators of 8086 by sorting the sequence of
numbers from the array stored in a memory location into ascending and descending series.
2.2(b) Hardware Requirement:
The 8086 Microprocessor kit, Power Supply.
2.3(b) Program Logic:
To arrange the given numbers in ascending and descending order, the bubble sorting
method is used. Initially the first number of the series is compared with the second one. If
the first number is greater than second, exchange their positions in the series otherwise
leave the position unchanged. Then compare the second number in the recent form of the
series with third and repeat the exchange part that you are carried out for the first and
second number, and for all the remaining number of the series. Repeat this procedure for
complete series (n‐1) times. After n‐1 iterations you will get the largest number at the end of
the series. Again start from the first number of the series. Repeat the same procedure right
from the first element to the last element. After n‐2 iteration you will get the second highest
number at the last but one place in the series. Repeat this till the complete series is arranged
in ascending order.
2.4(b) Program:
Introduction of general purpose registers, logical operators, indirect addressing,
and loop instructions, compare instruction, exchange instruction, increment & decrement
instruction:
Ascending order:
LABEL MNEMONICS
MOV SI,1200
MOV CL,[SI]
DEC CL
LOOP3 MOV SI,1200
MOV CH,[SI]
DEC CH
INC SI
LOOP2 MOV AL,[SI]
INC SI
CMP AL,[SI]
JC LOOP1
XCHG AL,[SI]
XCHG [SI‐1],AL
LOOP1 DEC CH
JNZ LOOP2
DEC CL
JNZ LOOP3
HLT
24
Descending order:
LABEL MNEMONICS
MOV SI,1200
MOV CL,[SI]
DEC CL
LOOP3 MOV SI,1200
MOV CH,[SI]
DEC CH
INC SI
LOOP2 MOV AL,[SI]
INC SI
CMP AL,[SI]
JNC LOOP1
XCHG AL,[SI]
XCHG [SI‐1],AL
LOOP1 DEC CH
JNZ LOOP2
DEC CL
JNZ LOOP3
HLT
2.5(b) Pre‐Lab Questions:
1. Draw the flow chart to arrange a given series of numbers in ascending and
descending order.
2. Write a small program using DAA instruction?
3. Which type of jump instruction (short, near or far) assembles for the following:
If the distance is 0210H bytes
If the distance is 0020H bytes
If the distance is 100000H bytes
2.6(b) Post‐Lab Questions:
1. What is the purpose of XCHG instruction?
2. What is the use of PUSH and POP instruction?
3. Write an assembly language program in 8086 to sort the given array of 16‐bit
numbers in descending order.
4. What do square brackets means when they appear in an operand?
5. In a given program how many times DEC and JNZ instructions are executed? What
will be content in AX register after executing the program?
MOV AX, 00FF
MOV CL, 05
REPEAT: INC AX
25
DEC CL
JNZ REPEAT
6. Explain what is done in this program. Assume sp – 0310h, when the stack was
initialized.
.MODEL SMALL
.STACK 300H
.CODE
.STARTUP
MOV AX, 4567H
MOV BX, 0ACEH
PUSH AX
PUSH BX
POP AX
POP BX
.EXIT
END
26
Part II‐8086 Microprocessor Interfacing
Lab 3
Interfacing of 8255‐ PROGRAMMABLE PERIPHERAL INTERFACE (PPI)
with 8086
3.1 Problem statement:
Write a program to sense switch positions sw0‐sw7. The sensed pattern to be
displayed on port, to which 8 LED’s are connected. Use 8086 Processor.
3.2 Hardware requirements
The 8086 Microprocessor kit, 8255 Programmable Peripheral Interface add on card,
Interface cable and Power Supply.
3.3 Theory
The 8255 is a widely used, programmable, parallel I/O device.It can be programmed to
transfer data under various conditions, from simple I/O to interrupt I/O.
Features
• Three 8‐bit IO ports PA, PB, PC
• PA can be set for Modes 0, 1, 2. PB for 0,1 and PC for mode 0 and for BSR. Modes 1
and 2 are interrupt driven.
• PC has two 4‐bit ports: PC upper (PCU) and PC lower (PCL), each can be set
independently for Input or Output. Each PC bit can be set/reset individually in BSR
mode.
• PA and PCU are Group A (GA) and PB and PCL are Group B (GB)
• Address/data bus must be externally demultiplexed.
8255 can be operated in two modes
BSR (Bit Set Reset ) mode or
i. I/O mode
ii. BSR mode
Bit set/reset, applicable to PC only. One bit is S/R at a time.
Command word
D7 D6 D5 D4 D3 D2 D1 D0
0 (0=BSR) X X X B2 B1 B0 S/R (1=S,0=R)
Bit select: (Taking Don't care's as 0)
B2 B1 B0 PC bit Control word (Set) Control word (reset)
0 0 0 0 0000 0001 = 01h 0000 0000 = 00h
0 0 1 1 0000 0011 = 03h 0000 0010 = 02h
0 1 0 2 0000 0101 = 05h 0000 0100 = 04h
0 1 1 3 0000 0111 = 07h 0000 0110 = 06h
1 0 0 4 0000 1001 = 09h 0000 1000 = 08h
1 0 1 5 0000 1011 = 0Bh 0000 1010 = 0Ah
1 1 0 6 0000 1101 = 0Dh 0000 1100 = 0Ch
1 1 1 7 0000 1111 = 0Fh 0000 1110 = 0Eh
27
I/O mode
The I/O mode is further divided into three modes:
Mode 0 : all ports function as simple I/O ports
Mode 1 : Hand shake mode whereby Ports A and/or B use bits from port C as
handshake signals
Mode 2. : Port A can be set up for bidirectional data transfer using handshaking
signals from Port C, and Port B can be set up either in Mode 0 or Mode 1.
Command word
D7 D6 D5 D4 D3 D2 D1 D0
1 (1=I/O) GA mode select PA PCU GB mode select PB PCL
• D6, D5: GA mode select:
o 00 = mode0
o 01 = mode1
o 1X = mode2
• D4(PA), D3(PCU): 1=input 0=output
• D2: GB mode select: 0=mode0, 1=mode1
• D1(PB), D0(PCL): 1=input 0=output
Port Address
Register Address
Control word register C6
Port A C0
Port B C2
Port C C4
3.4 Program
1. Initialize port A as input port and port B as output port in mode 0 , to input
the data at port A as set by the SPDT switches and to output the same data
to port B to glow the LED accordingly.
2. Initialize port A as input port and port c as output port in mode 0 , to input
the data at port A as set by the SPDT switches and to output the same data
to port B to glow the LED accordingly.
3. Initialize port C as input port and port B as output port in mode 0 , to input
the data at port A as set by the SPDT switches and to output the same data
to port B to glow the LED accordingly.
Mode 0, Port A input port, Port B output port
LABEL MNEMONICS
MOV AL,90H
OUT C6,AL
IN AL,C0
OUT C2,AL
MOV [1200],AL
HLT
28
Mode 0, Port A input port, Port C output port
LABEL MNEMONICS
MOV AL,90H
OUT C6,AL
IN AL,C0
OUT C4,AL
MOV [1200],AL
HLT
Mode 0, Port C input port, Port B output port
LABEL MNEMONICS
MOV AL,90H
OUT C6,AL
IN AL,C4
OUT C2,AL
MOV [1200],AL
HLT
3.5 Pre‐lab Questions
1. What is control word register?
2. Name the two operating modes of 8255
3. What is BSR mode?
4. Give control word format of BSR mode.
5. What is Input output mode?
3.6 Post‐lab Questions
1. Initialize the control word register for port C as input and Port B as output in mode0
2. Initialize 8255 for bidirectional data transfer Port A as input and port B as output.
3. Which control word is required to transfer a data from Port B to Port C in mode 1
4. Interface an 8255 with 8086 to work as input/output port. Initialize port A as output
port, port B as input port and port C as output port. Port A address should be 0740h.
write a program for the above given data.
29
Lab 4
Interfacing of 8279 Keyboard and display interface with 8086
processor.
4.1 Problem statement:
Design a system to interface sixteen 7 segment display units. Write a program to
display the string in right entry mode. For example, first character will be displayed at the
LSB position, then it will be shifted to the next left display and so on. After all the string
displayed, the display should be blanked, then the same procedure repeated continuously.
4.2 Hardware requirements
The 8051 Microcontroller kit, 8279 Interface add on card, Interface cable and Power
Supply.
4.3 Theory
The 8279 is a widely used for debouncing keys, coding of the keypad matrix and
refreshing the display elements in the microprocessor development system.
Features
A0: Selects data (0) or control/status (1) for reads and writes between micro and 8279.
BD: Output that blanks the displays
CLK: Used internally for timing. Max is 3 MHz.
CN/ST: Control/strobe, connected to the control key on the keyboard
CS: Chip select that enables programming, reading the keyboard, etc
DB7 – DB0 : Consists of bidirectional pins that connect to data bus on microcontroller
IRQ: Interrupt request, becomes 1 when a key is pressed, data is available.
OUT A0‐ A3/B3‐B0: Outputs that sends data to the most significant/least significant nibble of
display.
RD(WR): Connects to micro's IORCor RDsignal, reads data/status registers.
RESET: Connects to system RESET.
R: Return lines are inputs used to sense key depression in the keyboard matrix.
Shift: Shift connects to Shift key on keyboard.
SL3 – SL0: Scan line outputs scan both the keyboard and displays.
Keyboard Interface of 8279
The keyboard matrix can be any size from 2x2 to 8x8. Pins SL2‐ SL0 sequentially scan
each column through a counting operation. The 74LS138 drives 0's on one line at a time. The
8279 scans RL pins synchronously with the scan.RL pins incorporate internal pull‐ups, no
need for external resistor pull‐ups.
Display mode set up:
0 0 0 D D K K K
30
DD‐ Display mode:
00‐ 8 bit character display (left)
01‐ 16 ‐8 bit character display (left)
10‐ 8 bit character display (right)
11‐16 ‐8 bit character display (right)
KKK‐ Keyboard Interface
000 – Encoded Scan Keyboard – 2 key lock out
001‐ Decoded Scan Keyboard – 2 key lock out
010‐ Encoded Scan Keyboard – N key roll over
011‐ Decoded Scan Keyboard – N key roll over
100‐ Encoded Scan sensor matrix
101‐ Decoded Scan sensor matrix
110‐ Strobed input, Encoded display Scan
111‐ Strobed input, Decoded display Scan
4.4 Program to display “A”
LABEL MNEMONICS
MOV AL,00
OUT C2,AL
MOV AL,CC
OUT C2,AL
MOV AL,90
OUT C2,AL
MOV AL,88
OUT C0,AL
MOV AL,FF
MOV CX,0005
NEXT OUT C0,AL
LOOP NEXT
HLT
Program for Rolling Display: (Display message is “HELP US”)
LABEL MNEMONICS
START MOV SI,1200
MOV CX,000F
MOV AL,10
OUT C2,AL
MOV AL,CC
OUT C2,AL
MOV AL,90
OUT C2,AL
NEXT MOV AL,[SI]
OUT C0,AL
CALL DELAY
INC SI
LOOP NEXT
JMP START
31
DELAY:
LABEL MNEMONICS
DELAY MOV DX,A0FF
LOOP1 DEC DX
JNZ LOOP1
RET
4.5 PreLab:
1. State the operating modes of 8279
2. What are the use of CS, A0, RD and WR lines?
3. What is N key lock out?
4. What is N key roll over?
4.6 Post Lab:
1. Define Clock pre scaling.
2. What is BD?
3. Find the program clock command word if external clock frequency is 2MHz.
4. Interface an 8x8 matrix keyboard to 8086 through 8279 in 2 key lockout mode and write
an assembly language program to read keycode to the pressed key. The external clock
frequency is 2MHz. use input output mapped technique.
32
Lab 5
Ex.No.5: Introduction to registers, Instruction sets, arithmetic and
logical operators of 8051
5.1 Introduction:
The purpose of this experiment is to learn about the registers, instruction sets, and
arithmetic operators, logical operators of 8051 by doing the BCD to HEXADECIMAL and vice
versa of a given data using 8051 micro controller trainer kit.
5.2 Hardware Requirement:
The 8051 Microcontroller kit, Power supply.
5.3 Program Logic:
In this program, 8 bit two digit Hexadecimal number system into BCD number
system. The hexadecimal number system (also called base‐16) is a number system that uses
16 unique symbols to represent a particular value. Those symbols are 0‐9 and A‐F. 8 bit two
digit BCD number system into Hexadecimal number system. Binary coded decimal
(BCD) is a system of writing numerals that assigns a four‐digit binary code to each
digit 0 through 9 in a decimal (base‐10) numeral.
5.4 Program:
Intoduction of DPTR, immediate addressing, logical, increment and swap
instructions.
BCD to HEXADECIMAL:
LABEL MNEMONICS
MOV DPTR,#4600
MOVX A,@DPTR
MOV R5,A
ANL A,#F0
SWAP A
MOV R1,A
MOV A,R5
ANL A,#0F
MOV R2,A
MOV A,R1
MOV B,#0A
MUL AB
ADD A,R2
INC DPTR
MOVX @DPTR,A
SJMP HERE
HERE
33
Hexadecimal to BCD
LABEL MNEMONICS
MOV DPTR,#4600
MOVX A,@DPTR
MOV B,#64
DIV AB
INC DPTR
MOVX @DPTR,A
MOV A,B
MOV B,#0A
DIV AB
SWAP A
ADD A,B
INC DPTR
MOVX @DPTR,A
SJMP HERE
HERE
5.4 Pre‐Lab Questions:
1. Upon reset, all ports of the 8051 are configured as _____________ (output, input).
2. Which ports of the 8051 have internal pull‐up resistors?
3. Which ports of the 8051 require the connection of external pull‐up resistors in order to be
used for I/O? Show the drawing for the connection.
5.5 Post‐Lab Questions:
1. How the DPTR register is classified, explain its functions?
2. What is the function of EA pin in 8051?
3. List out the special function registers in 8051.
4. Find the number of times the following loop is performed
MOV R6, #200
BACK: MOV R5, #100
HERE: DJNZ R5, HERE
DJNZ R6, BACK
5. Examine the following code then answer the following questions
A. Will it jump to NEXT?
B. What is in A after CJNE instruction is executed
MOV A, #55H
CJNE A, #99H, NEXT
34
Lab 6
Ex.No.6: Introduction to General purpose registers, addressing modes,
logical operators of 8051
6.1 Introduction:
The purpose of this experiment is to learn about the registers, instruction sets, and
arithmetic operators, logical operators of 8051 by doing the ASCII To Decimal and vice versa
of a given data using 8051 micro controller trainer kit.
6.2 Hardware Requirement:
The 8051 Microcontroller kit, Power supply.
6.3 Program Logic:
In this program, 8 bit two digit ASCII number system into decimal number system.
Acronym for the American Standard Code for Information Interchange. Pronounced ask‐ee,
ASCII is a code for representing English characters as numbers, with each letter assigned a
number from 0 to 127 into decimal number and vice versa.
6.4 Program:
Introduction of arithmetic, loop, registers of 8051
ASCII to DECIMAL:
LABEL MNEMONICS
MOV DPTR,#4500
MOV A,#DATA
CLR C
SUBB A,#30
CLR C
SUBB A,#0A
JC STR
MOV A,#0FF
SJMP LOOP
STR ADD A,#0A
LOOP MOVX @DPTR,A
HERE SJMP HERE
DECIMAL TO ASCII:
LABEL MNEMONICS
MOV DPTR,#4500
MOVX A,@DPTR
MOV R0,#30
ADD A,R0
INC DPTR
HERE
MOVX @DPTR,A
SJMP HERE
35
6.5 Pre‐Lab Questions:
1. What is the major difference between 8051 and 8086?
2. What is meant by the term immediate addressing?
3. There is no stop instruction in the 8051 instruction. Describe a method for
implementing a program stop.
6.6 Post‐Lab Questions:
1. Write an assembly language program to find one’s and two’s complement without
using CPL instruction.
2. What are the two registers in 8051 which are used for indirect addressing?
3. Assume that P1 is an input port connected to a temperature sensor. Write a
program to read the temperature and test it for the value 75. According to the test
results place the temperature value in to the registers indicated by the following.
If T = 75 then A = 75
If T < 75 then R1 = T
If T > 75 then R2 = T
4. Find the contents of register A after executing the following code
CLR A
ORL A, #99H
CPL A
5. In the absence of a SWAP instruction how would you exchange the nibbles?
Write a simple program to show the process.
36
Ex.No.6 (b): Square Root Of A Given Data
6.1(b) Introduction:
The purpose of this experiment is to learn about the registers, instruction sets, and
arithmetic operators, logical operators, addressing modes of 8051 by doing the Square root
of a given data using 8051 micro controller trainer kit.
6.2 (b) Hardware Requirement:
The 8051 Microcontroller kit , Power supply.
6.3(b) Program Logic:
In this program, the square root of a number can be found out by division and
subtraction method.
6.4(b) Program:
LABEL MNEMONICS
MOV DPTR,#5600
MOVX A,@DPTR
MOV R1,A
MOV R2,#01
LOOP MOV A,R1
MOV B,R2
DIV AB
MOV R3,A
MOV R4,B
SUBB A,R2
JZ RESULT
INC R2
SJMP LOOP
RESULT
MOV DPTR,#5700
MOV A,R3
MOVX @DPTR,A
HERE SJMP HERE
37
6.5(b) Pre‐Lab Questions:
1. Why are program counter and stack pointer are 16‐bit registers?
2. What are register banks?
3. Mention any 3 applications of microcontroller?
4. How to program the microcontroller 89C51?
6.6(b) Post‐Lab Questions:
1. Explain power down mode of 8051.
2. Explain the function of RXD and TXD pins of 8051 microcontroller.
3. Explain the reset circuit in 8051.
4. What is the difference between power‐on reset and manual reset?
5. For a machine cycle of 1.085usec find the time delay in the following subroutine:
DELAY:
MOV R2,#200
AGAIN: MOV R3,#250
HERE: NOP
NOP
DJNZ R3,HERE
DJNZ R2,AGAIN
RET
6. Write a program in 8051 to transfer letter ‘A’ serially at 4800 baud rate,
continuously.
38
Lab 7
Interfacing of 8254 programmable timer interface with 8051
Microcontroller.
7.1 Problem Statement:
Write a program to generate waveform that has 50% duty cycle of 150KHz. Assume
that system clock available is 1.5MHz. Implement using 8051 Microcontroller.
7.2 Hardware requirements
The 8051Microcontroller kit, 8253 Interface add on card, Interface cable and Power
Supply.
7.3 Theory
The main features of 8253 are as follows:
1. Three independent 16 bit counters
2. Input clock
3. Programmable counter modes
The clk0 can be connected either to the pclk or to the debounce circuit. Using the debounce
circuit we can generate a pulse and clock the timer. Similarly clock1 can be connected to pclk
and clock2 can be connected to either pclk or out0. In a microprocessor based application,
interrupting the processor after a time delay is essential which is achieved using a timer.
7.3. 1 MODES
Mode 0 – Interrupt on terminal count
The output will be initially low after mode set operation. After loading the counter,
the output will remain low while counting and on terminal count the output will become
high, until reloaded again. Channel 0 is in mode 0 and the program is executed. Output is
observed through a CRO.
Mode 1 – Programmable one shot
After loading the counter, the output will remain low following the rising edge of
the gate input. The output will go high on the terminal count. It is retriggerable, hence the
output will remain low for the full count after the rising edge of the gate input.
Execute the program, give the clock pulses through the debounce logic and observe the
output at the CRO.
Mode 2 – Rate generator
It is a divide by N counter. The output will be low for for one period of the clock
input. The period from one output pulse to the next equals the number of input counts in
the count register. In the CRO observe the input at channel 1 and the output at out1.
Mode 3 – Square Wave Generator
It is similar to mode 2 except that the output will remain high for one half of the
count and go low for the other half for even number count.
If the count is odd, the output will remain high for (count‐1)/2 counts.
39
Mode 4 – Software triggered strobe
In this method , the output is high after mode is set and also during counting. On
terminal count , the output will go low for one clock period and becomes high again. This
mode is used for interrupt generation.
7.4 Program
7.4.1 RATE GENERATOR
LABEL MNEMONICS
MOV DPTR,#FFCE
MOV A,#74H
MOVX @DPTR,A
MOV A,#0A
MOV DPTR,#FFCA
MOVX @DPTR,A
MOV A,#00
MOVX @DPTR,A
HERE SJMP HERE
7.4.2 SQUARE WAVE GENERATOR
LABEL MNEMONICS
MOV DPTR,#FFCE
MOV A,#76H
MOVX @DPTR,A
MOV A,#0A
MOV DPTR,#FFCA
MOVX @DPTR,A
MOV A,#00
MOVX @DPTR,A
HERE SJMP HERE
7.5 Pre Lab:
1. What is RS 232 and state the use of RTS and CTS?
2 What is the use of select counter SC in timer?
3 Draw the control word format of timer.
7.6 Post Lab:
1. What is Debouncing of keys?
2. Interface 8254 & 8086 at counter 0 address 7430h and write a program to call subroutine
after 100ms. Assume that the system clock available is 2MHz.
3. Design a pre‐settable alarm system using 8254 timer. Use switches to accept 4 digit values
in seconds. Alarm should last for 5 seconds. Do not use interrupt.
40
Lab 8
Ex.No.8: Interfacing of Stepper motor with 8051 Microcontroller.
8.1 Problem Statement:
Write an ALP to trigger a stepper motor with +5V, at an angle of 15 degree in each
step in both clockwise and anticlockwise with same speed and different speeds. Implement
using 8051 Microcontroller.
8.2 Hardware Requirement:
The 8051 Microcontroller kit, Stepper motor interface add on card, interface cable,
Power Supply.
8.3 Program Logic:
A motor in which the rotor is able to assume only discrete stationary angular
position is a stepper motor. The rotor motion occurs in a stepwise manner from one
equilibrium position to the next. They are widely used in open and closed looped systems in
a variety of applications. It is either of reluctance type or permanent magnet type. The four
poles structure is continuous with the stator frame and the magnetic field passes through
the cylindrical stator annular ring. The stator poles and three pairs of rotor poles, there
exists 12 possible positions in which a south pole of the rotor can lock with the north pole of
the stator. From this it can be noted that the step size is 360( in degrees)/ Ns x Nr
where Ns = number of stator poles
Nr = number of pair of rotor poles.
There are three different stepping schemes for a stepper motor.
1. Wave scheme
2. 2‐ phase scheme
3. half stepping and mixed scheme
8.3.1 Wave scheme
The stepper motor windings A1,A2,B1,B2 can be cyclically excited with a DC current
to run the motor in the clockwise direction. Consider the four rotor positions of the motor
along with the stator excitations. The switching scheme for the wave mode excitation is
given as follows.
Anti clockwise Clockwise
Step A1 A2 B1 B2 Step A1 A2 B1 B2
1 1 0 0 0 1 1 0 0 0
2 0 0 0 1 2 0 0 1 0
3 0 1 0 0 3 0 1 0 0
4 0 0 1 0 4 0 0 0 1
8.3.2 2‐ Phase scheme:
In this scheme the two adjacent stator windings are energized. There are two
magnetic fields achieved in quadrature and none of the rotor pole faces can be in a direct
alignment with the stator poles.
The switching scheme for the 2‐ phase mode excitation is given as follows.
41
Anti clockwise Clockwise
Step A1 A2 B1 B2 Step A1 A2 B1 B2
1 1 0 0 1 1 1 0 1 0
2 0 1 0 1 2 0 1 1 0
3 0 1 1 0 3 0 1 0 1
4 1 0 1 0 4 1 0 0 1
8.3.3 Half stepping scheme
The previously discussed two schemes have a step size of 30 degrees for the stepper
motor under consideration. However there is a offset of 15 degrees between these two
schemes. By interleaving these two schemes , the step size can be reduced to 15 degrees
there by improving the accuracy of the motor. This is called half stepping scheme.
The switching sequence is as follows.
1. A1 on
2. A1 and B1 on
3. B1 on
4. B1 and A2 on
5. A2 on
6. A2 and B2 on
7. B2 on
8. B2 and A1 on
9. A1 on etc.
8.4 PROGRAM
8.4.1 STEPPER MOTOR WITH VARYING ANGLES (CLOCKWISE AND ANTICLOCKWISE)
LABEL MNEMONICS
MOV R4,#FF
START MOV DPTR,#4500
MOV R0,#04
J0 MOVX A,@DPTR
PUSH DPH
PUSH DPL
MOV DPTR,#FFC0
MOVX @DPTR,A
DJNZ R4,CALL
HERE SJMP HERE
CALL MOV R2,#03
MOV R1,#0FH
DLY1 MOV R3,#0FH
DLY DJNZ R3,DLY
DJNZ R1,DLY1
DJNZ R2,DLY1
MOVX @DPTR,A
POP DPL
POP DPH
INC DPTR
DJNZ R0,JO
SJMP START
42
8.4.2 STEPPER MOTOR WITH VARIABLE SPEED
LABEL MNEMONICS
START MOV DPTR,#4500
MOV R0,#04
J0 MOVX A,@DPTR
PUSH DPH
PUSH DPL
MOV DPTR,#FFC0
MOV R2,#04H
MOV R1,#0FH
DLY1 MOV R3,#0FH
DLY DJNZ R3,DLY
DJNZ R1,DLY1
DJNZ R2,DLY1
MOVX @DPTR,A
POP DPL
POP DPH
INC DPTR
DJNZ R0,JO
SJMP START
8.5 Pre‐Lab Questions:
1 State applications of stepper motor in control systems
2 Draw the 4 possible rotor positions and the corresponding stator excitations in a
stepper motor
3 What is the specific property of the stepper motor which makes it compatible to
interface with the processor?
4. Can a single phase motor or a DC motor be interfaced with a 8086 processor?
5 What is the operating voltage of a stepper motor?
6 What are the different types of stepper motor?
7 State any two applications of stepper motor interfaced with 8086.
8.6 Post Lab:
1. Write a program to run the stepper motor for any number of steps and to stop it.
2. Justify the look up table listed in your program.
3. What do you mean by the instruction out C0 in the program?
4. What is the value of the delay element used in the program?
5. Write a program to interface the stepper motor with 8051 and make it run in
clockwise and anti clock wise direction.
6. Write an ALP to control coveyor belt using stepper motor and 8051 controller. Belt
moves continuously at the rate of 1 step/sec, but stops for 5secs, when external
interrupt occurs ant then continues to move.
7. Design a stepper motor controller and write an ALP to rotate shaft of a 4 phase
stepper motor.
(i) in clockwise 5 rotations.
(ii) in anticlockwise 5 rotations.
43
Part IV – Nuvoton Processor
Lab 9
Ex.No.9: Implementation of Seven segment display from “0000” to
“9999” using Nuvoton board.
9.1 Problem Statement:
Write a program to display the number from 0000 to 9999. 4 LED’s that are in the
Nuvoton Nu‐LB‐NUC140 series Board should be used to display the number sequence.
9.2 Tool Requirement:
KEIL Uversion 4.0, Nuvoton CMSIS Library Files, DrvSYS Library Files, NUC140LB
Series ARM Target Board.
9.3 Program :
Smpl_7seg : counting from 0 to 9999 and display on 7‐segment LEDs
#include <Stdio.h>
#include "NUC1xx.h"
#include "DrvSYS.h"
#include "Seven_Segment.h"
// display an integer on four 7‐segment LEDs
void seg_display(int16_t value)
{
int8_t digit;
digit = value / 1000;
close_seven_segment();
show_seven_segment(3,digit);
DrvSYS_Delay(5000);
value = value ‐ digit * 1000;
digit = value / 100;
close_seven_segment();
show_seven_segment(2,digit);
DrvSYS_Delay(5000);
value = value ‐ digit * 100;
digit = value / 10;
close_seven_segment();
show_seven_segment(1,digit);
DrvSYS_Delay(5000);
44
value = value ‐ digit * 10;
digit = value;
close_seven_segment();
show_seven_segment(0,digit);
DrvSYS_Delay(5000);
int32_t main (void)
{
int32_t i =0;
UNLOCKREG();
DrvSYS_Open(48000000);
LOCKREG();
while(i<0x10000)
{
seg_display(i); // display i on 7‐segment display
DrvSYS_Delay(20000); // delay for keeping display
i++; // increment i
}
}
9.4 Pre‐Lab Questions:
1. What is the processor used in Nuvoton board?
2. What is GPIO and where it is used?
3. Differentiate RISC and CISC machine.
9.5 Post‐Lab Questions:
1. How seven segment display is interfaced in Nuvoton series
45
Lab 10
Ex.No.10: Implementation of Seven segment display using ADC in
Nuvoton board.
10.1 Problem Statement:
Write a program to display the digital value obtained from inbuilt ADC in the 4 LED’s
in the NuvotonNu‐LB‐NUC140 series Board. Assume that the clock source available is 22MHz
and baud rate is 9600 bps.
10.2 Tool Requirement:
KEIL Uversion 4.0, Nuvoton CMSIS Library Files, DrvSYS Library Files
NUC140LB Series ARM Target Board.
10.3 Program :
/* Sample Code : Smpl_7seg_ADC7 */
/* input : ADC[7] (12‐bit) */
/* output : Four Digit on 7‐segment display */
#include <stdio.h>
#include "NUC1xx.h"
#include "Seven_Segment.h"
#define BAUDRATE 9600
void InitADC (void)
{
/* Step 1. GPIO initial */
GPIOA‐>OFFD|=0x00800000; //Disable digital input path
SYS‐>GPAMFP.ADC7_SS21_AD6=1; //Set ADC function
/* Step 2. Enable and Select ADC clock source, and then enable ADC module */
SYSCLK‐>CLKSEL1.ADC_S = 2; //Select 22Mhz for ADC
SYSCLK‐>CLKDIV.ADC_N = 1; //ADC clock source = 22Mhz/2 =11Mhz;
SYSCLK‐>APBCLK.ADC_EN = 1; //Enable clock source
ADC‐>ADCR.ADEN = 1; //Enable ADC module
/* Step 3. Select Operation mode */
ADC‐>ADCR.DIFFEN = 0; //single end input
ADC‐>ADCR.ADMD = 0; //single mode
/* Step 4. Select ADC channel */
ADC‐>ADCHER.CHEN = 0x80;
46
/* Step 5. Enable ADC interrupt */
ADC‐>ADSR.ADF =1; //clear the A/D interrupt flags for safe
ADC‐>ADCR.ADIE = 1;
// NVIC_EnableIRQ(ADC_IRQn);
/* Step 6. Enable WDT module */
ADC‐>ADCR.ADST=1;
}
void Delay(int32_t count)
{
while(count‐‐)
{
// __NOP;
}
}
void seg_display(int16_t value)
{
int8_t digit;
digit = value / 1000;
close_seven_segment();
show_seven_segment(3,digit);
Delay(5000);
value = value ‐ digit * 1000;
digit = value / 100;
close_seven_segment();
show_seven_segment(2,digit);
Delay(5000);
value = value ‐ digit * 100;
digit = value / 10;
close_seven_segment();
show_seven_segment(1,digit);
Delay(5000);
value = value ‐ digit * 10;
digit = value;
close_seven_segment();
show_seven_segment(0,digit);
47
Delay(5000);
}
/*‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
MAIN function
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐*/
int32_t main (void)
{
int32_t adc_value;
UNLOCKREG();
SYSCLK‐>PWRCON.XTL12M_EN = 1; //Enable 12Mhz and set HCLK‐>12Mhz
SYSCLK‐>CLKSEL0.HCLK_S = 0;
LOCKREG();
InitADC();
while(1)
{
while (ADC‐>ADSR.ADF==0); // ADC Flag, wait till 1 (A/DC conversion done)
ADC‐>ADSR.ADF=1; // write 1 to ADF is to clear the flag
adc_value=ADC‐>ADDR[7].RSLT; // input 12‐bit ADC value
seg_display(adc_value); // display value to 7‐segment display
ADC‐>ADCR.ADST=1; // activate next ADC sample
// 1 : conversion start; // 0 : conversion stopped, ADC enter idle state
}
}
10.4 Pre Lab Questions:
1.What does ARM mean?
2. State the specifications of the Nuvoton processor?
3. Differentiate Nuvoton and 8086 trainer boards
10.5 Post Lab Questions
1. What is IDE and why it is needed?
2. What is meant by in circuit programming?
3. Interface an ADC0804 with a processor, for the speech data is converted into digital data.
This data is stored in the array at sampling rate of 1/2048 of second. Then the sampled data
is sent to DAC0830 with same rate to reduce the speech signal.
48
Lab 11
Implementation of UART using Nuvoton board.
11.1 Problem Statement:
Design a suitable mechanism in the NuvotonNu‐LB‐NUC140 series Board for
full duplex communication, for the baud rate of 9600 bps, 8 data bits, 1 stop bit and 0
parity bit.
11.2 Tool Requirement:
KEIL Uversion 4.0, Nuvoton CMSIS Library Files, DrvSYS Library Files
NUC140LB Series ARM Target Board.
11.3 Program:
//
// Smpl_UART0
//
// Nu‐LB‐NUC140
// pin32 GPB0/RX0 to another board's UART TX
// pin33 GPB1/TX0 to another board's UART RX
#include <stdio.h>
#include "Driver\DrvUART.h"
#include "Driver\DrvGPIO.h"
#include "Driver\DrvSYS.h"
#include "NUC1xx.h"
#include "NUC1xx‐LB_002\LCD_Driver.h"
volatile uint8_t comRbuf[16] ={0x30};
volatile uint16_t comRbytes = 0;
volatile uint16_t comRhead = 0;
volatile uint16_t comRtail = 0;
char TEXT1[16] = "TX: sending... ";
char TEXT2[16] = "RX: ";
/*‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐*/
/* UART Callback function */
/*‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐*/
void UART_INT_HANDLE(void)
49
{
uint8_t i;
uint8_t bInChar[1] = {0xFF};
while(UART0‐>ISR.RDA_IF==1)
{
DrvUART_Read(UART_PORT0,bInChar,1);
if(comRbytes < 8) // check if Buffer is full
{
comRbuf[comRbytes] = bInChar[0];
comRbytes++;
}
else if (comRbytes==8)
{
comRbytes=0;
sprintf(TEXT2+4,"%s",comRbuf);
print_lcd(2,TEXT2);
}
}
}
int32_t main()
{
uint8_t i =0;
uint8_t dataout[8] = "NuMicro0";
STR_UART_T sParam;
UNLOCKREG();
DrvSYS_Open(48000000);
LOCKREG();
Initial_panel();
clr_all_panel();
print_lcd(0,"Smpl_UART0 ");
/* Set UART Pin */
50
DrvGPIO_InitFunction(E_FUNC_UART0);
/* UART Setting */
sParam.u32BaudRate = 9600;
sParam.u8cDataBits = DRVUART_DATABITS_8;
sParam.u8cStopBits = DRVUART_STOPBITS_1;
sParam.u8cParity = DRVUART_PARITY_NONE;
sParam.u8cRxTriggerLevel= DRVUART_FIFO_1BYTES;
/* Set UART Configuration */
if(DrvUART_Open(UART_PORT0,&sParam) != E_SUCCESS);
DrvUART_EnableInt(UART_PORT0, DRVUART_RDAINT, UART_INT_HANDLE);
while(1)
{
dataout[7] = 0x30 +i;
DrvUART_Write(UART_PORT0, dataout,8);
i++;
if (i>=10) i = 0;
sprintf(TEXT1+14,"%d",i);
print_lcd(1,TEXT1);
DrvSYS_Delay(5000000);
}
//DrvUART_Close(UART_PORT0);
}
11.4 Pre lab:
1. What is meant by UART?
2. State applications of UART.
3. What is a sample and hold circuit?
11.5 Post lab:
1. Write a program to receive a one character for the baud rate 110bps, data bits are
8, stop bit is 1 and parity bit is none.
51
Lab 11
Implementation of temperature sensor using Nuvoton board.
12.1 Problem Statement:
Design a temperature sensor (thermistor) for 25 degree in the NuvotonNu‐LB‐
NUC140 series Board. Assume that the clock source available is 22MHz and baud rate is 9600
bps.
12.2 Tool Requirement:
KEIL Uversion 4.0, Nuvoton CMSIS Library Files, DrvSYS Library Files
NUC140LB Series ARM Target Board.
12.3 Program:
//
// Smpl_ADC_Thermistor : Thermistor
//
// use ADC6 to read Thermistor resistance
// pin GPA6 : ADC6
// resistance = temperature
// NTSA0103JZ100
// R = 10K ohm at 25 degree
// R = 3.496 K ohm at 50 degree
#include <stdio.h>
#include "NUC1xx.h"
#include "LCD_Driver.h"
void InitADC(void)
{
/* Step 1. GPIO initial */
GPIOA‐>OFFD|=0x00800000; //Disable digital input path
SYS‐>GPAMFP.ADC6_AD7=1; //Set ADC function
52
/* Step 2. Enable and Select ADC clock source, and then enable ADC module */
SYSCLK‐>CLKSEL1.ADC_S = 2; //Select 22Mhz for ADC
SYSCLK‐>CLKDIV.ADC_N = 1; //ADC clock source = 22Mhz/2 =11Mhz;
SYSCLK‐>APBCLK.ADC_EN = 1; //Enable clock source
ADC‐>ADCR.ADEN = 1; //Enable ADC module
/* Step 3. Select Operation mode */
ADC‐>ADCR.DIFFEN = 0; //single end input
ADC‐>ADCR.ADMD = 0; //single mode
/* Step 4. Select ADC channel */
ADC‐>ADCHER.CHEN = 0x40; // channel bit [7:0]
/* Step 5. Enable ADC interrupt */
ADC‐>ADSR.ADF =1; //clear the A/D interrupt flags for safe
ADC‐>ADCR.ADIE = 1;
// NVIC_EnableIRQ(ADC_IRQn);
/* Step 6. Enable WDT module */
ADC‐>ADCR.ADST=1;
}
void Delay(int count)
{
while(count‐‐);
}
int32_t main (void)
{
uint32_t R = 9950; // pullup resister
uint32_t r; // thermister
uint32_t adc_value;
uint32_t temp;
char TEXT0[16]="ADC6 ‐Thermistor";
char TEXT1[16]="ADC : ";
char TEXT2[16]="r : ohm";
53
char TEXT3[16]="Temp.: .C";
UNLOCKREG();
SYSCLK‐>PWRCON.XTL12M_EN = 1; //Enable 12Mhz and set HCLK‐>12Mhz
SYSCLK‐>CLKSEL0.HCLK_S = 0;
LOCKREG();
InitADC();
Initial_panel(); //call initial pannel function
clr_all_panel();
print_lcd(0,TEXT0);
print_lcd(1,TEXT1);
print_lcd(2,TEXT2);
print_lcd(3,TEXT3);
while(1)
{
while(ADC‐>ADSR.ADF==0);
ADC‐>ADSR.ADF=1;
adc_value = ADC‐>ADDR[6].RSLT & 0x0FFC;
r = R * (4096 ‐ adc_value) / adc_value;
// adc_value = 4096 * R / (R+r);
sprintf(TEXT1+7,"%d", adc_value);
print_lcd(1, TEXT1);
sprintf(TEXT2+7,"%d", r);
print_lcd(2, TEXT2);
temp = 0;
sprintf(TEXT3+7,"%s", "unknown");
print_lcd(3,TEXT3);
54
Delay(1000);
ADC‐>ADCR.ADST=1;
}
}
12.4 Pre lab:
1. Define thermistor.
2. What is meant by data acquisition?
12.5 Post lab:
1. Design a thermistor for temperature of 50 degree in the NuvotonNu‐LB‐NUC140
series Board. Assume that the clock source available is 22MHz and baud rate is 9600.
55
CODE COMPOSER STUDIO
INTRODUCTION TO CODE COMPOSER STUDIO
Code Composer is the DSP industry's first fully integrated development environment
(IDE) with DSP‐specific functionality. With a familiar environment liked MS‐based
C++TM, Code Composer lets you edit, build, debug, profile and manage projects
from a single unified environment. Other unique features include graphical signal
analysis, injection/extraction of data signals via file I/O, multi‐processor debugging,
automated testing and customization via a C‐interpretive scripting language and
much more.
CODE COMPOSER FEATURES INCLUDE:
• IDE
• Debug IDE
• Advanced watch windows
• Integrated editor
• File I/O, Probe Points, and graphical algorithm scope probes
• Advanced graphical signal analysis
• Interactive profiling
• Automated testing and customization via scripting
• Visual project management system
• Compile in the background while editing and debugging
• Multi‐processor debugging
• Help on the target DSP
To create a system configuration using a standard configuration file:
Step 1: Start CCS Setup by double clicking on the Setup CCS desktop icon.
Step 2: select Family Æ c67xx
Platform Æ simulator
Endianness Æ little
56
Step 3: Click the Import button (File Æ import) to import our selection (c67xx_sim.ccs) to
the system configuration currently being created in the CCS Setup window.
Step 4: Click the Save and Quit button to save the configuration in the System Registry.
Step 5: Click the Yes button to start the CCS IDE when we exit CCS Setup. The CCS Setup
closes and the CCS IDE automatically opens using the configuration we just created.
57
PROCEDURE TO WORK ON CODE COMPOSER STUDIO
Step 1: Creating a New Project
From the Project menu, choose New.
In the Project Name field, type the name we want for our project. Each project we
create must have a unique name, and Click Finish. The CCS IDE creates a project file
called projectname.pjt. This file stores our project settings and references the
various files used by our project.
The Project Creation wizard window displays.
Step 2: Creating a source file
Create a new source file using ‘File Ænew Æsource file ‘ pull down menu and save
the source file with .c extension in the current project name directory.
58
Save as type: c/c++ source file (*.c*)
Path: C:\CCStudio_v3.1\ MyProjects\Project Name\
Step 3: Add files to our project (source file\ library file\ linker file)
Source file: Add the source file in the project using ‘ProjectÆadd files to project’
pull down menu.
Files of type: c/c++ source file (*.c*)
Path: C:\CCStudio_v3.1\ MyProjects\Project Name\file_name.c
Library file: Add the library file in the project using ‘ProjectÆadd files to project’
pull down menu.
Files of type: Object and Library Files (*.o*,*.l*)
Path: C:\CCStudio_v3.1\ C6000\ cgtools\ lib \ rts6700.lib
Linker file: Add the linker file in the project using ‘ProjectÆadd files to project’
pull down menu.
Files of type: Linker command Files (*.cmd*,*.lcf*)
Path: C:\CCStudio_v3.1\ tutorial\ dsk6711\ hello1 \ hello.cmd
Step 4: Building and Running the Program (compile\ Build\ Load Program\ Run)
Compile: Compile the program using the ‘Project‐compile’ pull down menu or by
clicking the shortcut icon on the left side of program window.
Build: Build the program using the ‘Project‐Build’ pull down menu or by clicking the
shortcut icon on the left side of program window.
Load Program: Load the program in program memory of DSP chip using the ‘File‐
load program’ pull down menu.
Files of type:(*.out*)
Path: C:\CCStudio_v3.1\ MyProjects\Project Name\ Debug\ Project Name.out
Run: Run the program using the ‘Debug‐Run’ pull down menu or by clicking the
shortcut icon on the left side of program window.
59
Step 5: observe output using graph
In the Graph Property Dialog, change the Graph Title, Start Address, and Acquisition
Buffer Size, Display Data Size, DSP Data Type, Auto scale, and Maximum Y‐ Value
properties to the values.
60
EXP.No:14
LINEAR CONVOLUTION USING TMS320C6713
AIM: Verify the linear convolution operation Using DSK Code composer studio
EQUIPMENTS:
TMS 320C6713 Kit.
RS232 Serial Cable
Power Cord
Operating System – Windows XP
Software – CCStudio_v3.1
THEORY:
Convolution is a formal mathematical operation, just as multiplication, addition, and
integration. Addition takes two numbers and produces a third number, while convolution
takes two signals and produces a third signal. Convolution is used in the mathematics of
many fields, such as probability and statistics. In linear systems, convolution is used to
describe the relationship between three signals of interest: the input signal, the impulse
response, and the output signal.
In this equation, x(k), h(n‐k) and y(n) represent the input to and output from the system at
time n. Here we could see that one of the inputs is shifted in time by a value every time it is
multiplied with the other input signal. Linear Convolution is quite often used as a method of
implementing filters of various types.
ALGORITHM
Step 1 Declare three buffers namely Input buffer, Temporary Buffer, Output Buffer.
Step 2 Get the input from the CODEC, store it in Input buffer and transfer it to the first
location of the Temporary buffer.
Step 3 Make the Temporary buffer to point to the last location.
Step 4 Multiply the temporary buffer with the coefficients in the data memory and
accumulate it with the previous output.
Step 5 Store the output in the output buffer.
Step 6 Repeat the steps from 2 to 5.
ASSEMBLY PROGRAM TO IMPLEMENT LINEAR CONVOLUTION
conv.asm:
.global _main
X .half 1,2,3,4,0,0,0,0 ;input1, M=4
H .half 1,2,3,4,0,0,0,0 ;input2, N=4
.bss Y,14,2 ;OUTPUT, R=M+N‐1
61
At the end of input sequences pad ‘M’ and ‘N’ no. of zero’s
_main:
MVKL .S1 X,A4
MVKH .S1 X,A4 ;POINTER TO X
MVKL .S2 H,B4
MVKH . S2 H,B4 ;POINTER TO H
MVKL S1 Y,A5
MVKH . S1 Y,A5 ;POINTER TO Y
MVK . S2 7,B2 ;R=M+N‐1
;MOVE THE VALUE OF ‘R’TO B2 FOR DIFFERENT LENGTH OF I/P SEQUENCES
ZERO .L1 A7
ZERO .L1 A3 ;I=0
LL2:
ZERO .L1 A2
ZERO .L1 A8 ;J=0, for(i=0;i<m+n‐1;i++)
LL1:
LDH .D1 *A4[A8],A6 ; for(j=0;j<=i;j++)
MV .S2X A8,B5 ; y[i]+=x[j]*h[i‐j];
SUB .L2 A3,B5,B7
LDH .D2 *B4[B7],B6
NOP 4
MPY .M1X A6,B6,A7
ADD .L1 A8,1,A8
ADD .L1 A2,A7,A2
CMPLT .L2X B5,A3,B0
[B0] B .S2 LL1
NOP 5
STH .D1 A2,*A5[A3]
ADD .L1 A3,1,A3
CMPLT .L1X A3,B2,A2
[A2] B .S1 LL2
NOP 5
B B3
NOP 5
‘C’ PROGRAM TO IMPLEMENT LINEAR CONVOLUTION :
//Linear convolution program in c language using CCStudio
#include<stdio.h>
int x[15],h[15],y[15];
main()
62
{
int i,j,m,n;
printf("\n enter first sequence length m:");
scanf("%d",&m);
printf("\n enter second sequence length n:");
scanf("%d",&n);
printf("Enter i/p sequence for x(n):\n");
for(i=0;i<m;i++)
scanf("%d",&x[i]);
printf("Enter i/p sequence for h(n): \n");
for(i=0;i<n; i++)
scanf("%d",&h[i]);
// padding of zeors
for(i=m;i<=m+n‐1;i++)
x[i]=0;
for(i=n;i<=m+n‐1;i++)
h[i]=0;
/* convolution operation */
for(i=0;i<m+n‐1;i++)
{
y[i]=0;
for(j=0;j<=i;j++)
{
y[i]=y[i]+(x[j]*h[i‐j]);
}
}
//displaying the o/p
63
printf("Output (Linear Convolution) sequence is:\n ");
for(i=0;i<m+n‐1;i++)
printf("y[%d]=%d\t",i,y[i]);
}
PROCEDURE:
¾ Open Code Composer Studio, make sure the DSP kit is turned on.
¾ Start a new project using ‘Project‐new ‘ pull down menu, save it in a
separate directory(c:\ti\myprojects) with name lconv.pjt.
¾ Add the source files conv.asm.
¾ to the project using ‘ProjectÆadd files to project’ pull down menu.
¾ Add the linker command file hello.cmd.
(Path: c:\ti\tutorial\dsk6713\hello1\hello.cmd)
¾ Add the run time support library file rts6700.lib.
(Path: c:\ti\c6000\cgtools\lib\rts6700.lib)
¾ Compile the program using the ‘Project‐compile’ pull down menu or by
clicking the shortcut icon on the left side of program window.
¾ Build the program using the ‘Project‐Build’ pull down menu or by
clicking the shortcut icon on the left side of program window.
¾ Load the program (lconv.out) in program memory of DSP chip using the
‘File‐load program’ pull down menu.
¾ To View output graphically
Select view Æ graph Æ time and frequency.
64
OUTPUT FOR LINEAR CONVOLUTION:
enter first sequence length m:4
enter second sequence length n:3
Enter i/p sequence for x(n):
1 2 3 4
Enter i/p sequence for h(n):
2 3 1
Output (Linear Convolution) sequence is:
Graph Property Graph
LINEAR CONVOLUTION
65
EXP.No:15
CIRCULAR CONVOLUTION USING TMS320C6713
AIM: To verify the circular convolution operation Using DSK Code composer studio
EQUIPMENTS:
TMS 320C6713 Kit.
RS232 Serial Cable
Power Cord
Operating System – Windows XP
Software – CCStudio_v3.1
THEORY:
Circular convolution is another way of finding the convolution sum of two input
signals. It resembles the linear convolution, except that the sample values of one of the
input signals is folded and right shifted before the convolution sum is found. Also note that
circular convolution could also be found by taking the DFT of the two input signals and
finding the product of the two frequency domain signals. The Inverse DFT of the product
would give the output of the signal in the time domain which is the circular convolution
output. The two input signals could have been of varying sample lengths. But we take the
DFT of higher point, which ever signals levels to.. This process is called circular convolution.
0
66
/*program to implement circular convolution */
#include<stdio.h>
int m,n,x[30],h[30],y[30],i,j, k,x2[30],a[30];
void main()
{
printf(" enter the length of the first sequence\n");
scanf("%d",&m);
printf(" enter the length of the second sequence\n");
scanf("%d",&n);
printf(" enter the first sequence\n");
for(i=0;i<m;i++)
scanf("%d",&x[i]);
printf(" enter the second sequence\n");
for(j=0;j<n;j++)
scanf("%d",&h[j]);
if(m‐n!=0) /*If length of both sequences are not equal*/
{
if(m>n) /* Pad the smaller sequence with zero*/
{
for(i=n;i<m;i++)
h[i]=0;
n=m;
}
for(i=m;i<n;i++)
x[i]=0;
m=n;
}
y[0]=0;
a[0]=h[0];
for(j=1;j<n;j++) /*folding h(n) to h(‐n)*/
a[j]=h[n‐j];
/*Circular convolution*/
for(i=0;i<n;i++)
y[0]+=x[i]*a[i];
67
for(k=1;k<n;k++)
{
y[k]=0;
/*circular shift*/
for(j=1;j<n;j++)
x2[j]=a[j‐1];
x2[0]=a[n‐1];
for(i=0;i<n;i++)
{
a[i]=x2[i];
y[k]+=x[i]*x2[i];
}
}
/*displaying the result*/
printf(" the circular convolution is\n");
for(i=0;i<n;i++)
printf("%d \t",y[i]);
}
PROCEDURE:
¾ Open Code Composer Studio; make sure the DSP kit is turned on.
¾ Start a new project using ‘Project‐new ‘ pull down menu, save it in a
separate directory(c:\ti\myprojects) with name cir conv.pjt.
¾ Add the source files Circular Convolution.C.
¾ to the project using ‘ProjectÆadd files to project’ pull down menu.
¾ Add the linker command file hello.cmd .
(Path: c:\ti\tutorial\dsk6713\hello1\hello.cmd)
¾ Add the run time support library file rts6700.lib
(Path: c:\ti\c6000\cgtools\lib\rts6700.lib)
¾ Compile the program using the ‘Project‐compile’ pull down menu or by
clicking the shortcut icon on the left side of program window.
¾ Build the program using the ‘Project‐Build’ pull down menu or by
clicking the shortcut icon on the left side of program window.
68
¾ Load the program(lconv.out) in program memory of DSP chip using the
‘File‐load program’ pull down menu.
OUTPUT FOR CIRCULAR CONVOLUTION:
enter the length of the first sequence
4
enter the length of the second sequence
3
enter the first sequence
1 2 3 4
enter the second sequence
1 2 3
the circular convolution is
18 16 10 16
Graph Property Graph
CIRCULAR CONVOLUTION
69
SRM University
Department of Electronics and Communication Engineering
EC1019A – PROCESSOR LAB
Laboratory Report Cover sheet
ODD Semester – 2015
Name :
Register Number :
Semester / Section :
Batch :
Venue :
Title of the Experiment :
Date of Performance :
Date of Submission :
Pre Lab 05
Post Lab 5
Lab Performance 10
Lab Report 5
Total 25
Report Verification
Staff Name :
Staff Signature :
70