DS1302 & 8051

G

garg29

Guest
Salut prieteni,
Am proiectat recent un ceas digital cu calendar, utilizând RTC

DS1302, 89c51 şi LCD.De ciruit şi programul de lucru sunt bine.Till

acum nu am inclus de switch-uri pentru a stabili data şi ora.Acum, mi

Problema este, cum să se verifice dacă utilizatorul este stabilirea corectă data sau

nu,
de exemplu în cazul în care utilizatorul seturi de 31 februarie a programului ar trebui să afişeze "Invalid

Data ", acum pentru acest dacă am nevoie pentru a proiecta o funcţie sau nu DS1302

are niste inbuilt funcţia de a face acest lucru.

În ceea ce priveşte cele mai bune,
Garg

 
Cyberataki finansowane przez rządy staje się coraz bardziej wyrafinowane. Eksperci z Kaspersky Lab wzięli pod lupę najnowsze taktyki wykorzystywane pr ...

Read more...
 
De DS1302 nu va corecta datele pe care este scris de registre; acesta are anumite intervale, de exemplu, de luni de zile (0-30, 0-31, 0-28 sau 0-29 ani cu salt de corecţie) şi nişte biţi în registrele sunt doar 0, deci nu puteţi wite un 1 la ei ..
Dar, acest lucru nu va împiedica tentativele de scris greşit numere ..
Acest lucru trebuie făcut în software-ul
dvs. ..
O opţiune, în scris, DATA, de exemplu, este să stea cu anul apoi lună şi apoi ZIUA ..
În momentul în care tipul lună -> 02 = FEB permite doar 2 pentru zeci de zile şi apoi 8 sau 9, în funcţie de an.
Pentru că puteţi utiliza LeapYears_LookUpTable (00h, 04h, 08h, ....)
Pentru alte luni de utilizare Months_LookUpTable (31h, 28h, 31h, 30h, ...) şi pentru a verifica, sau nu permite greşit numerele ..
Cu respect,
IanP

 
Vă mulţumim pentru răspunsurile Ianp.Asta a fost cu adevarat un bun ajutor.Nu am folosit lookup tabele pana acum.Dacă puteţi să-mi oferi adresa de internet unde pot găsi un exemplu de tabel arata i-ar fi cu adevărat foarte bucuros pentru tine, chiar şi un mic exemplu, va face,

Mulţumesc încă o dată, şi cu privire la cele mai bune
Garg

 
Un exemplu tipic implică MOVC A, @ A PC.

Înainte de apel de subroutine vă asiguraţi-vă că este încărcată cu un corect luni.
Puteţi, de asemenea, trebuie să vă asiguraţi că prima luna este corectă,
şi anume, la 1 la 12.

Cod:MOV A, # lună; asiguraţi-vă că conţine o luna, de la 1 la 12, fie

; vă încărca aici sau sa se încărcate în altă parte

CALL MONTH_END; apel subroutine care returnează valabil ultima zi

; pentru că luna

; Face comparaţia aici, în cazul în care data introdus este mai mare, un ecran de eroare.

.

.

.MONTH_END: MOVC A, @ A PC; reveni la un octet de la PC-ul iniţial A

RET;; real tabel cu datele corecte este aiciDB 31; pentru luna ianuarie

DB 29; pentru februarie

DB 31

DB 30

DB 31

 
Cealaltă opţiune este de a angaja în DPTR ..
Poate ca este mai flexibil decât folosind opţiunea MOVC A, @ A PC ..
Arunca o privire la acest exemplu:

MOV DPTR, # Months_LookUpTable
MOV A, Luna
MOVC A, @ A DPTR

..Months_LookUpTable: DB 00h, 31h, 28h, 31h, 30h, .......

În acest caz, masa poate fi situat enywhere în program, de obicei, este în final (dacă preferă să nu se amestecă cu cod tabele) ..
Primul octet este 00h ca luni va începe de la 01h, sau, după încărcare A cu Luni puteţi introduce DEC O instruire şi începe masă cu 31h ..

Cu respect,
IanP

 
Salut prieteni,
ce face cu atât este mai mică linie de mijloc,

DB CR, LF, ******* DALLAS SEMICONDUCTOR *******

Cu respect,
Garg

 
MOV A, # 03H
MOVC A, @ A PC
RET
DB 10h, 20H, 30h, 40H, 50H, 60H, 70H, 80H

valoarea A, este?

 
Bună tuturor,

Am facut de asemenea DS1302 RTC AT 89S52 cu Atmel.fiecare lucru este de lucru bine, dar în momentul în DS1302 RTC este foarte rapid.Am verificat de cristal 32k, dar nu putea înţelege de ce această problemă occures?În cazul în care orice s-ar putea ajuta plz.

cu respect

 

Welcome to EDABoard.com

Sponsor

Back
Top