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 . 1 2 3
Lab Experiments Introduction to microprocessor and microcontroller kit. Introduction to registers , Instruction sets, arithmetic operators of 8086 Introduction to General purpose registers, addressing modes, logical operators of 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
7
Introduction to General purpose registers, addressing modes, logical operators of 8051
8
Interfacing of 8254 timer with 8051 Microcontroller
9
Interfacing of Stepper motor control with 8051 Microcontroller
10
Implementation of Seven segment display from ‘0000’ to ‘9999’ using Nuvoton 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 Program 1 outcome
2
3
4
5
Department of Electronics & Communication Engineering b c d e f g h i j k X X X X X Engineering Sciences Basic Professional General and Sciences Subjects(P) (G) Category Technical (B) Arts(E) X Broad area Communication Signal Processing Electronics VLSI Embedded (for X ‘P’category) Staff Mr. A.V.M Manikandan responsible Mr. Selvakumar for preparing the syllabus Date of May 2014 preparation A
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
Program Educational Objective Student Outcomes
c d e f j
PEO1:
PEO2:
PEO3:
PEO4:
Graduates will perform as a successful Professional engineer in related fields of Electronics and Communication Engineering.
Graduates will pursue higher education and/or engage themselves in continuous professional development to meet global standards.
Graduates will work as a team in diverse fields and gradually move into leadership positions.
Graduates will understand current professional issues, apply latest technologies and come out with innovative solutions for the betterment of the nation and society.
√
√
√
√
√
√
√
√
√
√
√
√
√
√
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 S.No Instructional Objective 1 To demonstrate program proficiency using the various addressing modes and data transfer instructions of the target microprocessor.
Program Outcome
Experiment Details
1.Introduction to microprocessor and microcontroller kit. 2.Introduction to registers , Instruction sets, arithmetic e. an ability to identify, operators of 8086 formulate, and solve engineering problems f. Graduate will 3. Introduction to General demonstrate the skills to purpose registers, addressing use modern engineering modes, logical operators of 8086 tools, software’s and equipment to analyze problems
d. Graduate will demonstrate the ability to design a system, component or process as per needs and specification
j. a knowledge of contemporary issues
2
To apply knowledge of the microprocessor’s internal registers and operations by use of a PC based microprocessor simulator.
c. Graduate will demonstrate the ability to design and conduct experiments, analyze and interpret data d. Graduate will demonstrate the ability to design a system, component or process as per needs and specification
6.Introduction to registers , Instruction sets, arithmetic operators of 8051 e. an ability to identify, formulate, and solve 7.Introduction to General engineering problems f. Graduate will purpose registers, addressing demonstrate the skills to modes, logical operators of 8051 use modern engineering tools, software’s and equipment to analyze problems c. Graduate will
7
3
To interface the processor to external devices.
demonstrate the ability to design and conduct experiments, analyze and interpret data d. Graduate will demonstrate the ability to design a system, component or process as per needs and specification
e. an ability to identify, formulate, and solve engineering problems f. Graduate will demonstrate the skills to use modern engineering tools, software’s and equipment to analyze problems
j. a knowledge of contemporary issues
4.8255 PPI using 8086 5.8279 keyboard and display using 8086 8.8254 timer using 8051 Microcontroller 9.Stepper motor control using 8051 Microcontroller 10.Seven segment display using NUVOTON board. 11.ADC using NUVOTON board. 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
1 2 3
4 5
6 7
8 9 10 11 12 13
14 15
Equipments Required I.Programming in 8086 Introduction to microprocessor and 8086 Trainer Kit microcontroller kit. Introduction to registers , Instruction sets, 8086 Trainer Kit arithmetic operators of 8086 Introduction to General purpose registers, 8086 Trainer Kit addressing modes, logical operators of 8086 II. 8086 Interfacing Interfacing of 8255 PPI using 8086 8086 Trainer Kit, 8255 Interfacing of 8279 keyboard and display 8279 module, using 8086 8051 kit
Components Required Power Cables Power Cables Power Cables
Power Cables Power Cables Add on card connector bus.
III.Programming in 8051 Introduction to registers , Instruction sets, 8051 Trainer kit Power Cables arithmetic operators of 8051 Introduction to General purpose registers, 8051 Trainer kit Power Cables addressing modes, logical operators of 8051 IV.8051 Interfacing Interfacing of 8254 timer using 8051 8253 module, Power Cables Microcontroller 8051 kit Interfacing of Stepper motor control using Stepper motor , Power Cables 8051 Microcontroller 8051 kit V. Programming in Nuvoton Board Implementation of Seven segment display Nuvoton kit Power Cables from ‘0000’ to ‘9999’using Nuvoton board 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 board Implementation of temperature sensor using Nuvoton kit Power Cables Nuvoton board VI. Programming in TMS320C6713 Digital signal processor Linear convolution using TMS320C6713 kit TMS320C6713 Power Cables kit Circular convolution using TMS320C6713 kit TMS320C6713 Power Cables 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. Topics include Semiconductor memory devices and systems, microcomputer architecture,assembly language programming, I/O programming, I/O interface design, I/O peripheral devices, datacommunications, and data acquisition systems. Several laboratory exercises will be based on both microprocessor (Intel 8086), microcontroller (Intel 8051) and ARM (nuvoTon‐ Nu‐ LB‐LUC140)). 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 instructor
Class handling
Office location
Office Email phone (@ktr.srmuniv.ac.in)
Mrs. R. Manohari
X1
TP9S4
Mr. R. Prithiviraj
X2
TP10S4
‐‐
prithiviraj.r
Dr.Diwakar.R.marur
X3
TP1003A
‐‐
Diwakar.r
Mr. S. Yuvaraj
X4
TP10S4
‐‐
yuvaraj.s
Mr. A. Joshua Jafferson
X5
TP1206A
2067 joshua.j
Ms.D. Vijayalakshmi
Y1
TP1203A
2064 vijayalakshmi.d
Mr. K. Ramesh
Y2
TP1106A
2063 ramesh.kr
Mrs. J. K. KasthuriBha
Y3
TP10S8
2055 manohari.r
2070 kasthuribha.jk
Consultations Day 5‐12.45PM to 1.20PM Day 5‐12.45PM to 1.20PM Day 5‐12.45PM to 1.20PM Day 5‐12.45PM to 1.20PM . Day 5‐12.45PM to 1.20PM . Day 5‐12.45PM to 1.20PM Day 5‐12.45PM to 1.20PM . Day 5‐12.45PM to 1.20PM .
10
Name of the instructor
Class handling
Office location
Y4
TP10S4
Y5
TP10S8
2061 ferentskoni.k
Y6
TP103A
2065 sriram.a
Mr. M. Maria Dominic Savio Mrs. K. Ferents Koni Jiavana Mr. A.Sriram
Office Email phone (@ktr.srmuniv.ac.in)
‐‐
Consultations
mariadominicsavio Day 5‐1.45PM to 3.20PM . .m Day 5‐12.45PM to 1.20PM . Day 5‐3.45PM to 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 X1 X2 X3 X4 X5 Y1 Y2 Y3 Y4 Y5 Y6
Schedule DAY 1 – 7, 8 & DAY 2 ‐ 3,4 DAY 1 – 7, 8 & DAY 4 – 1,2 DAY 3 – 7, 8 & DAY 5 ‐ 3,4 DAY 2 – 3, 4 & DAY 3 ‐ 7,8 DAY 2 – 3, 4 & DAY 5 ‐ 7,8 DAY 2 – 7, 8 & DAY 5 ‐ 3,4 DAY 2 – 7, 8 & DAY 3 ‐ 3,4 DAY 3 – 3, 4 & DAY 4 ‐ 7,8 DAY 3 – 3, 4 & DAY 5 ‐ 7,8 DAY 4 – 7, 8 & DAY 5 ‐ 3,4 DAY 1 – 7, 8 & DAY 4 ‐ 1,2
11
Professional component General Basic Sciences Engineering sciences & Technical arts Professional subject
‐ ‐ ‐ ‐
0% 0% 0% 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 microcontroller. Through lecture, laboratory, and out‐of‐class assignments, students are provided learning experiences that enable them to:
1. To demonstrate program 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.
Correlates to Student Outcome H
M
L
c, d
e
j
c, d
j
f
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. 1 2 3 4 5 6 7 8 9
Lab Experiments Introduction to microprocessor and microcontroller kit. Introduction to registers , Instruction sets, arithmetic operators of 8086 Introduction to General purpose registers, addressing modes, logical operators of 8086 Interfacing of 8255 PPI with 8086 Interfacing of 8279 keyboard and display with 8086 Introduction to registers , Instruction sets, arithmetic operators of 8051 Introduction to General purpose registers, addressing modes, logical operators of 8051 Interfacing of 8254 timer with 8051 Microcontroller Interfacing of Stepper motor control with 8051 Microcontroller
Sessions 1 2 3 4 5 6 7 8 9
12
10 11 12 13
Seven segment display using Nuvoton board 8 bit ADC using Nuvoton board Design of UART using Nuvoton board Design of thermistor using Nuvaton board
10 11 12 13
Mapping of Instructional Objective with experiments: List of Experiments IO#1 Introduction to microprocessor and microcontroller kit. Introduction to registers , Instruction sets, arithmetic operators of 8086 Introduction to General purpose registers, addressing modes, logical operators of 8086 8255 PPI using 8086 8279 keyboard and display using 8086 Introduction to registers , Instruction sets, arithmetic operators of 8051 Introduction to General purpose registers, addressing modes, logical operators of 8051 8254 timer using 8051 Microcontroller Stepper motor control using 8051 Microcontroller Seven segment display using Nuvoton board 8 bit ADC using Nuvoton board Design of UART using Nuvoton board Design of Thermistor using Nuvoton board
EVALUATION METHODS Internal Assessment Marks: 60
Carrying out lab work & Report Mini Project Attendance Model Exam Prepared by:
:
25
: : :
10 05 20
X X X X X
IO#2
IO#3
X X
X X
X X X X X X
X X X X X X
End Semester Examination Marks: 40 Aim & Procedure : 05 Flowchart & Diagram : 10 Program : 15 Result : 05 Viva‐Voce : 05
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%
‐
10%
Student Contribution 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 MOV [1200],AX LOOP 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 MOV [1200],AX LOOP 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. 2. 3. 4.
What is a Flag register? What is a machine cycle? What is a status signal? What is minimum mode operation of 8086?
1.6(b) Post‐Lab Questions (Refer the program to answer these questions) 1. 2. 3. 4. 5.
List out the type of addressing modes used in your program. If result exceeds 32 bit where is it stored? What is the name given to the register combination DX:AX? What is the instruction used for signed division? 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
6. State the typical application of logical instructions.
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 LOOP1 LOOP2
MOV SI,1100 MOV CL,[SI] INC SI MOV AL,[SI] DEC CL INC SI MOV BL,[SI] CMP AL,BL JC LOOP2 MOV AL,BL DEC CL JNZ LOOP1 MOV [1200],AL HLT
22
Largest number:
LABEL LOOP1 LOOP2
MNEMONICS MOV SI,1100 MOV CL,[SI] INC SI MOV AL,[SI] DEC CL INC SI MOV BL,[SI] CMP AL,BL JNC LOOP2 MOV AL,BL 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 MOV SI,1200 LOOP3 MOV CH,[SI] DEC CH INC SI MOV AL,[SI] LOOP2 INC SI CMP AL,[SI] JC LOOP1 XCHG AL,[SI] XCHG [SI‐1],AL DEC CH LOOP1 JNZ LOOP2 DEC CL JNZ LOOP3 HLT
24
Descending order: LABEL MNEMONICS MOV SI,1200 MOV CL,[SI] DEC CL MOV SI,1200 LOOP3 MOV CH,[SI] DEC CH INC SI MOV AL,[SI] LOOP2 INC SI CMP AL,[SI] JNC LOOP1 XCHG AL,[SI] XCHG [SI‐1],AL DEC CH LOOP1 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
1 (1=I/O) GA mode select PA PCU • 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 Control word register Port A Port B Port C
D2
D1
D0
GB mode select
PB
PCL
Address C6 C0 C2 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. 2. 3. 4.
Initialize the control word register for port C as input and Port B as output in mode0 Initialize 8255 for bidirectional data transfer Port A as input and port B as output. Which control word is required to transfer a data from Port B to Port C in mode 1 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 NEXT
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 OUT C0,AL LOOP NEXT HLT
Program for Rolling Display: (Display message is “HELP US”)
LABEL START NEXT
MNEMONICS MOV SI,1200 MOV CX,000F MOV AL,10 OUT C2,AL MOV AL,CC OUT C2,AL MOV AL,90 OUT C2,AL MOV AL,[SI] OUT C0,AL CALL DELAY INC SI LOOP NEXT JMP START
31
DELAY: LABEL DELAY LOOP1
MNEMONICS MOV DX,A0FF 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 ADD A,#0A STR MOVX @DPTR,A LOOP SJMP HERE HERE DECIMAL TO ASCII: LABEL HERE
MNEMONICS
MOV DPTR,#4500 MOVX A,@DPTR MOV R0,#30 ADD A,R0 INC DPTR 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 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 LOOP RESULT HERE
MNEMONICS MOV DPTR,#5600 MOVX A,@DPTR MOV R1,A MOV R2,#01 MOV A,R1 MOV B,R2 DIV AB MOV R3,A MOV R4,B SUBB A,R2 JZ RESULT INC R2 SJMP LOOP MOV DPTR,#5700 MOV A,R3 MOVX @DPTR,A 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 SJMP HERE 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 SJMP HERE 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 1 0 2 0 0 0 1 3 0 1 0 0 3 0 1 0 0 4 0 0 0 1 4 0 0 1 0 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 1 0 1 1 0 0 1 2 0 1 1 0 2 0 1 0 1 3 0 1 0 1 3 0 1 1 0 4 1 0 0 1 4 1 0 1 0 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. 2. 3. 4. 5. 6. 7. 8. 9.
A1 on A1 and B1 on B1 on B1 and A2 on A2 on A2 and B2 on B2 on B2 and A1 on A1 on etc.
8.4 PROGRAM
8.4.1 STEPPER MOTOR WITH VARYING ANGLES (CLOCKWISE AND ANTICLOCKWISE) LABEL MNEMONICS MOV R4,#FF MOV DPTR,#4500 START MOV R0,#04 MOVX A,@DPTR J0 PUSH DPH PUSH DPL MOV DPTR,#FFC0 MOVX @DPTR,A DJNZ R4,CALL SJMP HERE HERE MOV R2,#03 CALL MOV R1,#0FH MOV R3,#0FH DLY1 DJNZ R3,DLY 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 START J0 DLY1 DLY
MNEMONICS MOV DPTR,#4500 MOV R0,#04 MOVX A,@DPTR PUSH DPH PUSH DPL MOV DPTR,#FFC0 MOV R2,#04H MOV R1,#0FH MOV R3,#0FH 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 6 7
What is the operating voltage of a stepper motor? What are the different types of stepper motor? 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 #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(iOFFD|=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 #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 =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
#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;
ADC‐>ADCR.ADIE = 1;
//
NVIC_EnableIRQ(ADC_IRQn);
/* Step 6. Enable WDT module */
ADC‐>ADCR.ADST=1;
//clear the A/D interrupt flags for safe
} 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 Choose View ÆGraph
ÆTime/Frequency.
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 H .half 1,2,3,4,0,0,0,0
.bss Y,14,2
;input1, M=4 ;input2, N=4
;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: LL1:
ZERO .L1 A2 ZERO .L1 A8
LDH MV SUB
.D1 *A4[A8],A6 ; for(j=0;j