This tutorial contains description of microcontroller based digital clock and DS1307. We know microcontroller is a computer and specific time required to complete each task. So we cannot get real time and that's why we need a real-time clock IC. We will use DS1307 IC in this tutorial.
![]() |
Digital Clock [Real Time] Using DS1307 and PIC Microcontroller [step by step ] |
DS1307 IC:
DS1307 is a real-time clock IC which basically works with low power and returns BCD(Binary Coded Decimal) number. We will describe later about BCD.
Through this IC we can get year, month, date, hour, minute and second. The months, days, second can be incremented automatically and It can operate either in 24-hour format or 12-hour format with AM/ PM.DS1307 has built-in power sensing circuit which can backup the IC automatically during the failure of power supply.Crystal (1000KHz) is required to operate this IC and don't need any external capacitor connection.
![]() |
DS1307 |
At this stage, we have got basic information about DS1307. In this tutorial, we need to use I2C communication with Microcontroller. Description of I2C communication is given below.
I2C Communication with Microcontroller using MikroC
The I2C(I Squared C) communication means " Inter-Integrated Circuit " communication. A microcontroller can communicate with low power peripherals through I2C.To make a successful I2C communication we just need two ends or pins[ SCL and SDA ].Here SCL for clock selection and SDA for data. Both SCL and SDA are Open Drain drives that means the chip can drive it's low output and cannot drive the high output. It 's required to connect two pull up resistors in such way that one end of both resistors with +5v and others end with SCL, SDA respectively so that the higher output can be driven. The pull-up resistors value will be according to the I2C bus frequency.We are using 2k Ohm pull up resistor in this Tutorial.
MikroC Library for I2C :
- void I2C1_Init(const unsigned long clock); this function is needed to initialize and returns nothing .We have to provide frequency as it's arguments . Example : I2C1_Init(100000);
- unsigned short I2C1_Start(void) ; this function is needed to start communication . Example : I2C1_Start();
- void I2C1_Repeated_Start(void); for starting again .
- unsigned short I2C1_Is_Idle(void);
- unsigned short I2C1_Rd(unsigned short ack); Returns one byte from the slave.
- unsigned short I2C1_Wr(unsigned short data_); Sends data byte (parameter
data
) via I²C bus.
void I2C1_Stop(void); To stop the signal .
The Time Keeper Register of DS1307:
Here we can see the address of each function ,data bits and data range .First we have to initialize the I2C using 10kHz frequency and start the communication using start function .Now if we like to write , it's required to send out 0xD0 [D0=0x68+0]through write function so that the IC can be enabled for writing to us.Instructions given below :
I2C1_Wr(0xD0); [D0=0x68+0]
I2C1_Wr(address);
During reading the data comes from DS1307 , we need to send out 0xD1 [D1=0x68+1]through write functiono that the IC can be enabled for reading to us .Instructions given in below :
I2C1_Wr(0xD1);[D1=0x68+1]
data = I2C1_Rd(0);
Here in I2C1_Rd(0); To read data we will use Readdata(adrs) function
and it is a user defined function. In "Readdata(0);" function we will write 0 as
argument and the 0 means address of Seconds Register.This function returns
short type data in BCD . I this way we can read data from each address .An
important thing needed to notice that bit 6 of hour register is defined as the
24-hour or 12-hour mode selection bit.If we select 1 the bit 5 of hour used for
representing AM/PM and if we select 0 the bit 5 used for representing hour .
and it is a user defined function. In "Readdata(0);" function we will write 0 as
argument and the 0 means address of Seconds Register.This function returns
short type data in BCD . I this way we can read data from each address .An
important thing needed to notice that bit 6 of hour register is defined as the
24-hour or 12-hour mode selection bit.If we select 1 the bit 5 of hour used for
representing AM/PM and if we select 0 the bit 5 used for representing hour .
BCD Number:
BCD number means Binary Coded Decimal number where each binary number is in 4bit .If we consider a decimal number 21 ,the BCD conversion will be 00100001 .Here blue represents the 2 and red represents 1. In that way we get BCD .Now the question is how can we get character from BCD ?Cause if we like to show in LCD , we need character .Look at the code given below :
First Char from BCD
char firstcharofbcd(char bcddata)
{
char tireturn;
tireturn= (bcddata >> 4) +0x30; Here we are shifting 4 bits to right hand side .
return tireturn;
}
If we consider 21 we can get 2 in character format .Because in short format data we added 0x30 , which is character '0' .So the sum of '0'+0010 = '2' .
Second Char from BCD
char secondcharofbcd(char bcddata)
{
char toret;
toret=(bcddata & 0x0F) + 0x30;
return toret;
} .
0x0F means '00001111' .We know in an AND gate if any input is low or 0 and the gate output is 0.If all input is 1 and we can get output 1.So by applying AND operation between 0x0F and BCD , we can make first 0000 bit as 0 .Look at the example given below :
00100001
00001111 &
-------------
00000001= 1
I think we get all required basic information .Now lets create a project in Proteus .
Proteus Project :
Please follow the instructions given below :Pick all the required parts and Complete the circuit as given below :
Note : In practical , you have to connect 12MHz crystal between pin9 and pin10 . Also remember that 1 & 20 will be connected with VDD and 8 & 19 will be connected with GND .
![]() |
Digital Clock [Real Time] Using DS1307 and PIC Microcontroller [step by step ] |
Now we need the .hex file .So lets Create a project in MikroC .Please follow the steps given below :
MikroC Code :
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Source Code :
sbit LCD_RS at RB7_bit;
sbit LCD_EN at RB6_bit;
sbit LCD_D5 at RB4_bit;
sbit LCD_D4 at RB5_bit;
sbit LCD_D6 at RB3_bit;
sbit LCD_RS_Direction at TRISB7_bit;
sbit LCD_D7 at RB2_bit;
sbit LCD_EN_Direction at TRISB6_bit;
sbit LCD_D5_Direction at TRISB4_bit;
sbit LCD_D4_Direction at TRISB5_bit;
sbit LCD_D6_Direction at TRISB3_bit;
I2C1_Wr(0xD0);
sbit LCD_D7_Direction at TRISB2_bit;
short readdata(short adrs){
}
short getinp;
I2C1_Start();
I2C1_Wr(adrs);
I2C1_Repeated_Start();
I2C1_Wr(0xD1);
I2C1_Stop();
getinp=I2C1_Rd(0);
return getinp;
I2C1_Wr(writedat);
void writedata(unsigned short adrs,short writedat)
{
I2C1_Start();
I2C1_Wr(0xD0);
char firstcharofbcd(char bcddata)
I2C1_Wr(adrs);
I2C1_Stop();
return toret;
}
{
char tireturn;
tireturn= (bcddata >> 4) +0x30;
return tireturn;
}
{
char secondcharofbcd(char bcddata)
char toret;
short wk;
toret=(bcddata & 0x0F) + 0x30;
}
char time[] = " : : ";
char date[] = " / / ";
short inc,in;
short chk;
short hr;
short sec;
short mint;
short h, ht;
char wkd;
short day;
short mon;
TRISA = 0x3F;
short yr;
void main() {
I2C1_Init(100000); //DS1307 I2C is running at 100KHz
inc=0;
CMCON = 0x07; // To turn off comparators
ADCON1 = 0x0F; // To turn off analog to digital converters
mint = readdata(1);
Lcd_Init(); // Initialize LCD
Lcd_Cmd(_LCD_CLEAR); // Clear display
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
sec = readdata(0);
Lcd_out(1,1,"Time:");
while(1){
Finally i make it manually , you can see here .Thank You !!
hr = readdata(2);
h=hr; // for 12 hour format
// here means 00100000 in binary and we can get a signal in change of AM/PM
/* I dont know why 12hour format is not working .I worked hard but it didnot work .
*/
///////////////////////////////////////
chk=1; }
h= Bcd2Dec(h);
if(h-12>=0){
ht=12 ;
if(h-12==0) {
chk=1; }
chk=1; }
if(h-12==1) {
ht=1 ;
ht=3 ;
if(h-12==2) {
ht=2 ;
chk=1; }
if(h-12==3) {
chk=1; }
chk=1; }
if(h-12==4) {
if(h-12==5) {
ht=4 ;
ht=5 ;
if(h-12==6) {
chk=1; }
ht=6;
if(h-12==7) {
chk=1; }
ht=7;
chk=1; }
chk=1; }
if(h-12==8) {
if(h-12==9) {
ht=8;
day = readdata(4);
ht=9 ;
chk=1; }
if(h-12==10) {
ht=10;
if(h-12==11) {
ht=11 ;
} else{
chk=1; }
chk=0;
if(h==0){
ht=12;
chk=0;
}
else{
ht=h;
///////////////////////////////////////////////////////////////////
}
}
h=Dec2Bcd(ht);
date[0] = firstcharofbcd(day);
wk=readdata(3);
mon = readdata(5);
time[0] = firstcharofbcd(h);
yr = readdata(6);
time[3] = firstcharofbcd(mint);
time[1] =secondcharofbcd(h);
time[6] = firstcharofbcd(sec);
time[4] = secondcharofbcd(mint);
date[11] ='n';
time[7] = secondcharofbcd(sec);
date[1] = secondcharofbcd(day);
date[4] = secondcharofbcd(mon);
date[3] = firstcharofbcd(mon);
date[6] = firstcharofbcd(yr);
switch(wkd){
date[7] = secondcharofbcd(yr);
wkd=secondcharofbcd(wk);
date[10] ='u';
case '1':
date[9] ='S';
date[10] ='u';
date[12] ='d';
date[14] ='y';
date[13] ='a';
break;
date[10] ='o';
case '2':
date[9] ='M';
date[13] ='a';
date[11] ='n';
date[12] ='d';
date[9] ='T';
date[14] ='y';
break;
date[11] ='u';
case '3':
date[11] ='e';
date[12] ='d';
date[14] ='y';
date[13] ='a';
break;
date[10] ='e';
case '4':
date[9] ='W';
date[13] ='a';
date[11] ='d';
date[12] ='d';
date[9] ='T';
date[14] ='y';
break;
date[12] ='d';
case '5':
date[10] ='h';
date[12] ='d';
date[13] ='a';
date[14] ='y';
break;
date[9] ='F';
case '6':
date[11] ='i';
date[10] ='r';
date[13] ='a';
date[12] ='d';
date[14] ='y';
date[9] ='S';
break;
case '7':
date[10] ='a';
if(mint>59){
date[11] ='t';
date[13] ='a';
date[14] ='y';
break;
}
time[9] = 'P';
if(chk)
{
else
time[10] = 'M';
}
{
time[10] = 'M';
time[9] = 'A';
}
Lcd_out(1, 6, time);
inc++;
Lcd_out(2, 1, date);
if(PORTA.F0==0){
wk= readdata(3);
delay_ms(300);
mint=Bcd2Dec(mint);
mint=0;
mint=mint+inc;
}
mint=Dec2Bcd(mint);
writedata(1,mint);
if(PORTA.F1==0){
}
h=readdata(2);
delay_ms(300);
inc++;
inc=Bcd2Dec(h);
if(inc>23){
writedata(2,h);
inc=0;
}
h=Dec2Bcd(inc);
}
//////
inc=0;
if(PORTA.F2==0){
} else if(mon==1 | mon==3 | mon==5 | mon==7 | mon==8 | mon==10| mon==12){
delay_ms(300);
in=Bcd2Dec(wk);
if(in>7){
in++;
in=1;
wk= Dec2Bcd(in);
}
///////
writedata(3,wk);
inc=Bcd2Dec(h);
h=readdata(4);
inc++;
if(yr%4==0){
yr=readdata(6);
yr=Bcd2Dec(yr);
if(mon==2){
mon=readdata(5);
mon=Bcd2Dec(mon);
if(inc>31){
if(inc>29){
inc=1;
inc=1;
}
inc=1;
}
if(inc>30){
}else{
inc=1;
}
mon=readdata(5);
}
}else{
if(mon==2) {
mon=Bcd2Dec(mon);
if(inc>28){
else if(mon==1 | mon==3 | mon==5 | mon==7 | mon==8 | mon==10| mon==12){
inc=1;
}
if(inc>31){
}
if(PORTA.F4==0){
}
}else{
if(inc>30){
inc=1;
}
day=Dec2Bcd(inc);
}
}
if(PORTA.F3==0){
writedata(4,day);
}
inc=0;
}
inc++;
delay_ms(300);
inc=0;
if(inc>12){
}
mon=Bcd2Dec(mon);
mon=mon+inc;
mon=1;
if(mon>12){
inc++;
mon=Dec2Bcd(mon);
writedata(5,mon);
}
}
inc=0;
delay_ms(300);
if(inc>59){
yr=Bcd2Dec(yr);
inc=0;
}
if(yr>59){
yr=yr+inc;
yr=1;
writedata(6,yr);
}
yr=Dec2Bcd(yr);
if(PORTA.F5==0){
}
wk= readdata(3);
delay_ms(300);
//////
in=Bcd2Dec(wk);
wk= Dec2Bcd(in);
in++;
if(in>7){
in=1;
}
writedata(3,wk);
}
///////
}
Compile Source Code
Load hex file to the microcontroller .
dongtam
ReplyDeletegame mu
cho thue phong tro
http://nhatroso.com/
nhac san cuc manh
tổng đài tư vấn luật
http://dichvu.tuvanphapluattructuyen.com/
văn phòng luật
tổng đài tư vấn pháp luật
thành lập công ty
http://we-cooking.com/
chém gió
trung tâm ngoại ngữ
trên bầu trời bay xuống, bỗng nhiên Thần Nông đỉnh ngừng lại, trôi nổi trên hư không, từ từ chuyển động.
- Xoẹt xoẹt.
Phi kiếm của Tử Dương lão đạo tràn ngập kiếm quang, cùng với thanh mang của Thần Nông đỉnh tiếp xúc lẫn nhau.
Chỉ thấy kiếm quang tử sắc kia từ từ xuyên qua thanh mang, bất kể thế nào cũng không phá được sư bao vây của Thần Nông đỉnh.
Một lát sau đạo bào màu tím của Tử Dương lão đạo đã ướt đẫm mất phân nửa, toàn lực ngưng tụ kiếm quyết chống lại thanh quang, tựa hồ như hiện tại Tử dương lão đạo đã cố gắng hết sức.
- Tử Dương lão đạo, ngươi không phải là đối thủ của ta, cho dù là phân thân của ta ngươi cũng không thể đối kháng.
Hỗn Thế Ma Vương hung ác nhìn Tử Dương lão đạo mà nói, chỉ thấy Thần Nông đỉnh từ từ
The download link is dead.
ReplyDeleteIt was updated.
Deletethanks very detailed explanation..very helpful for beginners like me
ReplyDeleteWell written article! I have been pushing for this lately with my website, a free timesheet software and have been benefiting a lot. Thanks!
ReplyDeleteWell written article! I have been pushing for this lately with my website, a Time Card Calculator and have been benefiting a lot. Thanks!
ReplyDeletePositive site, where did u come up with the information on this posting?I have read a few of the articles on your website now, and I really like your style. Thanks a million and please keep up the effective work. koszalin nieruchomosci
ReplyDeleteYou there, this is really good post here. Thanks for taking the time to post such valuable information. Quality content is what always gets the visitors coming. list on mls
ReplyDeleteA very awesome blog post. We are really grateful for your blog post. You will find a lot of approaches after visiting your post. real estate leads
ReplyDeleteYou made such an interesting piece to read, giving every subject enlightenment for us to gain knowledge. Thanks for sharing the such information with us to read this... discounted real estate buyer in Pittsburgh
ReplyDeleteYour blog provided us with valuable information to work with.every tips of your post are awesome. Thanks a lot for sharing. Keep blogging, chiang mai property
ReplyDeleteExcellent information on your thank you for taking the time to share with us. Amazing insight you have on this, it's nice to find a website that details so much information about different artists.
ReplyDeletewholesale real estate buyer
A very awesome blog post. We are really grateful for your blog post. You will find a lot of approaches after visiting your post. best place to buy house in florida
ReplyDeleteThey will know how to file the relevant paperwork to initiate and complete an unlawful detainer action, represent the owner in court, and work with law enforcement to remove the tenant and the tenant's possessions from the unit. Property Management Services
ReplyDeleteYes i am totally agreed with this article and i just want say that this article is very nice and very informative article.I will make sure to be reading your blog more. You made a good point but I can't help but wonder, what about the other side? !!!!!!Thanks condo for sale
ReplyDeleteThis article will contact momentarily on a portion of the accompanying themes: Taxation of unfamiliar elements and global speculators. U.S. exchange or businessTaxation of U.S. elements and people. Successfully associated pay. Non-successfully associated pay. Branch Profits Tax. Assessment on overabundance interest. U.S. retaining charge on installments made to the unfamiliar financial specialist. Unfamiliar companies. Associations. Real Estate Investment Trusts. Bahamas Real Estate
ReplyDeleteThis is a truly good site post. Not too many people would actually, the way you just did. I am really impressed that there is so much information about this subject that have been uncovered and you’ve done your best, with so much class. If wanted to know more about green smoke reviews, than by all means come in and check our stuff. watches
ReplyDeleteI have read all the comments and suggestions posted by the visitors for this article are very fine,We will wait for your next article so only.Thanks! rittenhouse square apartments
ReplyDeleteI’ve been searching for some decent stuff on the subject and haven't had any luck up until this point, You just got a new biggest fan!.. property management leederville
ReplyDeleteWe will likewise momentarily feature miens of U.S. real estate ventures, including U.S. real property interests, the meaning of a U.S. real property holding partnership "USRPHC", U.S.Haitch Convey
ReplyDeleteFirst to obtain your Real Estate license you will need to do a 63 hours pre licensing course. Many online educational sites offer this and can be done in the comfort of your home. If you are more of an In class person, your local community college might offer the course. When taken in actual class, the course may take 4 to 6 weeks due to their scheduling. Online classes you can do at your own pace. So if you want, you may do the entire course in one week. پیش فروش ستین
ReplyDeleteFirst to obtain your Real Estate license you will need to do a 63 hours pre licensing course. Many online educational sites offer this and can be done in the comfort of your home. If you are more of an In class person, your local community college might offer the course. When taken in actual class, the course may take 4 to 6 weeks due to their scheduling. Online classes you can do at your own pace. So if you want, you may do the entire course in one week. پیش فروش پروژه ستین
ReplyDeleteFirst to obtain your Real Estate license you will need to do a 63 hours pre licensing course. Many online educational sites offer this and can be done in the comfort of your home. If you are more of an In class person, your local community college might offer the course. When taken in actual class, the course may take 4 to 6 weeks due to their scheduling. Online classes you can do at your own pace. So if you want, you may do the entire course in one week. فروش پدافند ارتش
ReplyDeleteFirst to obtain your Real Estate license you will need to do a 63 hours pre licensing course. Many online educational sites offer this and can be done in the comfort of your home. If you are more of an In class person, your local community college might offer the course. When taken in actual class, the course may take 4 to 6 weeks due to their scheduling. Online classes you can do at your own pace. So if you want, you may do the entire course in one week. پروژه پدافند ارتش
ReplyDeleteThanks for a very interesting blog. What else may I get that kind of info written in such a perfect approach? I’ve a undertaking that I am simply now operating on, and I have been at the look out for such info. Riverwalk Apartments Philadelphia
ReplyDeleteThanks for a very interesting blog. What else may I get that kind of info written in such a perfect approach? I’ve a undertaking that I am simply now operating on, and I have been at the look out for such info. Algérie Immobilier العقارات
ReplyDeleteI really like your take on the issue. I now have a clear idea on what this matter is all about.. For Sale By Owner Real Estate
ReplyDeleteProperty for Sale in Montenegro from CMM Group, the Award-Winning, Number One Real Estate Agent in Montenegro, which specializes in selling Apartments, Townhouses & Villas throughout this beautiful country, including Bar, Budva, Becici, Kotor, Tivat & Herceg Novi.
ReplyDeleteOur office situated in the heart of Budva, is well placed to show you everything that Montenegro Property for Sale Montenegro has to offer, and our highly experienced International Property Consultants are ready to help you find your dream home here, whether you are after a holiday home, a permanent home or an Investment.
The most ideal route for them to get more customers is to by one way or another acquire all the more real estate leads. plots for sale in karachi
ReplyDeletePentagon Estate In the event that a financial backer uses an enterprise or a LLC to hold real property, the element should enroll with the California Secretary of State. In doing as such, articles of fuse or the assertion of data become apparent to the world, including the personality of the corporate officials and chiefs or the LLC director. plots for sale in karachi
ReplyDeleteI felt very happy while reading this site. This was really very informative site for me. I really liked it. This was really a cordial post. Thanks a lot!. Sell my home fast Orlando FL
ReplyDeleteThanks for a very interesting blog. What else may I get that kind of info written in such a perfect approach? I’ve a undertaking that I am simply now operating on, and I have been at the look out for such info. Regina real estate
ReplyDeleteAnother worry, particularly for more established financial backers, is whether the financial backer is a U.S. occupant for estate charge purposes. for best real estate deals house for sale in dha karachi
ReplyDeleteI'm glad to see the great detail here!. Houses for sale in roseville mi
ReplyDeleteBy and large and for oversimplified clarification, a NRA is "adequately associated" in the event that the person is locked in as a General or restricted accomplice in a U.S. exchange or business. Stump Removal Folsom
ReplyDeleteAlso, in case you're really genuine about it, you might need to just get $10 or some other modest quantity of gas all at once so that you'll have to go to the service station all the more frequently and have more freedoms to organize. dhapeshawar
ReplyDeleteMost real estate investors fail within the first few months of trying to make a business enterprise out of real estate investing. The trick begins with a respectable marketing plan and then applying a serious effort to the marketing plan on a even basis. There is a lot more involved to succeed, and you will encounter more tips, tricks and unique real estate marketing schemes in this article. mortgage companies in las vegas
ReplyDeleteI loved your blog post. Really looking forward to read more. Awesome.
ReplyDeletecheap tree removal service Louisville, KY
Non-U.S. residents decide to put resources into US real estate for various reasons and they will have a different scope of points and objectives. Tajarat strives to be Pakistan's biggest real estate developer ever, guaranteeing the highest international standards, prompt execution, and lifetime customer loyalty. For further detail visitTajarat strives to be Pakistan's biggest real estate developer ever, guaranteeing the highest international standards, prompt execution, and lifetime customer loyalty. For further detail visitnespak society rawalpindi
ReplyDeleteI think that thanks for the valuabe information and insights you have so provided here. Youtube Reseller Panel
ReplyDeleteShenZhen MaiJin Metal Works Co., Ltd. was founded in 2006. We have built up a good reputation for quality, service and reliability like cnc turning
ReplyDeletePositive site, where did u come up with the information on this posting?I have read a few of the articles on your website now, and I really like your style. Thanks a million and please keep up the effective work. Hipoteca en Florida
ReplyDeleteIf you are looking for a Stripe account, we are here to make it easy for you. You may buy verified stripe accounts from here. Buy Stripe Account
ReplyDeleteExcellent article. Very interesting to read. I really love to read such a nice article. Thanks! keep rocking. Buy home detroit
ReplyDeleteThis article is an engaging abundance of enlightening information that is intriguing and elegantly composed. I praise your diligent work on this and thank you for this data. You have what it takes to get consideration. cam sành vĩnh long
ReplyDeleteThis is such a great resource that you are providing and you give it away for free. I love seeing blog that understand the value of providing a quality resource for free. Luxury Car Rental Miami
ReplyDeleteAs more and more people find out and as the presence of God and his kingdom increase worldwide, there is going to be a release of the Devil’s captives like the world has never seen.deliverance ministry
ReplyDeleteThis blog was extremely helpful. I really appreciate your kindness in sharing this with me and everyone else! Read this news
ReplyDeleteThis blog was extremely helpful. I really appreciate your kindness in sharing this with me and everyone else!
ReplyDeleteMiami homes for sale
I think about it is most required for making more on this get engaged und die HP
ReplyDeleteI was very pleased to find this site.I wanted to thank you for this great read!! I definitely enjoying every little bit of it and I have you bookmarked to check out new stuff you post. personalisiertes geschenk geburt baby hochzeit
ReplyDeleteThis is a great inspiring article.I am pretty much pleased with your good work.You put really very helpful information. Keep it up. Keep blogging. Looking to reading your next post. Dallas cash home buyers
ReplyDeleteThis is truly a great read for me. I have bookmarked it and I am looking forward to reading new articles. Keep up the good work!. sell inherited house allentown
ReplyDeleteThis blog is really great. The information here will surely be of some help to me. Thanks!. Rittenhouse homes for sale
ReplyDeleteHello I am so delighted I located your blog, I really located you by mistake, while I was watching on google for something else, Anyways I am here now and could just like to say thank for a tremendous post and a all round entertaining website. Please do keep up the great work. mokena IL Real Estate Agents
ReplyDeleteI was surfing the Internet for information and came across your blog. I am impressed by the information you have on this blog. It shows how well you understand this subject. https://9xflix.World
ReplyDeleteIt is the kind of information I have been trying to find. Thank you for writing this information. It has proved utmost beneficial for me. https://jalshamovies.site
ReplyDeleteI wanted to thank you for this great read!! I definitely enjoying every little bit of it I have you bookmarked to check out new stuff you post. https://xmovies8.bar
ReplyDeleteIn the world of www, there are countless blogs. But believe me, this blog has all the perfection that makes it unique in all. I will be back again and again. https://cliver.website
ReplyDeletePositive site, where did u come up with the information on this posting? I'm pleased I discovered it though, ill be checking back soon to find out what additional posts you include. https://kuttymovies.website
ReplyDeleteI was reading some of your content on this website and I conceive this internet site is really informative ! Keep on putting up. https://pedropolis.site
ReplyDeleteI wish more authors of this type of content would take the time you did to research and write so well. I am very impressed with your vision and insight. the crossings wood station
ReplyDeleteReally I enjoy your site with effective and useful information. It is included very nice post with a lot of our resources.thanks for share. i enjoy this post. Rittenhouse Square homes
ReplyDelete