C is general-purpose structured programming language or high level language. It was developed by Dennis Ritchie in 1970s at Bell laboratories. C supports a large no. of operators and a large no. of library function. C is most popular language used for system programming ,such as development of compilers, interpreters , assemblers , operating system like UNIX. A typical C program has 3 sections: #include< stdio.h > //Header file section #include< stdio.h > void main( ) { int a,b; //Type declaration section //Instruction section } #include <stdio.h> main() { printf(“Hello World”); } A library function is a self-contained program that carries out some specific as well as defined tasks. The function prototype or the reference is defined in the header files section so we have to include them in the beginning of program. Example: #include, #define The statements used to change the control flow in a program are called the control statements or control structures in C. Control statements: Logical if structure If-else structure Nested if-else Unconditional goto statement Switch structures The logical if structure checks a given logical condition and transfers the control accordingly. Syntax: Example: If(condition) { Statement; } if(x==3) { Y=2*x; } #include <stdio.h> int main() { int a=1; If(a==1) { printf(“true logic”); } If(a==0) { printf(“false logic”); } return 0; } The if-else structure is more useful than logical if structure. Syntax: if(expression) { S1; } else { S2; } Example: if(i==0) { s=s+1; } else { s=s-1; } #include <stdio.h> int main() { int a=1; If(a==1) { printf(“true logic”); } else { printf(“false logic”); } return 0; } C provides three loop structures to perform looping operations or iterations, in which a set of statements can be repeatedly executed as long as condition is satisfied. Loops are: while Do while For It is similar to the while-loop structure except that the condition is checked at the end of the loop. Syntax: do {S1; } while(condition); Example: do { i=i+1; } while(i <2); #include <stdio.h> int main() {int i=0; do{ printf(“value of i=%d”,i); i++; }while(i<10); return 0; } In while-loop structure condition checked at the starting of the loop. Syntax: while(condition) { s1; } Example: while(i>0) { j=j+1; } is #include <stdio.h> int main() {int i=0; while (i<10){ printf(“value of i=%d”,i); i++; } return 0; } The expr1 is the statement assigning an initial value to a variable,expr2 is a logical expression and expr3 is a statement that is used to alter the value was assigned in the initial expression. Syntax: For(expr1;expr2;expr3) { statements; } Example: For(i=1;i<=5;i++) { j=j+1; } #include <stdio.h> int main() { int i; for(i=0;i<10;i++) { printf(“value of i=%d”,i); } return 0; } 0; 1; Binary to Decimal Conversion Decimal to Binary Conversion 0-9, A, B, C, D, E, F Conversion Decimal to Hexa decimal and vice versa Binary to Hexa Decimal and vice versa 0-7 Conversion ~ One’s Complement (unary operator) >> Right Shift << Left Shift & Bitwise AND | Bitwise OR ^ Bitwise XOR (Exclusive OR) Bitwise Compound Assignment Operators(eg. <<=, >>=,|=,&=, and ^=) #include <stdio.h> int main() { unsigned char ch=32; unsigned char dh; dh=~ch; printf(“~ch=%d\n”,dh); printf(“~ch=%x\n”,dh); printf(“~ch=%X\n”,dh); return 0; } Ch=11010111; Ch>>1 gives output 01101011; Ch>>2 gives output 00110101; #include <stdio.h> void showbits(unsigned char); int main() { unsigned char num=225,i,k; printf(“\n Decimal %d is same as hexa %x”,num,num); for(i=0;i<=5;i++) {k=num>>i; printf(“\n %d right shift %d gives %x”,num,I,k); //showbits(k);} return 0;} Same as right shift operator << Bitwise OR operator (|) Bitwise AND operator (&) Bitwise XOR operator(^) void showbits(unsigned char n) { unsigned char i,k,andmask; for(i=7;i>=0;i--) { andmask=1<<i; k=n & andmask; If(k==0) printf(“0”); else printf(“1”); } } ROBOT: Robot is a machine that gathers information about its environment(senses) and uses that information to follow instructions to do work. MICROCONTROLLERS: Microcontrollers is a single chip computer containing a processor core , memory and programmable input/output peripherals. DDRX: defines whether the port will act as i/p port or o/p port. 1 use for output 0 use for input Example: DDRA DDRA DDRA DDRA = = = = 0b11111111; 0xFF; 1; 010; (binary) (hexa decimal) (decimal) (octal) DDRX.Y: Define individual pin (pin Y of port X) acts as the i/p pin or the o/p pin Example: DDRA.3=1; pin 3 of port A is o/p port. PORTX: Use to assign value to PORTX. Example: PORTA=27 decimal value 27 is assigned to the portA. PORTX.Y: Use to assign value to individual pins(y) of any port (X). Example: PORTA.0=1 assign value 1 to the pin0 of the port A. PINX: Read 8-bit integer value from the port X. Example: X=PINA; Read the 8-bit integer value from the portA. 0<X<255 PINX.Y : Read 1-bit value (individual pin value) from PORTX. Example: X= PINA.2; ( value may be 0 or 1) PORTA is different from port A: Port A uC P O R T A D D R A P I N A External world PROGRAMS: A program to o/p 33 (hex) on Port D. #include <mega16.h> void main( ) { DDRD=0xFF; PORTD=0x33; } PROGRAMS: A program read pins 2 and 7 of Port A. #include <mega16.h> void main( ) { unsigned int x,y; DDRA=0b01111011; x=PINA.2; y=PINA.7; } GND + + VE Longer leg is +ve Terminal 0 1 - + P o r t A For glowing LED PORTA.0=0 (GND) PORTA.1=1 (+V) Or PORTA=0b00000010; Or PORTA=0x02; void main() { DDRB=0XFF; while(1) { PORTB=0XFF; delay_ms(100); PORTB=0X00; delay_ms(100); } }