جزاكم الله بكل خير اخي الحبيب
هذه كود دالة main
كود:
void main ()
{
init_micro();
// show_time();
while(1)
{
display(); // update data
if(sw1_setting==0)
{
INTCON =0; // disable interupts
set=7;
setting2=255;
delay_ms(10);
while(sw1_setting==0);
delay_ms(10);
set_DS1307(0,255);// store data and clock in setting_DS1307
setting();
}
}
}
وكيف يمكننا الحصول علي نبضة واحدة كل ثانية من ds1307
بارك الله لك وجزاكم عني بكل خير
|
السلام عليكم
يتم تحديث الوقت والتاريخ عن طريق داله display
كود:
void display ()
{
if(setting2==0)Show_Time(0,0,0,0,0,0,0,255);
num[0]=2;
num[1]=0;
num[2]=year/10;
num[3]=year%10;
num[4]=month/10;
num[5]=month%10;
num[6]=day/10;
num[7]=day%10;
num[8]=week;
num[9]=hours/10;
num[10]=hours%10;
num[11]=minutes/10;
num[12]=minutes%10;;
num[13]=seconds/10;
num[14]=seconds%10;
num[15]=4;
}
وبالطبع اما كيف بتشغل سفن سكمنت فهذا يتم عن طريق الانتربت لضمان عدم وجود اي ارتعاش في عرض البيانات على سفن سكمنت
كود:
void Interrupt(){
if (TMR0IF_bit){
TMR0IF_bit = 0;
TMR0 = 6;
//Enter your code here
if(se==0 ){
res_pin=0;
res_pin=1;
sh_cp_pin=0;
sh_cp_pin=1;
ds_pin=1;
}
sh_cp_pin=0;
sh_cp_pin=1;
st_cp_pin=0;
st_cp_pin=1;
portb=~segment[num[se]];
ds_pin=0;
se++;
if(se==16)se=0;
}
}
تلاحظ انه اذا لم يتم الضغط على مفتاح الضبط يكون setting2=0 وبتالي يتم القراءه البيانات
كود:
if(setting2==0)Show_Time(0,0,0,0,0,0,0,255)
ولكن اذا تم ضغط على مفتاح الضبط علينا ايقاف القراءه البيانات
كود:
if(sw1_setting==0)
{
INTCON =0; // disable interupts
set=7;
setting2=255;
delay_ms(10);
while(sw1_setting==0);
delay_ms(10);
set_DS1307(0,255);// store data and clock in setting_DS1307
setting();
}
===============================================
اما كيف يمكننا الحصول علي نبضة واحدة كل ثانية من ds1307 عليه الرجوع الى داتا شيت للمتكامله ومن ثم رد عليك عليك لاحقا بمشيئه الله