This Repository contains solutions for a series of microprocessor labs using the 8086/8088 processor, STM32 microcontroller, and ARM Cortex-M4 architecture. The goal of these labs is to provide hands-on experience with assembly language programming, memory management, interfacing with external devices, and using simulators for debugging.
Lab 1 | Assembly program design for 8086/8088: Writing, debugging, and executing an assembly program to calculate the difference between the squares of two numbers, implementing insertion sort, and handling system interrupts. |
---|---|
Lab 2 - A | Introduction to 8086/8088 memory management: Understanding 8-bit and 16-bit memory operations, assembly programming to read from and write to specific memory addresses, and familiarizing with the 74138 decoder. |
Lab 2 - B | Designing an 8086-based system to interface with I/O devices using assembly language. The system captures user input, processes it, and displays results on the output device using the 8255 chip. |
Lab 3 - A | Working with the 8253 Timer in 8086: Implementing a system that controls LEDs with start/stop buttons and setting timers using the 8253 Timer chip. |
Lab 3 - B | Using the 8259 Interrupt Controller: Developing an 8086-based system that handles external interrupts to control the speed of LED blinking using buttons. |
Lab 4 - A | Introduction to ARM Cortex-M4 programming: Using Keil MDK to write and debug assembly programs on ARM, focusing on the architecture and system registers. |
Lab 4 - B | GPIO programming on STM32F401: Configuring GPIO pins for input/output, connecting to 7-segment displays, and writing a C program to control the display of values on the 7-segment display. |
Lab 5 - A | LCD Interfacing with STM32F401: Connecting an alphanumeric LCD display to the STM32 board and programming it to display messages and monitor pulse frequency. |
Lab 5 - B | External interrupts and GPIO on STM32: Configuring external interrupts on GPIO pins and writing a program that reacts to button presses by toggling LED states and adjusting PWM signals. |
Lab 6 - A | Implementing timers on STM32: Writing a program that uses a timer to display elapsed time on an LCD and resets the time on button press. GPIO interrupt handling is also demonstrated. |
Lab 6 - B | Using the STM32 Timer and GPIO interrupts: A program that adjusts PWM duty cycles based on button inputs, showing the effect on connected LEDs. |
- Lab 1: Focuses on basic assembly programming for the 8086 processor, introducing concepts such as register operations, addressing modes, and system interrupts.
- Lab 2: Delves into memory management and interfacing I/O devices with 8086, including the use of decoders and the 8255 programmable peripheral interface.
- Lab 3: Explores the use of hardware timers (8253) and interrupt controllers (8259) with 8086, focusing on controlling external devices like LEDs.
- Lab 4: Introduces the ARM Cortex-M4 architecture, working with assembly programming and GPIO interfacing on the STM32F401.
- Lab 5: Covers interfacing an LCD with the STM32 microcontroller, alongside generating and controlling PWM signals.
- Lab 6: Demonstrates the use of timers and external interrupts on STM32, combining them with LCD displays and PWM control for real-time applications.
Each lab builds on core concepts of microprocessor and microcontroller programming, preparing students for real-world embedded systems development.