Variable = Time ( Address )
Variable : 결과를 저장할 정수형 변수 |
Address : RTC의 번지 (0부터 6까지) |
CB290, CT1721C
RTC칩에 <Address>에서 데이터를 읽어옵니다.
0번지 | 초 (0 ~ &H59) |
---|---|
1번지 | 분 (0 ~ &H59) |
2번지 | 시간 (0 ~ &H23) |
3번지 | 날짜 (1 ~ &H31) |
4번지 | 요일 (1 ~ 7 ) 1=일요일, 2=월요일…7=토요일 |
5번지 | 월 (1 ~ &H12) |
6번지 | 연도 (0 ~ &H99) 2000년을 더하면됩니다. |
상위4비트에는 10이상의 값이 저장되고, 하위 4비트에는 10이하의 값이 저장됩니다. 따라서 읽어온 데이터는 16진 형으로 표시해야 제대로 된 값이 표시됩니다.
A = Time(0) Debug Hex2 A,Cr
Const Device =CT1720 Dim I As Byte Timeset 0,0 '초 Timeset 1,&H24 '분 Timeset 2,&H9 '시 Timeset 3,&H21 '일 Timeset 4,&H6 '요일 Timeset 5,&H4 '월 Timeset 6,&H5 '연도 Do I = Time(6) Debug "200",Hex I,"년 " I = Time(5) Debug Hex2 I,"월 " I = Time(4) Select Case I Case 0 Debug "일요일 " Case 1 Debug "월요일 " Case 2 Debug "화요일 " Case 3 Debug "수요일 " Case 4 Debug "목요일 " Case 5 Debug "금요일 " Case 6 Debug "토요일 " End Select I = Time(3) Debug Hex2 I,"일 " I = Time(2) Debug Hex2 I,"시 " I = Time(1) Debug Hex2 I,"분 " I = Time(0) Debug Hex I,"초",cr Delay 1000 Loop
RTC 칩이 없는 모델(예: CB210, CB220, CB280, MSB6xx)에서는 TIME, TIMESET 명령어로, 아래 표와 같이 10 번지 이후를 사용합니다. 시스템 클록은 RTC 칩보다 정확하지 않으며 오차가 있을 수 있습니다. 그리고 밧데리백업이 불가능하여, 전원이 없을 때 시간이 자동으로 증가되는 것이 불가능합니다.
Address | Returning Value | Range |
---|---|---|
10 | Seconds | 0 to 59 |
11 | Minutes | 0 to 59 |
12 | Hours | 0 to 65535 |
13 | Continuous Seconds | 0 to 65535 |
10 (초)번지는 1 초마다 1 씩 증가되어, 60 이 되면 11 (분)번지가 1 증가됩니다. 이후 60 분이 되면 12(시)번지가 1 증가됩니다. 12(시)번지는 65535 까지 계속 증가되다가, 65535 이후에는 다시 0 이 됩니다. 이 번지의 값은 파 워온시 0 이 되며, TIMESET 명령을 사용해서 다른 값을 써넣을수도 있습니다. 이 번지의 내용은 RTC 칩과는 달 리, 전원OFF 상황에서 계속 갱신되지 않습니다.
또한 시스템 클록RTC (번지 10~13) 의 내용은 앞에서 설명한 번지의 내용처럼 BCD 코드로 기록되어 있지 않고, 바이너리값 그대로 기록되어 집니다. 따라서 유저는 BCD to Binary 변환을 할 필요가 없습니다. 시스템클록 RTC (번지 10~13) 의 내용은 시스템 클록으로부터 갱신되어지는 정보이며, 실제시간과 약간의 오차 가 발생할 수 있으며, 앞에서 설명한 RTC 칩의 내용과는 일치하지 않습니다. 다음은 샘플 프로그램입니다.
Const Device = CB405 Dim i As Integer Cls Timeset 10,58 Timeset 13,254 Do i = Time(10) Debug Goxy,0,0,dec4 i,Cr Debug Goxy,0,1,dec4 Time(13) Delay 100 Loop
13 번지는 10 번지와 같이 1 초마다 1 씩 증가됩니다. 10 번지는 60 초가 되면다시 0 으로 리셋되지만, 13 번지는 65535 가 될때까지 계속 증가됩니다. 65535 에서 1 초가 더 지나면, 다시 0 이 됩니다. 연속적인 경과시간을 초단 위로 알고 싶을 때 사용합니다.