پاسخ : تایمر باds1307
سلام
مهندس واقعا ممنونم .خیلی زحمت کشیدید (یه تحلیل و تفسیر کوچولو
شما 3 تا شمارنده رو بکار انداختید
و هر کدوم از شمارنده ها رو بعد از پایان شمارش بصورت مستقل صفر میکنید
ولی فک نکنم که ds1307 این امکان رو داشته باشه که بتوان 3 شمارنده مستقل رو کنترل کرد و بعد از پایان شمارش مقدار رو صفر کرد . بدون اینکه مابقی خروجی ها رو تحت اشعاع قرار بده اینجا رو ببینید :
این قسمت برنامه DS1307 هست که قسمت ثانیه و دقیقه و ساعت رو صفر میکنه
و این قسمت رو من به برنامه تایمر اضافه کردم ولی روی یک خروجی مشکلی نداره ولی روی 2 تا خروجی جواب نمیده و مشکلش هم اینکه تا خروجی 2 رو غیر فعال نکنه خروجی 1 رو فعال نمیکنه :
سلام
مهندس واقعا ممنونم .خیلی زحمت کشیدید (یه تحلیل و تفسیر کوچولو

شما 3 تا شمارنده رو بکار انداختید
کد:
Time_cunter_1 = Time_cunter_1 + 1 Time_cunter_2 = Time_cunter_2 + 1 Time_cunter_3 = Time_cunter_3 + 1
کد:
If Time_cunter_1 = On_1_time_sec Then Led_out_1 = 1 Elseif Time_cunter_1 = On_1_off_sum Then Led_out_1 = 0 Time_cunter_1 = 0 End If If Time_cunter_2 = On_2_time_sec Then Led_out_2 = 1 Elseif Time_cunter_2 = On_2_off_sum Then Led_out_2 = 0 Time_cunter_2 = 0 End If If Time_cunter_3 = On_3_time_sec Then Led_out_3 = 1 Elseif Time_cunter_3 = On_3_off_sum Then Led_out_3 = 0 Time_cunter_3 = 0 End If
کد:
Seco = 0
Seco = Makebcd(seco)
I2cstart ' Generate start code
I2cwbyte Ds1307w ' send address
I2cwbyte 0 ' starting address in 1307
I2cwbyte Seco
I2cstop
Mine = 0
Mine = Makebcd(mine)
I2cstart ' Generate start code
I2cwbyte Ds1307w ' send address
I2cwbyte 1 ' starting address in 1307
I2cwbyte Mine
I2cstop
Hour = 0
Hour = Makebcd(hour)
I2cstart ' Generate start code
I2cwbyte Ds1307w ' send address
I2cwbyte 2 ' starting address in 1307
I2cwbyte Hour
I2cstop
و این قسمت رو من به برنامه تایمر اضافه کردم ولی روی یک خروجی مشکلی نداره ولی روی 2 تا خروجی جواب نمیده و مشکلش هم اینکه تا خروجی 2 رو غیر فعال نکنه خروجی 1 رو فعال نمیکنه :
کد:
Action:
If Hour = Hour2 And Mine = Mine2 And Seco = Seco2 Then ' ON FAN 1
Set Portd.4
Elseif Hour = Hour4 And Mine = Mine4 And Seco = Seco4 Then
Reset Portd.4
End If
If Hour = Hour22 And Mine = Mine22 And Seco = Seco22 Then ' ON FAN 2
Set Portd.3
Elseif Hour = Hour42 And Mine = Mine42 And Seco = Seco42 Then
Reset Portd.3
'**************************************
Seco = 0
Seco = Makebcd(seco)
I2cstart ' Generate start code
I2cwbyte Ds1307w ' send address
I2cwbyte 0 ' starting address in 1307
I2cwbyte Seco
I2cstop
Mine = 0
Mine = Makebcd(mine)
I2cstart ' Generate start code
I2cwbyte Ds1307w ' send address
I2cwbyte 1 ' starting address in 1307
I2cwbyte Mine
I2cstop
Hour = 0
Hour = Makebcd(hour)
I2cstart ' Generate start code
I2cwbyte Ds1307w ' send address
I2cwbyte 2 ' starting address in 1307
I2cwbyte Hour
I2cstop
'End If
End If
Return
'===============================================================================
End











دیدگاه