اطلاعیه

Collapse
No announcement yet.

اینم یه ساعت دقیق با CodeVisionAVR C Compiler

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    اینم یه ساعت دقیق با CodeVisionAVR C Compiler

    /*********************************************
    This program was produced by the
    CodeWizardAVR V1.23.8c Standard
    Automatic Program Generator
    © Copyright 1998-2003 HP InfoTech s.r.l.
    http://www.hpinfotech.ro
    e-mailffice@hpinfotech.ro

    Project :
    Version :
    Date : 2005/04/14
    Author : SH.Yahyavi
    Company :
    Comments:


    Chip type : ATmega16
    Program type : Application
    Clock frequency : 1.000000 MHz
    Memory model : Small
    External SRAM size : 0
    Data Stack size : 256
    *********************************************/

    #include <mega16.h>

    // Alphanumeric LCD Module functions
    #asm
    .equ __lcd_port=0x15
    #endasm
    #include <lcd.h>
    #include <delay.h>
    #include <stdlib.h>


    // Timer 0 output compare interrupt service routine
    struct {
    unsigned char h,m,s,ms;
    } Time;

    interrupt [TIM0_COMP] void timer0_comp_isr(void)
    {
    if (++Time.ms == 125 )
    {
    Time.ms = 0;
    if (++Time.s == 60 )
    {
    Time.s = 0;
    if(++Time.m == 60 )
    {
    Time.m = 0;
    if(++Time.h == 24 )Time.h=0;
    }
    }
    }
    }

    void ShowNumberTime(int Number)
    {
    char st[10];
    itoa (Number,st);
    if (Number <10) {st[1] = ' ';st[2] = 0;}
    lcd_puts(st);

    }
    // بیت 0 برای نمایش ثانیه بیت 1 برای دقیقه وبیت 2برای ساعت

    void ShowTimeLcd(char Show)
    {
    if ( Show & 4)
    ShowNumberTime(Time.h);
    else
    lcd_putsf(" "

    lcd_putsf(":"
    if ( Show & 2)
    ShowNumberTime(Time.m);
    else
    lcd_putsf(" "
    lcd_putsf(":"
    if ( Show & 1)
    ShowNumberTime(Time.s);
    else
    lcd_putsf(" "

    }
    //------------------------------------------------------------------------
    #define Key_Ok PIND.5
    #define Key_Cansel PIND.4
    #define Key_Up PIND.3
    #define Key_Down PIND.2
    char GetKey()
    {
    static char OldIfKeyDwon;

    if ((Key_Ok == 0)||(Key_Up == 0)||(Key_Down == 0)||(Key_Cansel == 0))
    {
    if (OldIfKeyDwon==1)
    return 0xFF;
    OldIfKeyDwon=1;
    if (Key_Ok == 0) return 1;
    if (Key_Cansel == 0) return 2;
    if (Key_Up == 0) return 3;
    if (Key_Down == 0) return 4;
    }
    else
    OldIfKeyDwon=0;

    return 0xFF;
    }


    // Declare your global variables here

    void main(void)
    {
    // Declare your local variables here
    char Mode = 0,Key,ShowTimeCode = 7,delay;
    // 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=Out Func1=Out Func2=Out Func3=Out Func4=Out Func5=Out Func6=Out Func7=Out
    // State0=0 State1=1 State2=1 State3=0 State4=0 State5=1 State6=1 State7=0
    PORTB=0x66;
    DDRB=0xFF;

    // 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=P State3=P State4=P State5=P State6=T State7=T
    PORTD=0x3C;
    DDRD=0x00;

    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: 15.625 kHz
    // Mode: CTC top=OCR0
    // OC0 output: Disconnected
    TCCR0=0x0B;
    TCNT0=0x00;
    OCR0=0x7C;

    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: Timer 1 Stopped
    // Mode: Normal top=FFFFh
    // OC1A output: Discon.
    // OC1B 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;

    // Timer/Counter 2 initialization
    // Clock source: System Clock
    // Clock value: Timer 2 Stopped
    // Mode: Normal top=FFh
    // OC2 output: Disconnected
    ASSR=0x00;
    TCCR2=0x00;
    TCNT2=0x00;
    OCR2=0x00;

    // External Interrupt(s) initialization
    // INT0: Off
    // INT1: Off
    // INT2: Off
    GICR|=0x00;
    MCUCR=0x00;
    MCUCSR=0x00;

    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x02;

    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    // Analog Comparator Output: Off
    ACSR=0x80;
    SFIOR=0x00;

    // LCD module initialization
    lcd_init(16);

    // Global enable interrupts
    #asm("sei&quot

    while (1)
    {
    lcd_gotoxy(5,0);
    if (delay ++ >40)delay =0;
    if (delay >20)
    ShowTimeLcd(0b111);
    else
    ShowTimeLcd(ShowTimeCode);
    delay_ms(10);

    Key = GetKey();
    if (Key == 1) // OK
    {
    Mode ++;
    if (Mode > 3) Mode = 0;
    switch( Mode)
    {
    case 0: // نمایش ساعت
    ShowTimeCode = 0b0111;
    break;
    case 1: // نمایش ساعت با چشمک زدن ساعت برای تغغیر
    ShowTimeCode = 0b0011;
    break;
    case 2: // نمایش ساعت با چشمک زدن دقیقه برای تغغیر
    ShowTimeCode = 0b0101;
    break;
    case 3: // نمایش ساعت با چشمک زدن ثانیه برای تغغیر//
    ShowTimeCode = 0b0110;
    break;
    }// Switch
    } //end If Key 1 {Ok}

    if (Key == 3) // Up
    {
    switch( Mode)
    {
    case 0: // نمایش ساعت
    break;
    case 1: // نمایش ساعت با چشمک زدن ساعت برای تغغیر
    if (++Time.h >23)Time.h=23 ;
    break;
    case 2: // نمایش ساعت با چشمک زدن دقیقه برای تغغیر
    if (++Time.m >59)Time.m=59 ;
    break;
    case 3: // نمایش ساعت با چشمک زدن ثانیه برای تغغیر//
    Time.s=0;
    break;
    }// Switch
    } //end If Key 3 {Up}
    if (Key == 4) // down
    {
    switch( Mode)
    {
    case 0: // نمایش ساعت
    break;
    case 1: // نمایش ساعت با چشمک زدن ساعت برای تغغیر
    if (Time.h >0)Time.h-- ;
    break;
    case 2: // نمایش ساعت با چشمک زدن دقیقه برای تغغیر
    if (Time.m >0)Time.m-- ;
    break;
    case 3: // نمایش ساعت با چشمک زدن ثانیه برای تغغیر//
    Time.s=0;
    break;
    }// Switch
    } //end If Key 4 {Down}
    };
    }

    #2
    پاسخ : اینم یه ساعت دقیق با CodeVisionAVR C Compiler

    سلام:
    ممنون
    اگر ممکنه فایل پروتئوس رو قرار بدید

    دیدگاه

    لطفا صبر کنید...
    X