Intermediate to Advanced Assembly Language Programming
Course
In Carshalton
Description
-
Type
Course
-
Location
Carshalton
-
Duration
5 Days
Students successfully completing this course will have a sound understanding of advanced assembly language programming techniques such as Macros and use of Linkers. You'll gain a thorough understanding of working with standard on-chip peripherals as well as interfacing off-chip peripherals (including SPI and I2C devices). You'll learn standard assembly language programming techniques. Suitable for: Attendees should have a good basic understanding of typical small microcontroller architectures and basic assembly language programming skills. Course SMC101 provides suitable background.
Facilities
Location
Start date
Start date
Reviews
Course programme
The course covers techniques needed to develop substantial assembly language programs as found for example in operating system kernel code, metering and measuring equipment, smart sensor systems, motor and engine controllers, byte code interpreters, device drivers and interrupt handlers. Aspects covered include:
- Macro programming techniques
- Use of linkers
- Realising state machine and statechart designs in assembler
- Implementing circular buffers, realising data structures in assembler
- Assembly language programming of on-chip peripherals such as USARTs, I2C and SPI, A/D, Timers, and external interrupts
- Programming and uses of PWM (Pulse Width Modulation) and Capture Compare
- Real Time clocks, Watch Dog Timers and power conservation programming techniques.
Course Benefits
Students successfully completing this course will have a sound understanding of advanced assembly language programming techniques such as Macros and use of Linkers. You'll gain a thorough understanding of working with standard on-chip peripherals as well as interfacing off-chip peripherals (including SPI and I2C devices). You'll learn standard assembly language programming techniques for realising state machines and statecharts and for implementing basic multi-tasking strategies.
Course Contents
Overview of structured programming
- Flow diagrams (including data flow and control flow)
- State machine and state chart diagrams
- Code specification using pseudo code (structured Natural Language)
- Simple sequence diagrams
- Assembler directives
- Inline code vs. function calls
- Simple macros
- Parameterised macros
- Using macros to realise basic data structures
- Using macros to capture complex logic
- Using macros to realise parameter passing in function calls
- How linkers work
- Benefits of modular programming
- Benefits of using libraries
- Understanding and using maths libraries
- Importance of data structures for structured programming
- Implementing data structures in assembler
- Implementing and manipulating arrays in assembler
- RS232
- I2C and SPI
- RS485
- Bit banging techniques for realising serial communications protocols
- Using on chip peripherals for realising serial communications protocols
- Understanding Finite State Machines (FSMs)
- Graphical representation of FSMs using UML notation
- Realisation of FSMs in assembler
- Limitations of FSMs
- Hierarchical FSMs
- Statecharts
- (Advanced topic) Overview of communicating FSMs, sequence diagrams and SDL
- Basic concepts
- Prioritisation of interrupts
- Integrating interrupt handling and application code
- Layered interrupt handling
- Circular buffers and interrupt handlers
- Fundamental concepts
- Timer interrupts and their uses
- Timers and pulse-width modulation
- Timers and data sampling and acquisition
- Timers and task scheduling
- Software only approaches
- Interrupt driven approaches
- Hybrid approaches
- Keypads and button arrays
- LCD displays and their controllers
- Segmented LED displays
- 2D LED arrays
- Interfacing
- Relays
- Programmable switches
- Fundamentals of PLCs
- Understanding Ladder Diagrams
- Realising Ladder Diagram logic in assembler
Intermediate to Advanced Assembly Language Programming