Сообщение от
dennt
А как выставить часы и дату в HE GLUK 0.19?
Нажимаем на клавиатуре кнопку сброс [ScrollLock] вместе с кнопкой [S], выставляем время для виртуальной микросхемы MC146818A.
Т.к. при включении платы данные о времени и дате копируются загрузчиком из PCF8583, то менять время лучше именно для нее. Для этого нужно откорректировать SECOND, MINUTES, HOURS, YEAR_DATE, WEEK_MONTH и запустить следующий код:
Код:
; I2C PCF8583 SetTime version 0.2 Written By MVV Rev.20110221
;Port #8C W/R
; bit7-0 = DATA
;Port #9C W
; bit1-0 = 00:IDLE; 01:START; 10:NSTART; 11:STOP
;Port #9C R
; bit1 = ERROR
; bit0 = BUSY
;BCD FORMAT
SECOND EQU #00 ;7-0=SECOND
MINUTES EQU #22 ;7-0=MINUTES
HOURS EQU %00010110 ;7=FORMAT; 6=FLAG; 5-0=HOURS
YEAR_DATE EQU %01100000 ;7-6=YEAR; 5-0=DAYS
WEEK_MONTH EQU %11100010 ;7-5=WEEKDAYS; 4-0=MONTHS
ORG 30000
DI
;---------------------------------------------------------------
; JP COR ; CORRECTION YEAR
;---------------------------------------------------------------
LD A,%11111101 ;START
OUT (#9C),A
LD A,%10100000 ;SLAVE ADDRESS W
OUT (#8C),A
CALL W1
LD A,%11111100 ;IDLE
OUT (#9C),A
LD A,#02 ;WORD ADDRESS
OUT (#8C),A
CALL W1
LD A,SECOND
OUT (#8C),A
CALL W1
LD A,MINUTES
OUT (#8C),A
CALL W1
LD A,HOURS
OUT (#8C),A
CALL W1
LD A,YEAR_DATE
OUT (#8C),A
CALL W1
LD A,%11111111 ;STOP
OUT (#9C),A
LD A,WEEK_MONTH
OUT (#8C),A
CALL W1
COR LD A,%11111101 ;START
OUT (#9C),A
LD A,%10100000 ;SLAVE ADDRESS W
OUT (#8C),A
CALL W1
LD A,%11111100 ;IDLE
OUT (#9C),A
LD A,#10 ;WORD ADDRESS
OUT (#8C),A
CALL W1
LD A,%11111111 ;STOP
OUT (#9C),A
LD A,#10 ;YEAR CORRECTION
OUT (#8C),A
CALL W1
RET
;WAIT ACKNOWLEDGEMENT
W1 IN A,(#9C)
RRCA
JR C,W1
RRCA
RET