RTC DS 1.302 kodas reikalingas (RTC nesiskaito)

T

tapan.entc

Guest
Parašiau ASM KODEKSO DS 1302.
AŠ RAŠYTI LAIKAS RTC SĄRAŠAS IR READIND laiką, kuris yra teisingas.

Bet problema yra laikas nėra DIDINIMAS ...

To, jokie iš HELP ME?

 
Labas,
Adresu 00h (adresas 0), tiek 7 yra CH (laikrodis sustabdyti).Įsitikinkite, kad turite tai leido šiek tiek.Jei ne taip, laikas nėra skaičiuojamas.Kai išvalytas, jūsų problema turėtų būti išspręsta.
Hope this helps.
Tahmid.

 
Hi Tahmid
Ačiū už atsakymą.
Pirmiausia aš davė 00h iki antrojo registruotis ..bet laikrodis yra ne didinti ..
i will give u my code ... Prašom pasiūlymas ....

Kalbant
Tapan

 
Labas,
Tai bus naudinga, jei po Jūsų kodas.
Beje, kokia kalba ir sudarytojas naudojate?

 
Hi Tahmid

Aš naudoju "Keil" programinę įrangą ir mano kodas yra parašyta Asemblerio kalba ..

turiu užbaigti šį projektą iki rytojaus, todėl prašome duoti man pasiūlymus.Mano kodas:

;###############################################
; PROGRAMA sąsajos RTC su AT89S8252
; Autorius: Rout Tapan
;###############################################
CE kongresas P1.7; Chip Enable PIN P1.7
IO kongresas P3.4; duomenys PIN P3.4
SCLK kongresas P1.6; Laikrodis PIN P1.6

com_adr kongresas 0fe00h; LCD VALDYMO registras Adresas
dat_adr kongresas 0fe01h; LCD DUOMENŲ SĄRAŠAS ADRESAS

ORG 0000H
AJMP TITULINIS

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;
; MAIN PROGRAM starts here
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;
ORG 030H
Atsakingas komitetas:

ACALL LCD_INIT; Inicijuojama LCD
/ *
mov scon, # 50h
mov tmod, # 02h
mov th0, # 0fdh
; MOV TL1, 0FDH
mov tcon, # 45h
setb tr0 * /

CLR CE;
CLR SCLK
NOP
NOP
SETB CE

MOV R1, # 8EH; Padarykite MODE
MOV R0, # 0
LCALL RAŠYKITE

MOV R1, # 90h; sroventi CHARGER SĄRAŠAS IR DIODE SELECT
MOV R0, # 0ABH, 2 diodai, 8K
ACALL RAŠYKITE

MOV R1, # 80H; RAŠYTI seconds
MOV R0, # 0
ACALL RAŠYKITE

MOV R1, # 82H; RAŠYTI PROTOKOLAS
MOV R0, # 05h
ACALL RAŠYKITE

MOV R1, # 84H; RAŠYTI VALANDOS
MOV R0, # 11H
KVIETIMAS RAŠYKITE

MOV R1, # 86H; RAŠYTI DATA: 27
MOV R0, # 27H
ACALL RAŠYKITE

MOV R1, # 88H; RAŠYTI MĖNUO: 9 (rugsėjis)
MOV R0, # 9
ACALL RAŠYKITE

MOV R1, # 8CH; RAŠYTI METAI: 09 (2009)
MOV R0, # 09H
ACALL RAŠYKITE
/ *
MOV R1, # 80H; RAŠYTI seconds
Mov A, # 00h
MOV @ R1,
NOP
NOP * /

SS:

MOV R1, # 81H, skaityti seconds
KVIETIMAS SKAITYTI
MOV 20H, R0

MOV R1, # 83H, skaityti PROTOKOLAS
KVIETIMAS SKAITYTI
MOV 21h, R0

MOV R1, # 85h, skaityti valandos
KVIETIMAS SKAITYTI
MOV 22h, R0

MOV R1, # 87h, skaityti DATA
KVIETIMAS SKAITYTI
MOV 23h, R0

MOV R1, # 89H, skaityti MĖNESIŲ
KVIETIMAS SKAITYTI
MOV 24H, R0

MOV R1, # 8DH, skaityti METAI
KVIETIMAS SKAITYTI
MOV 25H, R0DIS:
MOV, 21h; skaityti minučių ir rodyti LCD
PUSH ACC
MOV, # 86H
ACALL COMNWRT
ACALL DELAY
MOV ,#':'
ACALL DATAWRT
ACALL DELAY
POP ACC
ACALL ASCIICONV

MOV A, 22h; rad valandas ir rodyti LCD
PUSH ACC
MOV, # 84H
ACALL COMNWRT
ACALL DELAY
POP ACC
ACALL ASCIICONV

MOV A, 22h
JB ACC.5, PM; pažymėkite AM arba PM sąlyga
MOV, # 8AH
ACALL COMNWRT
ACALL DELAY
MOV A, # ""
ACALL DATAWRT
ACALL DELAY
/ * MOV, # 'M'
ACALL DATAWRT
ACALL DELAY * /
SJMP M
PM: mov, # 8AH
ACALL COMNWRT
ACALL DELAY
MOV A, # 'P'
ACALL DATAWRT
ACALL DELAY
M: mov, # 'M'
ACALL DATAWRT
ACALL DELAY

SJMP SS

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;
; Ymas
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;
Rašo:
; CLR SCLK; CLEAR SCLK LINE
; NOP
; NOP
SETB CE; SET CE aukštas ymas
NOP
MOV, R1; KROVININIAI ADRESAS
MOV R2, # 8; COUNT = 8
WRITE_1: krc;
MOV IO C; SIŲSTI LSB PIRMOSIOS ir tęsti
NOP
NOP
SETB SCLK
NOP
NOP
CLR SCLK
DJNZ R2 WRITE_1
NOP
NOP
;*************
MOV A, R0; LOAD DATA
MOV R2, # 8; SET COUNT = 8
WRITE_2: krc;
MOV IO C
NOP
NOP
SETB SCLK
NOP
NOP
CLR SCLK
DJNZ R2 WRITE_2
NOP
NOP
CLR CE
NOP
NOP

RET
;**********************************************/
, Skaityti OPERAION
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Skaityti:
SETB CE; RINKINYS "CE
MOV, R1; KROVININIAI ADRESAS PIRMASIS
MOV R2, # 8
READ_1: krc
MOV IO C; JUDĖTI adresą per IO PIN
NOP
NOP
SETB SCLK; SET SCLK
NOP
NOP
CLR SCLK; CLEAR SCLK įrašymo VEIKLA
DJNZ R2 READ_1
NOP
NOP
SETB IO
CLR
CLR C
MOV R2, # 8
READ_2: MOV C, IO
Krc
NOP
NOP
SETB SCLK
NOP
NOP
CLR SCLK
NOP
NOP
DJNZ R2 READ_2
MOV R0,
; ANL, # 7FH
CLR CE

RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;
; LCD initialization
;...............................................
LCD_INIT:
MOV A, # 38h
ACALL COMNWRT
ACALL DELAY

MOV, # 0CH
ACALL COMNWRT
ACALL DELAY

MOV, # 01H
ACALL COMNWRT
ACALL DELAY

MOV, # 06H
ACALL COMNWRT
ACALL DELAY

RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;
COMNWRT:
MOV DPTR, # COM_ADR
MOVX @ DPTR,
NOP
NOP
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DATAWRT:
MOV DPTR, # DAT_ADR
MOVX @ DPTR,
NOP
NOP
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ASCIICONV:
PUSH ACC
, MOV, R0
SWAP
ANL A, # 0FH
ORL, # 30H
ACALL DATAWRT
ACALL DELAY
, MOV, R0
POP ACC
ANL A, # 0FH
ORL, # 30H
ACALL DATAWRT
ACALL DELAY
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*/
DELAY:
MOV R3, # 200
Atgal: MOV R4, # 255
DJNZ R4, $
DJNZ R3, nugaros

RET

PABAIGA
Kalbant
Tapan

 
Hi Tapan,
Atsiprašome vyras, aš neįsivaizduoju, ką parašė.Aš dirbu su PIC ir ne AVR.Parašytas po 4 minučių:Bet, kadangi sakei, išvalėte CH bit, neturėtų būti jokių kitų problemų, nes Jūs minėjote, skaityti / rašyti dirba puikiai.
Patikrinkite 32.768kHz krištolas ir jūs nustatyti bet SQW PIN dažnį?Jei taip, patikrinkite, ar jūs gaunate tinkamą dažnį, jei neturite, kad jis ir patikrinkite, ar teisingai dažnį.
Manau, kad viskas, galiu pasakyti.Aš negaliu suprasti vieno žodžio apie tai, ką parašė.

 
Turite išbandyti savo kodą etapais ..
Pabandykite, pavyzdžiui, padidinti M (21) => value minučių

Keisti savo kodą taip:

; MOV R1, # 83H, skaityti PROTOKOLAS
; KVIETIMAS SKAITYTI
; MOV 21h, R0

MOV R1, # 21h
INC @ R1

Ir patikrinkite, kas yra rodoma LCD ..

...

 
Hello IanP

Ačiū už atsakymą.
Manau RTC metu turėtų padidinti automatiškai.
Aš taip kartą ir parodyti LCD.

Bet kaip ir sakė, kad daugiau laiko programą.

Keisti savo kodą taip:

; MOV R1, # 83H, skaityti PROTOKOLAS
; KVIETIMAS SKAITYTI
; MOV 21h, R0

MOV R1, # 21h
INC @ R1Čia aš turiu kitą abejonių, kad:
bent 21h, nėra jokių duomenų, kaip aš padidins šių duomenų.

atsakykite man, ir man padėti.

Kalbant

Tapan

 
Dėl įjungimo M (21h) vertė nėra apibrėžta, todėl įsitikinkite, kad jį būtų 00h pridėti vieną eilutę kodas pradžios programa ..

ORG 030H
Atsakingas komitetas:
ACALL LCD_INIT; Inicijuojama LCD
MOV 21h, # 00h
...

Jei visa kita veikia puikiai, turėtumėte pamatyti PROTOKOLAS keičiasi ..Visa tai daroma laikina, tiesiog išbandyti savo likusia kodas, kuris atsakingas už rodyti ir rodyti, kad jūsų kodas prasideda ir nėra užrakinta kažkur begalinis ciklas ..

Rgds,
IanP

 
Sveiki IanP

Aš padariau, kaip tu sakai, bet tas pats vyksta.

Mano problema
Raštu RTC yra ok
tada skaityti iš RTC yra tas pats, kad buvo parašyta .....

skaitant sek registre po to, kai rodydami antra
kai klaustuko rodoma, kurią aš ne atsižvelgiant į programą.

Prašome per mano kodas.
Esu naujas vidinės srityje ..
Tikėjausi daugiau iš jūsų.
Tikiuosi padės man .....With Regards
Tapan

 

Welcome to EDABoard.com

Sponsor

Back
Top