2009년 4월 6일 15:58 오류

G

GrandAlf

Guest
만약 누군가가 나를 위해 다음을 확인하실 수있습니다 대단히 감사하겠습니다.그 자리에 보이지 않을 수있습니다.""DS1302GetAll, 너무 많은 시간을 호출 할 때 실제 매개 변수는 오류가 발생합니다.많은 감사.

////////////////////////////////////////////////// ///////////////////////////////////////
무효 시간 ()
(
서명되지 않은 숯불 둘째, 할인, 시간, 날짜, 달, 주, 년;

DS1302Init ();
lcd_init ();

lcd_puts ( '\ F');

DS1302GetAll (둘째, 분, 시간, 날짜, 달, 주, 년);

printf (lcd_puts, "% 02u / % 02u / % 02u % 02u : % 02u", 날짜, 달, 연도,시, 분);
printf ( "날짜 % 02u / % 02u / % 02u \ n \ rTime % 02u : % 02u \ n \ 연구", 날짜, 달, 연도,시, 분);
DelayMs (250);
)
////////////////////////////////////////////////// //////////////////////////////////////

/ / DS1302.h

# ifndef DS1302_H
DS1302_H 정의 #

# <AT89S8253.h> 포함
# 포함 <intrins.h>

sbit DS1302Sclk = P0 ^ 0;
sbit DS1302Io = P0 ^ 1;
sbit DS1302Ce = P0 ^ 2;

sbit ACC0 = ACC ^ 0;
sbit ACC7 = ACC ^ 7;

구조체 형식 __SYSTEMTIME__
(
서명되지 않은 숯불 둘째;
서명되지 않은 숯불 할인;
서명되지 않은 숯불 시간;
서명되지 않은 숯불 날짜;
서명되지 않은 숯불 달;
서명되지 않은 숯불 주;
서명되지 않은 숯불 년;
)
는 SYSTEMTIME;/ / 등록 주소를 읽기와 쓰기는 매크로의 정의
0x80으로 정의 SEC_WRITE #
SEC_READ 0x81 정의 #
0x82 MIN_WRITE 정의 #
MIN_READ 0x83 정의 #
0x84 HOUR_WRITE 정의 #
HOUR_READ 0x85 정의 #
0x86 DATE_WRITE 정의 #
DATE_READ 0x87 정의 #
0x88 MONTH_WRITE 정의 #
MONTH_READ 0x89 정의 #
0x8a WEEK_WRITE 정의 #
WEEK_READ 0x8b 정의 #
0x8c YEAR_WRITE 정의 #
YEAR_READ 0x8d 정의 #
0x8e WP_WRITE 정의 #
WP_READ 0x8F 정의 #
0x90 TCS_WRITE 정의 #
TCS_READ 0x91 정의 #
/ / RAM을 읽고 매크로 정의의 주소를 쓴다면,이 주소를 보존하는 데 사용되는 태그를 초기화합니다.
0xC0 SET_FLAG_WRITE 정의 #
SET_FLAG_READ 0xc1 정의 #
/ / 램 버스트 모드에 순서와 단어를 읽고 쓰기
0xFE RAM_BURST_WRITE 정의 #
RAM_BURST_READ를 0xFF 정의 #
/ / 버스트 모드 명령을 읽고 등록하고 단어를 써주세요
0xBE CLOCK_BURST_WRITE 정의 #
CLOCK_BURST_READ 0xbf 정의 #
/ / 쓰기 - 설정 보호
WP_ON 0x80으로 정의 #
WP_OFF 0x00 정의 #
/ / 매크로의 정의 : DS1302 초기화되었습니다.
IS_SET 0xaa 정의 #
NOT_SET 0x00 정의 #
이렇게의 목적의 매크로 정의의
CE를 / / 중, 아이오와, SCLK 라인 작업의 편의를 위해 다른 미래를 전송하기위한 플랫폼,하지만 언제
/ /은 설계 시간의 핀 번호를, 그것은 그것을 어떻게 찍을 수 있을까요?
# SETB_DS1302_CE
정의 (); DS1302Ce = 1;
# CLR_DS1302_CE
정의 (); DS1302Ce = 0;
# SETB_DS1302_SCLK
정의 (); DS1302Sclk = 1;
# CLR_DS1302_SCLK
정의 (); DS1302Sclk = 0;
# PUT_DS1302_IO (); DS1302Io = ACC0 정의;
# GET_DS1302_IO (); ACC7 = DS1302Io 정의;

/ / 함수 정의
통근자 무효 DS1302Init (무효);
통근자 무효 DS1302WriteByte (서명 숯불 데이터);
통근자 서명 숯불 DS1302ReadByte (무효);
통근자 무효 DS1302SetWP (서명 숯불 신고);
통근자 무효 DS1302GetAll (는 SYSTEMTIME * 시간);
통근자 무효 DS1302SetAll (는 SYSTEMTIME * 시간);
# 각각 endif/ / DS1302.c

# ""DS1302.h 포함

무효 DS1302Init (무효)
(
서명되지 않은 숯불 신고;
는 SYSTEMTIME TimeInit;

SETB_DS1302_CE ();
DS1302SetWP (WP_OFF);
DS1302WriteByte (SET_FLAG_READ);
신고 = DS1302ReadByte ();

만약 (신고! = IS_SET)
(
DS1302WriteByte (SET_FLAG_WRITE); / / 램 0xaa, DS1302WriteByte (SET_FLAG_WRITE); 첫 번째 바이트의 RAM / / 년, 그 초기화되었습니다 0xaa를 써주세요.
DS1302WriteByte (IS_SET);
TimeInit.Second = 0x00; / / TimeInit.Second = 0x00; / / 초기화 시간.
TimeInit.Minute = 0x00;
TimeInit.Hour = 0x00;
TimeInit.Date = 0x12;
TimeInit.Month = 0x03;
TimeInit.Week = 0x06;
TimeInit.Year = 0x09;
DS1302SetAll (& TimeInit);
)
DS1302SetWP (WP_ON); / / DS1302SetWP (WP_ON); / / 쓰기 - 보호를 엽니다.
CLR_DS1302_CE (); / / CE를?, DS1302 CLR_DS1302_CE (); / / 릴리스 CE를 라인을 피하기 위해서는 DS1302의 misoperation.
)

무효 DS1302SetWP (서명 숯불 신고)
(
DS1302WriteByte (WP_WRITE); / / DS1302WriteByte (WP_WRITE); / / 단어 순서를 써주세요.
DS1302WriteByte (신고); / / DS1302WriteByte (신고); / / 레지스터의 내용을 써주세요.
)

무효 DS1302WriteByte (서명 숯불 데이터)
(
서명되지 않은 숯불 난;
ACC = 데이터;
은 (i = 8; 난> 0; 난 -) / / ACC, SCLK, ACC는 (i = 8; 난> 0; 난 -) / / 각, ACC의 최소 작성 후 SCLK에 보내집니다 펄스, ACC 오른쪽에 각 하나의 토대를 마련했다.
(
CLR_DS1302_SCLK ();
PUT_DS1302_IO ();
SETB_DS1302_SCLK ();
ACC = ACC>> 1;
)
CLR_DS1302_SCLK (); / / CLR_DS1302_SCLK (); / / 부정적인 준비를 읽기 위해서는 다음 바이트 호핑, 그리고
/ / 왜인지 몰라, 어떻게하지면 오른쪽에있는 진술은 다음 기능으로 읽고,.
)

서명 숯불 DS1302ReadByte (무효)
(
서명 숯불 난;
은 (i = 8; 난> 0; 난 -) / / IOACC, ACC에 대한??이후
각 아이오 다음 제외어 도약을 보내는 가장 높은 ACC 읽기 읽기는 (i = 8; 난> 0; 난 -) / / 추가 다음, 각 ACC도있다
/ / 오른쪽 하나의 토대를 마련했다.
(
ACC = ACC>> 1;
GET_DS1302_IO ();
SETB_DS1302_SCLK ();
CLR_DS1302_SCLK ();
)
반환 (ACC);
)

무효 DS1302SetAll (는 SYSTEMTIME * 시간)
(
SETB_DS1302_CE (); / / CE를, DS1302 SETB_DS1302_CE (); / / 제기 CE를 라인, DS1302 작동할 준비가되어있습니다.
DS1302SetWP (WP_OFF); / / DS1302SetWP (WP_OFF); / / off를 작성 - 보호 차례야.
CLR_DS1302_CE (); / / CE를, DS1302 CLR_DS1302_CE (); / / 릴리스 CE를 라인을 피하기 위해서는 DS1302의 misoperation.

SETB_DS1302_CE (); / / CE를, DS1302 SETB_DS1302_CE (); / / 제기 CE를 라인, DS1302 작동할 준비가되어있습니다.
DS1302WriteByte (CLOCK_BURST_WRITE); / / 버스트 모드 쓰기 DS1302WriteByte (CLOCK_BURST_WRITE); / / 버스트 모드 쓰기를 입력합니다.
DS1302WriteByte (타임 -> 2);
DS1302WriteByte (타임 -> 할인);
DS1302WriteByte (타임 -> 시간);
DS1302WriteByte (타임 -> 일자);
DS1302WriteByte (타임 -> 달);
DS1302WriteByte (타임 -> 주);
DS1302WriteByte (타임 -> 년도);
DS1302SetWP (WP_ON); / / DS1302SetWP (WP_ON); / / 쓰기 - 보호를 엽니다.
CLR_DS1302_CE (); / / CE를, DS1302????CLR_DS1302_CE (); / / 릴리스 CE를 라인을 피하기 위해서는 DS1302의 misoperation.
)

무효 DS1302GetAll (는 SYSTEMTIME * 시간)
(
SETB_DS1302_CE (); / / CE를, DS1302 SETB_DS1302_CE (); / / 제기 CE를 라인, DS1302 작동할 준비가되어있습니다.
DS1302WriteByte (CLOCK_BURST_READ); / / 버스트 모드 읽기?DS1302WriteByte (CLOCK_BURST_READ); / / 버스트 모드 읽기를 입력합니다.
타임 -> 둘째 = DS1302ReadByte ();
타임 -> 할인 = DS1302ReadByte ();
타임 -> 시간 = DS1302ReadByte ();
타임 -> 날짜 = DS1302ReadByte ();
타임 -> 달 = DS1302ReadByte ();
타임 -> 주 = DS1302ReadByte ();
타임 -> 년도 = DS1302ReadByte ();
CLR_DS1302_CE (); / / CE를?, DS1302 CLR_DS1302_CE (); / / 릴리스 CE를 라인을 피하기 위해서는 DS1302의 misoperation.
)

 

Welcome to EDABoard.com

Sponsor

Back
Top