Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <basedef.h>
- #include <Board.h>
- #include <stdio.h>
- #include <fixedsys.h>
- #include <lcd_GE8.h>
- #include <rtt.h>
- int h, m, s, c;
- int ticks = 0;
- void RTT_myIrqHandler(void) __irq
- {
- //... Your code goes here
- ticks++;
- AT91F_TC_GetStatus( AT91C_BASE_TC0 );
- AT91F_AIC_AcknowledgeInterrupt(AT91C_BASE_AIC);
- }
- int main()
- {
- char msg[100];
- Color_t bckgColor=LCD_COLOR_RED;
- /* any other variables you need ... */
- /* Initialize the Atmel AT91SAM7X256 (watchdog, PLL clock, default interrupts, etc.) */
- AT91F_LowLevel_Init();
- InitLCD();
- LCD_ClearScreen( bckgColor );
- /* RTT init */
- RTT_Init( (void(*)()) RTT_myIrqHandler);
- h = m = s = 0;
- /* enable interrupts */
- AT91F_Finalize_Init();
- /* add your program here ... */
- //LCD_WriteString("My timer:", FONT_DESCRIPTOR, 10, 10, LCD_COLOR_BLACK, bckgColor);
- /* your main loop ... */
- while ( true )
- {
- __disable_irq();
- c += ticks;
- ticks = 0;
- __enable_irq();
- c%=20; //c=c+1; if (c==20) c=0;
- if (!c) { //if (c==0) ... //One second passed...
- ++s;
- s%=60; //s=s+1; if (s==60) s=0;
- if (!s) { //if (s==0) ... //One minute passed...
- ++m;
- m%=60; //m=m+1; if (m==60) m=0;
- //...
- }
- }
- sprintf(msg, "%02d:%02d:%02d", h, m, s);
- LCD_WriteString(msg, FONT_DESCRIPTOR, 35, 40, LCD_COLOR_BLACK, bckgColor);
- }
- /* The answer of every question in the universe */
- return 42;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement