หัวข้อ: ทำไมต่อ Ds1307 แล้วตอนตั้งเวลามันแสดงเลขฐาานสิบหกอะคับช่วยหน่อย เริ่มหัวข้อโดย: 04_EnE ที่ มกราคม 05, 2013, 09:54:29 am คือว่าเมือเราเซตปุ่มชั่วโมงหรือนาที เมื่อตั้งเกิน10จะแสดงA เมื่อเราสั่งตกลงแล้ว เช่น ตั้ง 23:10:00 มันจะแสดงเป็น 17:0A:00 มีวิธีแก้ยังไงอะครับ :D
หัวข้อ: Re: ทำไมต่อ Ds1307 แล้วตอนตั้งเวลามันแสดงเลขฐาานสิบหกอะคับช่วยหน่อย เริ่มหัวข้อโดย: JUB ที่ มกราคม 06, 2013, 12:55:57 am ให้บวก 6
0A + 6 = 10 หัวข้อ: Re: ทำไมต่อ Ds1307 แล้วตอนตั้งเวลามันแสดงเลขฐาานสิบหกอะคับช่วยหน่อย เริ่มหัวข้อโดย: kiano♥ ที่ มกราคม 06, 2013, 09:04:54 am ไอซี DS1307 ต้องมีการแปลงข้อมูลก่อนการรับและส่ง ตัวอย่างเช่น
รับข้อมูลจาก DS1307 second = Bcd2Dec16(Soft_I2C_Read(1)); minute = Bcd2Dec16(Soft_I2C_Read(1)); hour = Bcd2Dec16(Soft_I2C_Read(0)); **หมายเหตุ Bcd2Dec16 คือ Converts 16-bit BCD numeral to its decimal equivalent. ส่งข้อมูลไปที่ DS1307 Soft_I2C_Write(Dec2Bcd(minute)); **หมายเหตุ Dec2Bcd คือ Converts input unsigned short integer number to its appropriate BCD representation. หัวข้อ: Re: ทำไมต่อ Ds1307 แล้วตอนตั้งเวลามันแสดงเลขฐาานสิบหกอะคับช่วยหน่อย เริ่มหัวข้อโดย: 04_EnE ที่ มกราคม 07, 2013, 06:24:35 pm อย่างนี้ป่าวคับเช่น if(RTC.hr==0A)
RTC.hr==10; ผมลองแล้วมัน Error ******************************************************************************* มันประกาสได้แต่อย่างนี้ แต่มันไม่ทำงานอะคับ if(RTC.hr==A) RTC.hr==10; ช่วยหน่อยคับ หัวข้อ: Re: ทำไมต่อ Ds1307 แล้วตอนตั้งเวลามันแสดงเลขฐาานสิบหกอะคับช่วยหน่อย เริ่มหัวข้อโดย: kiano♥ ที่ มกราคม 07, 2013, 10:14:41 pm ไม่ใช่ครับ อ่านคำตอบข้างต้นแล้วเข้าใจไหมครับ
คือต้องแปลงฐานตัวเลขก่อน รับมาเป็น hex ต้องแปลงให้เป็น dec ก่อน จะใช้ฟังก์ชั่นอะไรแปลง หรือจะเขียนฟังก์ชั่นแปลงเองก็แล้วแต่ แล้วค่อยเอาเลขที่ได้จากการแปลงมาใช้งาน |