Timer
What is a Timer ?
A Timer is device it sense the
time interval and produce an output at a set value . example alarm Timer setting.(
Timer in Wikipedia )
,What is the need of a timer in Micro controller ?
1) Some time micro controller Code need some accurate
Delay ( Example blinking An LED in each accurate 1 sec.
Look LED Blinking example2)Some Time the code needs the code
Repeat 3) Most of the
Interfacing devices with micro-controller needs a clock (accurate interval of clocks)
Example: LCD module require Clock Signal
Look LCD Interfacing Timer in 8051
Also a Timer actually require a clock pulse (pling) .These pulse are given from controller (actually it is in software based not giving ) see below picture
8051 type controller has two Timer Timer 0 and Timer 1 (These two timer is the length of 16 bit ,0000 to FFFF ).These Timer is named as TR0 and TR1.
The Timer Setting/configuring can controlling by the TMOD register
These TMOD register Values is used to decide how the Timer Works .
Sample program
Timer
What is a Timer ?
A Timer is device it sense the
time interval and produce an output at a set value . example alarm Timer setting.(
Timer in Wikipedia )
,What is the need of a timer in Micro controller ?
1) Some time micro controller Code need some accurate
Delay ( Example blinking An LED in each accurate 1 sec.
Look LED Blinking example
2)Some Time the code needs the code
Repeat
3) Most of the
Interfacing devices with micro-controller needs a clock (accurate interval of clocks)
Example: LCD module require Clock Signal
Look LCD Interfacing
Timer in 8051
Also a Timer actually require a clock pulse (pling) .These pulse are given from controller (actually it is in software based not giving ) see below picture
8051 type controller has two Timer Timer 0 and Timer 1 (These two timer is the length of 16 bit ,0000 to FFFF ).These Timer is named as TR0 and TR1.
The Timer Setting/configuring can controlling by the TMOD register
These TMOD register Values is used to decide how the Timer Works .
Sample program
Switch Bounce
Microcontrolers may not in Human thinking frequency .Human thinking frequency is lies in some of low Hz . Microcontroler works variety range of frequency ie ,12Mhz,20 Mhz etc . In a push Button micro controller interfacing, Human and Micro controller are feels that whether the push is pressed or not in different way as follows in the graph .
Some small duration pulse due to denounce generated as multiple touch error
Hardware solution It can be made by a resistor and a capacitor in the following manner or any other for comfortable
When ever the switch is pressed the capacitor will charge rapidly ,practically the first charge wil be across the ,capacitor ,
So we can avoid the denouncing effect .
The capacitor and the resistor will be select in accordance with time constant . as follows
Will be update
Switch Bounce
Microcontrolers may not in Human thinking frequency .Human thinking frequency is lies in some of low Hz . Microcontroler works variety range of frequency ie ,12Mhz,20 Mhz etc . In a push Button micro controller interfacing, Human and Micro controller are feels that whether the push is pressed or not in different way as follows in the graph .
Some small duration pulse due to denounce generated as multiple touch error
Hardware solution
It can be made by a resistor and a capacitor in the following manner or any other for comfortable
When ever the switch is pressed the capacitor will charge rapidly ,practically the first charge wil be across the ,capacitor ,
So we can avoid the denouncing effect .
The capacitor and the resistor will be select in accordance with time constant . as follows
Will be update
* main.c
*
* Created on: Aug 12, 2017
* Author: thannara123
#include
#define FALSE 0
#define TRUE 1 // 0r //!FALSE
struct menu
{
char menu_up_key;
char menu_down_key;
char menu_enter_key :1; // bit feild 1 bit
};
struct menu s1= {0}; //s1.menu_up-key =1;
void struct_1( struct menu,const char *menu_display[]);
int main()
{
const char *menu_display[10];
menu_display[0] = "Menu0";
menu_display[1] = "Menu1";
menu_display[2] = "Menu2";
menu_display[3] = "Menu3";
menu_display[4] = "Menu4";
menu_display[5] = "menu 5";
menu_display[6] = "menu 6";
struct_1(s1,menu_display);
getchar();
return 0;
}
void struct_1(struct menu s1 ,const char *menu_display[])
{
char ch;
do{
ch=getch();
if(ch!='\0')
{
ch=getch();
if(ch=='H')
{
s1.menu_up_key++;
if(s1.menu_up_key==7)
s1.menu_up_key =0;
// printf("UP\n");
printf(" %s\n",*(s1.menu_up_key+menu_display));
}
else if(ch=='P')
{
s1.menu_up_key--;
if(s1.menu_up_key==-1)
{ s1.menu_up_key =6;
goto here;
}
//printf("down\n");
here:
printf("%s\n",*(s1.menu_up_key+menu_display));
}
}
}
while(ch!='e');// while oka key
}
/*
* button_key.c
*
* Created: 7/30/2017 12:02:39 PM
* Author: Krishna
*/ #include
#include "delay.h"
#include "button_key.h"
#include "lcd.h"
void menu_key_display(struct menu s1,const char *menu_display[]);
void UP_Down_Keyvalue(struct menu s1,int i,int j);
/* Function Key Value For get key */
int Key_pressed(void)
{
while(1){
if (LEFT_S) { while(LEFT_S);return 1; }
if (RIGHT_S){ while(RIGHT_S);return 2; }
if (UP_S) { while(UP_S); return 3; }
if (DOWN_S) { while(DOWN_S);return 4 ; }
if (OK_S) { while(OK_S);return 5 ; }
}
}
/* Function Key Value For Up Key & Enter*/
void menu_key_display(struct menu s1,const char *menu_display[])
{
int ch;
int a;
int menu_position =0;
LCD_DisplayString(menu_display[menu_position]);
do{
repat:
ch = Key_pressed();
if(ch==1||ch==2)
{
if(ch==2)
{ if(ch==2)
{ if(s1.menu_side_key==4)
s1.menu_side_key = 0;
LCD_Clear();
LCD_GoToLine(0);
LCD_DisplayString(*((++s1.menu_side_key)+menu_display));
menu_position=1;
}
}
else if(ch==1)
{
if(ch==1)
{if(s1.menu_side_key==1 ||s1.menu_side_key==0)
{
s1.menu_side_key=5;
}
LCD_Clear();
LCD_DisplayString(*((--s1.menu_side_key)+menu_display));
menu_position=1;
}
}
}
if(menu_position==0)
goto repat;
}while(ch!=5);
a = s1.menu_side_key;
switch(a)
{
case 1: // set time
{
LCD_Clear();
LCD_GoToLine(0);
LCD_DisplayString(menu_display[5]);
LCD_GoToLine(1);
LCD_DisplayString(" HH:MM:SS:PM/AM");
UP_Down_Keyvalue(s1,2,4);
break;
}
case 2: // Set date
{
LCD_Clear();
LCD_GoToLine(0);
LCD_DisplayString(menu_display[6]);
LCD_GoToLine(1);
LCD_DisplayString(" DD:MM:YY");
UP_Down_Keyvalue(s1,2,3);
break;
}
case 3: // set alarm
{
LCD_Clear();
LCD_GoToLine(0);
LCD_DisplayString(menu_display[7]);
LCD_GoToLine(1);
LCD_DisplayString(" HH:MM:SS:AM/PM");
UP_Down_Keyvalue(s1,2,4);
break;
}
case 4: // set alarm
{
LCD_Clear();
LCD_GoToLine(0);
LCD_DisplayString(menu_display[8]);
LCD_GoToLine(1);
LCD_DisplayString(" HH:MM:SS:PM/AM");
UP_Down_Keyvalue(s1,2,4);
break;
}
}
while(Key_pressed()!=5);
}
/* Function Key Value For UP_Down Key */
void UP_Down_Keyvalue(struct menu s1,int i,int j)
{
int ch,lower,upper;
do{
if(j==4)
{
if(i==2)upper=1;
if(i==3)upper=9;
if(i==5)upper=5;
if(i==8)upper =5;
if(i==9)upper =9;
}
if(UP_S)
{
while(UP_S);
if(s1.menu_up_key==upper)
s1.menu_up_key = lower-1;
LCD_GoToXY(1,i);
LCD_Printf("%d",++s1.menu_up_key);
s1.time[i-2]=s1.menu_up_key;
}
else if(DOWN_S) // down
{ while(DOWN_S);
if (s1.menu_up_key==lower)
s1.menu_up_key = upper+1;
LCD_GoToXY(1,i);
LCD_Printf("%d",--s1.menu_up_key);
s1.time[i-2]=s1.menu_up_key;
}
if(RIGHT_S)
{ while(RIGHT_S);
s1.menu_up_key=0;
if(i==9) goto exit1;
if(i==3||i==6)
++i;
i++;
}
exit1:
if (LEFT_S)
{ while(LEFT_S);
s1.menu_up_key=0;
if(i==2) goto exit2;
if(i==5||i==8)
--i;
i--;
}
exit2:continue;
} while (ch!=5); // if Okay key exit loop
}
See You
* main.c
*
* Created on: Aug 12, 2017
* Author: thannara123
#include
#define FALSE 0
#define TRUE 1 // 0r //!FALSE
struct menu
{
char menu_up_key;
char menu_down_key;
char menu_enter_key :1; // bit feild 1 bit
};
struct menu s1= {0}; //s1.menu_up-key =1;
void struct_1( struct menu,const char *menu_display[]);
int main()
{
const char *menu_display[10];
menu_display[0] = "Menu0";
menu_display[1] = "Menu1";
menu_display[2] = "Menu2";
menu_display[3] = "Menu3";
menu_display[4] = "Menu4";
menu_display[5] = "menu 5";
menu_display[6] = "menu 6";
struct_1(s1,menu_display);
getchar();
return 0;
}
void struct_1(struct menu s1 ,const char *menu_display[])
{
char ch;
do{
ch=getch();
if(ch!='\0')
{
ch=getch();
if(ch=='H')
{
s1.menu_up_key++;
if(s1.menu_up_key==7)
s1.menu_up_key =0;
// printf("UP\n");
printf(" %s\n",*(s1.menu_up_key+menu_display));
}
else if(ch=='P')
{
s1.menu_up_key--;
if(s1.menu_up_key==-1)
{ s1.menu_up_key =6;
goto here;
}
//printf("down\n");
here:
printf("%s\n",*(s1.menu_up_key+menu_display));
}
}
}
while(ch!='e');// while oka key
}
/*
* button_key.c
*
* Created: 7/30/2017 12:02:39 PM
* Author: Krishna
*/ #include
#include "delay.h"
#include "button_key.h"
#include "lcd.h"
void menu_key_display(struct menu s1,const char *menu_display[]);
void UP_Down_Keyvalue(struct menu s1,int i,int j);
/* Function Key Value For get key */
int Key_pressed(void)
{
while(1){
if (LEFT_S) { while(LEFT_S);return 1; }
if (RIGHT_S){ while(RIGHT_S);return 2; }
if (UP_S) { while(UP_S); return 3; }
if (DOWN_S) { while(DOWN_S);return 4 ; }
if (OK_S) { while(OK_S);return 5 ; }
}
}
/* Function Key Value For Up Key & Enter*/
void menu_key_display(struct menu s1,const char *menu_display[])
{
int ch;
int a;
int menu_position =0;
LCD_DisplayString(menu_display[menu_position]);
do{
repat:
ch = Key_pressed();
if(ch==1||ch==2)
{
if(ch==2)
{ if(ch==2)
{ if(s1.menu_side_key==4)
s1.menu_side_key = 0;
LCD_Clear();
LCD_GoToLine(0);
LCD_DisplayString(*((++s1.menu_side_key)+menu_display));
menu_position=1;
}
}
else if(ch==1)
{
if(ch==1)
{if(s1.menu_side_key==1 ||s1.menu_side_key==0)
{
s1.menu_side_key=5;
}
LCD_Clear();
LCD_DisplayString(*((--s1.menu_side_key)+menu_display));
menu_position=1;
}
}
}
if(menu_position==0)
goto repat;
}while(ch!=5);
a = s1.menu_side_key;
switch(a)
{
case 1: // set time
{
LCD_Clear();
LCD_GoToLine(0);
LCD_DisplayString(menu_display[5]);
LCD_GoToLine(1);
LCD_DisplayString(" HH:MM:SS:PM/AM");
UP_Down_Keyvalue(s1,2,4);
break;
}
case 2: // Set date
{
LCD_Clear();
LCD_GoToLine(0);
LCD_DisplayString(menu_display[6]);
LCD_GoToLine(1);
LCD_DisplayString(" DD:MM:YY");
UP_Down_Keyvalue(s1,2,3);
break;
}
case 3: // set alarm
{
LCD_Clear();
LCD_GoToLine(0);
LCD_DisplayString(menu_display[7]);
LCD_GoToLine(1);
LCD_DisplayString(" HH:MM:SS:AM/PM");
UP_Down_Keyvalue(s1,2,4);
break;
}
case 4: // set alarm
{
LCD_Clear();
LCD_GoToLine(0);
LCD_DisplayString(menu_display[8]);
LCD_GoToLine(1);
LCD_DisplayString(" HH:MM:SS:PM/AM");
UP_Down_Keyvalue(s1,2,4);
break;
}
}
while(Key_pressed()!=5);
}
/* Function Key Value For UP_Down Key */
void UP_Down_Keyvalue(struct menu s1,int i,int j)
{
int ch,lower,upper;
do{
if(j==4)
{
if(i==2)upper=1;
if(i==3)upper=9;
if(i==5)upper=5;
if(i==8)upper =5;
if(i==9)upper =9;
}
if(UP_S)
{
while(UP_S);
if(s1.menu_up_key==upper)
s1.menu_up_key = lower-1;
LCD_GoToXY(1,i);
LCD_Printf("%d",++s1.menu_up_key);
s1.time[i-2]=s1.menu_up_key;
}
else if(DOWN_S) // down
{ while(DOWN_S);
if (s1.menu_up_key==lower)
s1.menu_up_key = upper+1;
LCD_GoToXY(1,i);
LCD_Printf("%d",--s1.menu_up_key);
s1.time[i-2]=s1.menu_up_key;
}
if(RIGHT_S)
{ while(RIGHT_S);
s1.menu_up_key=0;
if(i==9) goto exit1;
if(i==3||i==6)
++i;
i++;
}
exit1:
if (LEFT_S)
{ while(LEFT_S);
s1.menu_up_key=0;
if(i==2) goto exit2;
if(i==5||i==8)
--i;
i--;
}
exit2:continue;
} while (ch!=5); // if Okay key exit loop
}
See You
Google lunched a New application called
Google photos where we can add our lime time photos with each album with geo tagging location . google app automatically upload the photos and with our location . So we can see the photos including the location where was the photo taken .
The great advantage is that who is suffering with low memory mobile ,but they need to upload their photos accordingly , use the Google photo application sync with it. After syncing the photos we can delete the photos from the mobile .It delete only from the mobile and available on the net ever .
* It can easily share on social network
* It can be see Monthly view ,day view and more
A geotaging location shown in the album cover . The photos automatically created while travelling.and tagged with the location
Google lunched a New application called
Google photos where we can add our lime time photos with each album with geo tagging location . google app automatically upload the photos and with our location . So we can see the photos including the location where was the photo taken .
The great advantage is that who is suffering with low memory mobile ,but they need to upload their photos accordingly , use the Google photo application sync with it. After syncing the photos we can delete the photos from the mobile .It delete only from the mobile and available on the net ever .
* It can easily share on social network
* It can be see Monthly view ,day view and more
A geotaging location shown in the album cover . The photos automatically created while travelling.and tagged with the location
Array Variable (declared as Global) and changing the value inside a function -C programming
#include<stdio.h>
int a[3] ={10,15,20}; // declaring array variable as global
int test_function(); // a function to change the array varriable value in side the function
int main()
{
int i,j;
for(i=0;i<3; i++)
printf("Inside the main function i = %d\n",a[i]);
test_function();
printf("\n\n");
for(i=0;i<3; i++)
printf("Inside the test function i = %d\n",a[i]);
return 0;
}
int test_function()
{
a[0] = 18;
a[1] = 100;
a[2] = 250;
return 0;
}
Output and program image
Array Variable (declared as Global) and changing the value inside a function -C programming
#include<stdio.h>
int a[3] ={10,15,20}; // declaring array variable as global
int test_function(); // a function to change the array varriable value in side the function
int main()
{
int i,j;
for(i=0;i<3; i++)
printf("Inside the main function i = %d\n",a[i]);
test_function();
printf("\n\n");
for(i=0;i<3; i++)
printf("Inside the test function i = %d\n",a[i]);
return 0;
}
int test_function()
{
a[0] = 18;
a[1] = 100;
a[2] = 250;
return 0;
}
Output and program image
Next Page TCP/IP layers
- recall the 5-layer model above
- the network interface layer is often called the link layer
- we use the generic term packet for each block of data transmitted
- recall that each layer adds its own header, so nature of "packet" varies
- so in fact the following terms are usually used for "packets" at each layer
- frames at the link layer
- datagrams at the internet layer
- segments at the transport layer
- we focus on the transport layer in this section
Next Page
TCP/IP layers
- recall the 5-layer model above
- the network interface layer is often called the link layer
- we use the generic term packet for each block of data transmitted
- recall that each layer adds its own header, so nature of "packet" varies
- so in fact the following terms are usually used for "packets" at each layer
-
frames at the link layer
-
datagrams at the internet layer
-
segments at the transport layer
- we focus on the transport layer in this section
C Programming With Ubuntu Tutorials
This tutorial is for those people who know how to program but doesn’t know how to run the C program in Linux. The linux itself is written in C programming which means it is very friendly to programmers.
Our first program follows
To write your First program Open your Terminal in ubuntu (Short Key -Alt+Ctrl+T). Enter the command there as follows
To Open Gedit (Text editor ) .
Sudo gedit myfirstprogram.c .(give password it will open gedit and write program there and save it ,finally close that gedit) .Once again .
1) Open the terminal & enter the command as folows.
sudo gedit myfristprogram.c
Give password
It will open a gedit text file with named as myfirstprogram.c .write here your first prgram source code here save and close it .
2) Compile it the source code (myfirstprogram.c) by the following command
gcc -o myfirstprogram myfirstprogram.c
3) To see the output type the command as follows
./myfirstprogam
In this case output is
Hello wrold
Thanks
C Programming With Ubuntu Tutorials
This tutorial is for those people who know how to program but doesn’t know how to run the C program in Linux. The linux itself is written in C programming which means it is very friendly to programmers.
Our first program follows
To write your First program Open your Terminal in ubuntu (Short Key -Alt+Ctrl+T). Enter the command there as follows
To Open Gedit (Text editor ) .
Sudo gedit myfirstprogram.c .
(give password it will open gedit and write program there and save it ,finally close that gedit) .
Once again .
1) Open the terminal & enter the command as folows.
sudo gedit myfristprogram.c
Give password
It will open a gedit text file with named as myfirstprogram.c .write here your first prgram source code here save and close it .
2) Compile it the source code (myfirstprogram.c) by the following command
gcc -o myfirstprogram myfirstprogram.c
3) To see the output type the command as follows
./myfirstprogam
In this case output is
Hello wrold
Thanks
The C Programming Language is an excellent choice for beginning programmers as well as for people who do not intend to become a programmer but just want the experience of creating a program.Three things are necessary for creating C programs: a text editor, a compiler and a C standard library. A text editor is all that is needed to create the Source Code for a program in C or in any other language. A compiler is a specialized program that converts source code into machine language (also called object code or machine code) so that it can be understood directly by a CPU (central processing unit). An excellent C compiler is included in the GNU Compiler Collection (GCC). An integrated development environment (IDE) or interactive development environment is a software application that provides all things (ie,a text editor, a compiler and a C standard library etc). There are a lot of IDE available with diffrent OS look here.
Available C compilers with Diffrent OS And IDE
-------------------------------------------------------------------------------------------------
|
AMPC | Axiomatic Solutions Sdn Bhd | Yes | Yes | Yes | Proprietary | Yes |
Aztec C | Manx Software Systems | No | No | Yes CP/M, CP/M-86, MS-DOS | Proprietary | No |
Amsterdam Compiler Kit | Andrew Tanenbaum and Ceriel Jacobs | No | Yes | Yes | BSD | No |
CCS C Compiler | CCS, Inc. | Yes | Yes | Yes | Proprietary | Yes |
Ch | SoftIntegration, Inc | Yes | Mac OS X, FreeBSD, Linux, Solaris, HP-UX, AIX, Qnx | Yes | Freeware | Yes — Professional and Student versions only |
Clang | LLVM Project | Yes | Yes | Yes | BSD | No |
CParser/libFirm | Matthias Braun, Christoph Mallon and Michael Beck | Yes | Yes | Yes | GPL | No |
Digital Mars | Digital Mars | Yes | No | No | ? | No |
Dignus Systems/C | Dignus, L.L.C | Yes (host) | Yes (host) | Yes Z/Architecture | Proprietary | No |
GCC C | GNU Project | Mingw, Cygwin | Yes | Yes IBM mainframe, AmigaOS, VAX/VMS, RTEMS | GPL | NetBeans |
IAR C/C++ Compilers | IAR Systems | Yes | No | No | Proprietary | Yes |
Interactive C | KISS Institute for Practical Robotics | Yes | Unix, Mac, Linux, IRIX, Solaris, SunOS | No | Freeware | No |
LabWindows/CVI | National Instruments | Yes | Yes | Yes | Proprietary | Yes |
lcc | Chris Fraser and David Hanson | Yes | Yes | Yes | Freeware (source code available for non-commercial use) | Windows only |
Mark Williams C | Mark Williams Company | Yes | Coherent | Yes | Proprietary | Yes |
Micro C Compiler (mcc) | Roshan Snigh | Yes | Yes | Yes | Freeware (source code available for non-commercial use) | No |
MikroC Compiler | Mikroelektronika | Yes | Yes | Yes | Proprietary | Yes |
Nwcc | Nils Weller | No | Yes | No | BSD | No |
Open64 | AMD SGI Google HP Intel Nvidia PathScale Tsinghua University and others | No | Yes | Yes | GPL | No |
Open Watcom | Sybase and SciTech Software | Yes | Yes Linux | Yes OS/2, MS-DOS | Sybase Open Watcom Public License | Yes Windows only? |
Pelles C | Pelle Orinius | Yes | No | No | Freeware | Yes |
PGCC | The Portland Group | Yes | Yes | ? | Proprietary | Yes — Visual Studio on Windows |
Portable C Compiler | Stephen C. Johnson, Anders Magnusson and others | Yes | Yes | Yes | BSD | No |
Power C | Mix Software | No | No | Yes | Proprietary | No |
QuickC | Microsoft | Yes | No | No | Proprietary | Yes |
RCC (RCOR C Compiler) | Rodrigo Caetano (rcor) | Yes | Yes | No | GPL | No |
Ritchie C Compiler (PDP-11) | Dennis Ritchie and John Reiser; converted to cross-compiler by Doug Gwyn | Yes | Yes | Yes | Freeware | No |
SAS/C | SAS Institute | Yes | Yes | Yes IBM mainframe, AmigaOS, 68K, 88K | Proprietary | Yes |
Small-C | Ron Caine, James E. Hendrix, Byte magazine | Yes | Yes | Yes CP/M MS-DOS | Public Domain | Yes |
Small Device C Compiler | Sandeep Dutta and others | Yes | Yes | ? | GPL | No |
SubC | Nils M Holm | MinGW | FreeBSD, NetBSD, Linux | No | Public Domain | No |
Tiny C Compiler | Fabrice Bellard | Yes | Yes | No | LGPL | No |
(Borland) Turbo C | Embarcadero | Yes | No | Yes | Proprietary - V 2.01 freely available | Yes |
ups debugger (includes C interpreter) | Tom Hughes, Ian Edwards, and others | No | Yes | Yes Solaris, SunOS | GPL | Yes |
VBCC | Dr. Volker Barthelmann | Yes | Yes | Yes | Freeware (source code available, modification not allowed) | No |
Visual C++ Express | Microsoft | Yes | No | No | Freeware | Yes |
XL C | IBM | No | AIX, Linux | No | Proprietary | Eclipse |
-----------------------------------------------------------------------------------
I am using ubuntu (Linux os) here is the compailer is GNU GCC Because linux is an open Source and can be rewrite ,edit etc ... ................................................................
1.) Install GCC Compiler on you ubuntu (Tutorial)
(first Program)
#include<stdio.h>
int main()
{
printf(“Hello World);
return 0;
}
.....................................................
3.) Compiling the above program .
.................
Find the result Do these 2 or more times to understand and by heart
Next Tutorials
.........
16x2 LCD Interfacing with STM32,STM32F103C6 lcd_init(); LCD_LINE1; lcd_String(" GeElectron"); LCD_LINE2; lc...