Question
Convert these C++ codes into assembly language using Atmel Studio 7 #include #include LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3,POSITIVE); //TEMP SENSOR const int sensor=A1; // Assigning analog pin A5
Convert these C++ codes into assembly language using Atmel Studio 7
#include
LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3,POSITIVE);
//TEMP SENSOR const int sensor=A1; // Assigning analog pin A5 to variable 'sensor' float tempc; //variable to store temperature in degree Celsius float tempf; //variable to store temperature in Fahreinheit float vout; //temporary variable to hold sensor reading
//FLOWRATE byte statusLed = 13; byte sensorInterrupt = 0; // 0 = digital pin 2 byte sensorPin = 2; float calibrationFactor = 4.5; volatile byte pulseCount; float flowRate; unsigned int flowMilliLitres; unsigned long totalMilliLitres; unsigned long oldTime;
void setup() { //temperature sensor pinMode(sensor,INPUT); // Configuring sensor pin as input Serial.begin(9600);
//lcd lcd.begin(16,2); lcd.setCursor(0,0); //column 0,row 0 lcd.print("MCTE 2332");
pinMode(13,OUTPUT); pinMode(8,OUTPUT); pinMode(10,OUTPUT);
//FLOWRATE Serial.begin(38400); pinMode(statusLed, OUTPUT); digitalWrite(statusLed, HIGH); // We have an active-low LED attached pinMode(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 uses interrupt 0. // Configured to trigger on a FALLING state change (transition from HIGH // state to LOW state) attachInterrupt(sensorInterrupt, pulseCounter, FALLING); }
void loop() { //TEMP vout=analogRead(sensor); //Reading the value from sensor vout=(vout*500)/1023; tempc=vout; // Storing value in Degree Celsius tempf=(vout*1.8)+32; // Converting to Fahrenheit Serial.print("in DegreeC="); Serial.print("\t"); Serial.print(tempc); Serial.print(" "); Serial.print("in Fahrenheit="); Serial.print("\t"); Serial.print(tempf); Serial.println(); delay(500); //Delay of 1 second for ease of viewing
//FLOWRATE if((millis() - oldTime) > 1000) // Only process counters once per second { // Disable the interrupt while calculating flow rate and sending the value to // the host detachInterrupt(sensorInterrupt); // Because this loop may not complete in exactly 1 second intervals we calculate // the number of milliseconds that have passed since the last execution and use // that to scale the output. We also apply the calibrationFactor to scale the output // based on the number of pulses per second per units of measure (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 that because we've // disabled interrupts the millis() function won't actually be incrementing right // at this point, but it will still return the value it was set to just before // interrupts went away. oldTime = millis(); // Divide the flow rate in litres/minute by 60 to determine how many litres have // passed through the sensor in this 1 second interval, then multiply by 1000 to // convert to millilitres. flowMilliLitres = (flowRate / 60) * 1000; // Add the millilitres passed in this second to the cumulative total totalMilliLitres += flowMilliLitres; unsigned int frac; // Print the flow rate for this second in litres / minute Serial.print("Flow rate: "); Serial.print(int(flowRate)); // Print the integer part of the variable Serial.print("."); // Print the decimal point // Determine the fractional part. The 10 multiplier gives us 1 decimal place. frac = (flowRate - int(flowRate)) * 10; Serial.print(frac, DEC) ; // Print the fractional part of the variable Serial.print("L/min"); // Print the number of litres flowed in this second Serial.print(" Current Liquid Flowing: "); // Output separator Serial.print(flowMilliLitres); Serial.print("mL/Sec");
// Print the cumulative total of litres flowed since starting Serial.print(" Output Liquid Quantity: "); // Output separator Serial.print(totalMilliLitres); Serial.println("mL");
// Reset the pulse counter so we can start incrementing again pulseCount = 0; // Enable the interrupt again now that we've finished sending output attachInterrupt(sensorInterrupt, pulseCounter, FALLING); }
//LCD lcd.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 LED if(flowRate>0) digitalWrite(10,HIGH); else if (flowRate<=0) digitalWrite(10,LOW); //GREEN LED if(tempc>25) digitalWrite(8,HIGH); else digitalWrite(8,LOW);
//RED LED if(digitalRead(10)==HIGH && digitalRead(8)==HIGH ) digitalWrite(13, HIGH); else digitalWrite(13, LOW);
}
void pulseCounter() { // Increment the pulse counter pulseCount++; }
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started