Convert C Codes Assembly Language Using Atmel Studio 7 Include Include Liquidcrystali2c Lc Q43889281
Convert these C++ codes into assembly language using AtmelStudio 7
#include<Wire.h>#include<LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3,POSITIVE);
//TEMP SENSORconst int sensor=A1; // Assigning analog pin A5 to variable’sensor’float tempc; //variable to store temperature in degreeCelsiusfloat tempf; //variable to store temperature inFahreinheitfloat vout; //temporary variable to hold sensor reading
//FLOWRATEbyte statusLed = 13;byte sensorInterrupt = 0; // 0 = digital pin 2byte sensorPin = 2;float calibrationFactor = 4.5;volatile byte pulseCount;float flowRate;unsigned int flowMilliLitres;unsigned long totalMilliLitres;unsigned long oldTime;
void setup(){//temperature sensorpinMode(sensor,INPUT); // Configuring sensor pin asinputSerial.begin(9600);
//lcdlcd.begin(16,2);lcd.setCursor(0,0); //column 0,row 0lcd.print(“MCTE 2332”);
pinMode(13,OUTPUT);pinMode(8,OUTPUT);pinMode(10,OUTPUT);
//FLOWRATESerial.begin(38400);pinMode(statusLed, OUTPUT);digitalWrite(statusLed, HIGH); // We have an active-low LEDattachedpinMode(sensorPin, INPUT);digitalWrite(sensorPin, HIGH);
int pulseCount = 0;int flowRate = 0.0;int flowMilliLitres = 0;int totalMilliLitres = 0;int oldTime = 0;
// The Hall-effect sensor is connected to pin 2 which usesinterrupt 0.// Configured to trigger on a FALLING state change (transitionfrom HIGH// state to LOW state)attachInterrupt(sensorInterrupt, pulseCounter, FALLING);}
void loop(){//TEMPvout=analogRead(sensor); //Reading the value from sensorvout=(vout*500)/1023;tempc=vout; // Storing value in Degree Celsiustempf=(vout*1.8)+32; // Converting to FahrenheitSerial.print(“in DegreeC=”);Serial.print(” “);Serial.print(tempc);Serial.print(” “);Serial.print(“in Fahrenheit=”);Serial.print(” “);Serial.print(tempf);Serial.println();delay(500); //Delay of 1 second for ease of viewing
//FLOWRATEif((millis() – oldTime) > 1000) // Only process countersonce per second{// Disable the interrupt while calculating flow rate andsending the value to// the hostdetachInterrupt(sensorInterrupt); // Because this loop may not complete in exactly 1 secondintervals we calculate// the number of milliseconds that have passed since the lastexecution and use// that to scale the output. We also apply thecalibrationFactor to scale the output// based on the number of pulses per second per units ofmeasure (litres/minute in// this case) coming from the sensor.flowRate = ((1000.0 / (millis() – oldTime)) * pulseCount) /calibrationFactor; // Note the time this processing pass was executed. Note thatbecause we’ve// disabled interrupts the millis() function won’t actually beincrementing right// at this point, but it will still return the value it wasset to just before// interrupts went away.oldTime = millis(); // Divide the flow rate in litres/minute by 60 to determinehow many litres have// passed through the sensor in this 1 second interval, thenmultiply by 1000 to// convert to millilitres.flowMilliLitres = (flowRate / 60) * 1000; // Add the millilitres passed in this second to the cumulativetotaltotalMilliLitres += flowMilliLitres; unsigned int frac; // Print the flow rate for this second in litres /minuteSerial.print(“Flow rate: “);Serial.print(int(flowRate)); // Print the integer part of thevariableSerial.print(“.”); // Print the decimal point// Determine the fractional part. The 10 multiplier gives us 1decimal place.frac = (flowRate – int(flowRate)) * 10;Serial.print(frac, DEC) ; // Print the fractional part of thevariableSerial.print(“L/min”);// Print the number of litres flowed in this secondSerial.print(” Current Liquid Flowing: “); // OutputseparatorSerial.print(flowMilliLitres);Serial.print(“mL/Sec”);
// Print the cumulative total of litres flowed sincestartingSerial.print(” Output Liquid Quantity: “); // OutputseparatorSerial.print(totalMilliLitres);Serial.println(“mL”);
// Reset the pulse counter so we can start incrementingagainpulseCount = 0; // Enable the interrupt again now that we’ve finished sendingoutputattachInterrupt(sensorInterrupt, pulseCounter, FALLING);}
//LCDlcd.setCursor(0,0);lcd.print(“FLOWRATE: “);lcd.print(flowRate);lcd.setCursor(0,1);lcd.print(“TEMP: “);lcd.print(tempc);lcd.print((char)223);lcd.print(“C”);
//ORANGE LEDif(flowRate>0)digitalWrite(10,HIGH);else if (flowRate<=0)digitalWrite(10,LOW); //GREEN LEDif(tempc>25)digitalWrite(8,HIGH);elsedigitalWrite(8,LOW);
//RED LEDif(digitalRead(10)==HIGH && digitalRead(8)==HIGH)digitalWrite(13, HIGH);elsedigitalWrite(13, LOW);
}
void pulseCounter(){// Increment the pulse counterpulseCount++;}
Expert Answer
Answer to Convert these C++ codes into assembly language using Atmel Studio 7#include#includeLiquidCrystal_I2C lcd(0x27,2,1,0,4,5,…
OR