/********************************************* This program was produced by the CodeWizardAVR V1.23.3 Standard Automatic Program Generator © Copyright 1998-2002 HP InfoTech s.r.l. http://www.hpinfotech.ro e-mail:office@hpinfotech.ro , hpinfotech@xmail.ro Project : Connect to DS1302, and display it in LCD Version : 1 Date : 5/24/2002 Author : Thomas Lui Company : Thomtronics Technology Company Comments: Connection: LCD connect to PortC letATworkII DS1302 +5V -- pin1 -- pin2---| 32.768kHz Crystal pin3---| PortA.2 -- pin5 PortA.0 -- pin6 PortA.1 -- pin7 Chip type : ATmega128 Program type : Application Clock frequency : 16.000000 MHz Memory model : Small Internal SRAM size : 4096 External SRAM size : 0 Data Stack size : 1024 *********************************************/ #include #include #include // Alphanumeric LCD Module functions #asm .equ __lcd_port=0x15 #endasm #include // DS1302 Real Time Clock functions #asm .equ __ds1302_port=0x1B .equ __ds1302_io=0 .equ __ds1302_sclk=1 .equ __ds1302_rst=2 #endasm #include // Declare your global variables here void main(void) { // Declare your local variables here unsigned char date,month,year,hour,minute,second; char lcd_buffer[33]; // Input/Output Ports initialization // Port A initialization // Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In // State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T PORTA=0x00; DDRA=0x00; // Port B initialization // Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In // State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T PORTB=0x00; DDRB=0x00; // Port C initialization // Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In // State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T PORTC=0x00; DDRC=0x00; // Port D initialization // Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In // State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T PORTD=0x00; DDRD=0x00; // Port E initialization // Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In // State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T PORTE=0x00; DDRE=0x00; // Port F initialization // Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In // State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T PORTF=0x00; DDRF=0x00; // Port G initialization // Func0=In Func1=In Func2=In Func3=In Func4=In // State0=T State1=T State2=T State3=T State4=T PORTG=0x00; DDRG=0x00; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=FFh // OC0 output: Disconnected TCCR0=0x00; ASSR=0x00; TCNT0=0x00; OCR0=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer 1 Stopped // Mode: Normal top=FFFFh // OC1A output: Discon. // OC1B output: Discon. // OC1C output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; OCR1CH=0x00; OCR1CL=0x00; // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer 2 Stopped // Mode: Normal top=FFh // OC2 output: Disconnected TCCR2=0x00; ASSR=0x00; TCNT2=0x00; OCR2=0x00; // Timer/Counter 3 initialization // Clock source: System Clock // Clock value: Timer 3 Stopped // Mode: Normal top=FFFFh // OC3A output: Discon. // OC3B output: Discon. // OC3C output: Discon. TCCR3A=0x00; TCCR3B=0x00; TCNT3H=0x00; TCNT3L=0x00; OCR3AH=0x00; OCR3AL=0x00; OCR3BH=0x00; OCR3BL=0x00; OCR3CH=0x00; OCR3CL=0x00; // External Interrupt(s) initialization // INT0: Off // INT1: Off // INT2: Off // INT3: Off // INT4: Off // INT5: Off // INT6: Off // INT7: Off EICRA=0x00; EICRB=0x00; EIMSK=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00; ETIMSK=0x00; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off // Analog Comparator Output: Off ACSR=0x80; SFIOR=0x00; // DS1302 Real Time Clock initialization // Trickle charger: Off rtc_init(0,0,0); // LCD module initialization lcd_init(16); lcd_putsf("DS1302 Demo"); delay_ms(2000); lcd_clear(); rtc_set_date(31,12,02); lcd_clear(); rtc_set_time(23,59,58); lcd_clear(); while (1) { // Place your code here rtc_get_date(&date,&month,&year); sprintf(lcd_buffer,"%2u-%2u-200%u",date,month,year); lcd_gotoxy(0,0); lcd_puts(lcd_buffer); delay_ms(500); rtc_get_time(&hour,&minute,&second); sprintf(lcd_buffer,"%2u:%2u:%2u",hour,minute,second); lcd_gotoxy(0,1); lcd_puts(lcd_buffer); delay_ms(500); lcd_clear; }; }