Give an algorithm for a linear array that is asymptotically
Solution
#include<avr/io.h>
 /*Includes io.h header file where all the Input/Output Registers and its Bits are defined for all AVR microcontrollers*/
 
 #define          F_CPU          1000000
 /*Defines a macro for the delay.h header file. F_CPU is the microcontroller frequency value for the delay.h header file. Default value of F_CPU in delay.h header file is 1000000(1MHz)*/
 
 #include<util/delay.h>
 /*Includes delay.h header file which defines two functions, _delay_ms (millisecond delay) and _delay_us (microsecond delay)*/
 
 #define          _7SEGMENT_PORT          PORTB
 /*Defines a macro for the 7segment.h header File. _7SEGMENT_PORT is the microcontroller PORT Register to which the data pins of the 7-segment Display are connected. Default PORT Resister in 7segment.h is PORTB*/
 
 #define          _7SEGMENT_TYPE          COMMON_ANODE
 /*Defines a macro for the 7segment.h header File. _7SEGMENT_TYPE is the type of 7-segment Display (Common Cathode or Common Anode) we are interfacing. Default type of 7-segment display in 7segment.h is Common Anode*/
 
 #include<avr/7segment.h>
 /*Includes 7segment.h header file which defines different functions for 7-segment display. 7segment header file version is 1.1*/
 
 #include<avr/timercounter0.h>
 /*Includes timercounter0.h header file which defines different functions for the timer counter 0. TIMER COUNTER 0 header file version is 1.1*/
 
 #include<avr/interrupt.h>
 /*Includes interrupt.h header file which defines different functions for interrupts*/
 
 volatile unsigned char counter1=0,counter2=0,counter3=0,counter4=0;
 /*Global variable declaration & initialisation*/
 
 /*Interrupt Service Routine for timer counter 0 compare match*/
 ISR(TIMER0_COMP_vect)
 {
counter1++;
 /*Incrementing the 1st place digit*/
counter1=0;
 /*Reseting 1st place digit to 0*/
 
 /*Checking whether the 10th place digit is below the upper limit(9) or not*/
 if(counter2<9)
 {
}
 else
 {
counter3++;
 /*Incrementing the 100th place digit*/
counter3=0;
 /*Reseting 100th place digit to 0*/
 
 /*Checking whether the 1000th place digit is below the upper limit(9) or not*/
 if(counter4<9)
 {
}
 else
 {
}
}
DDRB=0xff;
 /*All the 8 pins of PortB are declared output (all pins of 7 segment display are connected)*/
 
 DDRD=0x0f;
 /*PD0, PD1, PD2 and PD3 pins of PortD are declared output (display select pins 1, 2, 3 and 4 of Quad 7-segment Display are connected)*/
 
 set_timercounter0_mode(2);
 /*Timer counter 0 is set to ctc mode*/
 
 set_timercounter0_output_mode(0);
 /*Timer counter 0 output mode is set for normal port operation*/
 
 set_timercounter0_prescaler(5);
 /*Timer counter 0 frequency is set to 976.5625Hz*/
 
 enable_timercounter0_interrupt(1);
 /*Timer counter 0 compare match interrupt is enabled*/
 
 sei();
 /*Global interrupt is enabled*/
 
 set_timercounter0_compare_value(255);
 /*OCR register value is set to 255*/
 
 /*Start of infinite loop*/
 while(1)
 {
}
}
 /*End of Program*/


