You will create a millisecond delay using Timer 0 to control the rate at which several LEDs blink. These LEDs will represent a binary number

Answered step by step
Verified Expert Solution
Question
60 users unlocked this solution today!

You will create a millisecond delay using Timer 0 to control the rate at which several LEDs blink. These LEDs will represent a binary number and will count up continuously to 15. A switch will toggle the rate at which the binary number counts up between an original rate and twice the original rate. The switch will do so using an interrupt service routine. # Instructions Examine comments in switch.cpp, main.cpp, led.cpp, and timer.cpp and complete the described functions. You will need to create a circuit using your breadboard, jumper wires, LEDs, switch and resistors to control the LEDs and switch using the microcontroller.

## switch.cpp 1. A function implementation that returns void and has no parameters called initSwitchPB3 must be present and is used in the main function to initialize the switch on the pin named *PB3*. 2. PB3 must be initialized with an input pull-up resistor 3. Pin-Change Interrupts must be enabled for pin PB3

## led.cpp 1. A function implementation that returns void and has no parameters called initLED must be present and is used in the main function to initialize all LED pins as outputs. 2. Pins named PA0, PA1, PA2, and PA3 must be used to control the LEDs 3. A function implementation called turnOnLEDWithChar that returns void and has a parameter called num of type unsigned unsigned char must be present. 4. The turnOnLEDWithChar function must be **one line of code.** See LED control section for more details.

## switch.cpp 1. A function implementation that returns void and has no parameters called initSwitch must be present and is used in the main function to initialize the pin called *PB3* on the development board as an input.

## timer.cpp 1. A function implementation that returns void and has no parameters called initTimer0 must be present and must initialize timer 0. 2. A function implementation that returns void that passes a parameter to specify the millisecond delay called delayMs must be present and must implement a precise millisecond delay and can work at least up to 100 milliseconds. For loops are allowed.

## main.cpp 1. A call to initLED() and initSwitchPB3() must be present in the main function. 2. An infinite while loop must be present. 3. A state machine for the entire project must be implemented using a typedef enum for states. 4. An ISR to handle the switch being pressed must be present and be used to change states appropriately. 5. The switch press must be debounced using an appropriately designed state machine. 6. When the switch is **pressed and released**, the LEDs change the pace at which they blink (either half or twice depending on the state). 7. LEDs must blink either every 100 ms or 200 ms depending on the state.

# LED Control The purpose of the function turnOnLEDWithChar is to practice a more advanced use of bit operations. We have covered how to manipulate a single bit at a time, however, there are times that are useful to manipulate several at a time. Since the LEDs must be controled with PA0, PA1, PA2, and PA3, we can manipulate a single register and simulatenously manipulate several bits. The method to do this is to first "mask" these bits in a register by setting them to zero and then ORing them with the bits we want. An example of doing this in two steps is: ``` PORTA = PORTA & 0xF0; // sets the first four bits to zero. PORTA = PORTA | (num & 0x0F); // sets the top four bits of num to zero. Then these bits are ORed with PORTA. ``` This can (and must for this lab) be done in one line of code.

I NEED A VS CODE FOR THIS QUESTION. ONLY THE MAIN.C CODE WOULD BE OKAY. PLEASE AND THANKYOU

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Link Copied!

Step: 1

blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

100% Satisfaction Guaranteed-or Get a Refund!

Step: 2Unlock detailed examples and clear explanations to master concepts

blur-text-image_2

Step: 3Unlock to practice, ask and learn with real-world examples

blur-text-image_3

See step-by-step solutions with expert insights and AI powered tools for academic success

  • tick Icon Access 30 Million+ textbook solutions.
  • tick Icon Ask unlimited questions from AI Tutors.
  • tick Icon Order free textbooks.
  • tick Icon 100% Satisfaction Guaranteed-or Get a Refund!

Claim Your Hoodie Now!

Recommended Textbook for

Readings In Database Systems

Authors: Michael Stonebraker

2nd Edition

0934613656, 9780934613651

More Books
flashcard-anime

Study Smart with AI Flashcards

Access a vast library of flashcards, create your own, and experience a game-changing transformation in how you learn and retain knowledge

Explore Flashcards

Students Have Also Explored These Related Databases Questions!