Главная страница
Навигация по странице:

  • Задачи работы

  • Задачи на самостоятельную работу

  • Лабораторная работа CAVR. Лабораторная работа 1 Введение в программирование для микроконтроллеров (МК)


    Скачать 329.5 Kb.
    НазваниеЛабораторная работа 1 Введение в программирование для микроконтроллеров (МК)
    АнкорЛабораторная работа CAVR
    Дата04.07.2021
    Размер329.5 Kb.
    Формат файлаdoc
    Имя файлаlab1.doc
    ТипЛабораторная работа
    #223250

    Лабораторная работа №1

    Введение в программирование для микроконтроллеров (МК)

    Цель работы: Знакомство с архитектурой МК ATmega32, изучение средств программирования в среде Code Vision AVR, средств моделирования в среде AVR Studio 4, программирования регистров портов МК и способов доступа к постоянной памяти МК EEPROM.

    Задачи работы:

    1. Изучение ядра и встроенной в корпус периферии МК ATmega32

    2. Построение и компиляция проекта в Code Vision AVR

    3. Запуск .COFF-файла на моделирование в среде AVR Studio 4

    4. Написание программных модулей записи/чтения данных из регистров портов МК

    5. Написание программных модулей записи/чтения данных из памяти EEPROM МК.



    Задачи на самостоятельную работу:

    1. Реализовать побитовую конъюнкцию числа, записанного в порт А, и «1», сдвинутой влево на пять разрядов. Инвертировать результат и записать в порт С. Порт А сконфигурировать как вход, порт С – как выход. Использовать МК ATmega32 с частотой кварца 4МГц.



    /*****************************************************

    This program was produced by the

    CodeWizardAVR V2.05.0 Professional

    Automatic Program Generator

    © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.

    http://www.hpinfotech.com
    Project :

    Version :

    Date : 01.07.2021

    Author :

    Company :

    Comments:

    Chip type : ATmega32

    Program type : Application

    AVR Core Clock frequency: 4,000000 MHz

    Memory model : Small

    External RAM size : 0

    Data Stack size : 512

    *****************************************************/
    #include

    #include .

    // Declare your global variables here
    void main(void)

    {

    // Declare your local variables here
    // Input/Output Ports initialization

    // Port A initialization

    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=Out

    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=0

    PORTA=0x00;

    DDRA=0x01;
    // Port B initialization

    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

    PORTB=0x00;

    DDRB=0x00;
    // Port C initialization

    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

    PORTC=0x00;

    DDRC=0x00;
    // Port D initialization

    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

    PORTD=0x00;

    DDRD=0x00;
    // Timer/Counter 0 initialization

    // Clock source: System Clock

    // Clock value: Timer 0 Stopped

    // Mode: Normal top=0xFF

    // OC0 output: Disconnected

    TCCR0=0x00;

    TCNT0=0x00;

    OCR0=0x00;
    // Timer/Counter 1 initialization

    // Clock source: System Clock

    // Clock value: Timer1 Stopped

    // Mode: Normal top=0xFFFF

    // OC1A output: Discon.

    // OC1B output: Discon.

    // Noise Canceler: Off

    // Input Capture on Falling Edge

    // Timer1 Overflow Interrupt: Off

    // Input Capture Interrupt: Off

    // Compare A Match Interrupt: Off

    // Compare B Match Interrupt: Off

    TCCR1A=0x00;

    TCCR1B=0x00;

    TCNT1H=0x00;

    TCNT1L=0x00;

    ICR1H=0x00;

    ICR1L=0x00;

    OCR1AH=0x00;

    OCR1AL=0x00;

    OCR1BH=0x00;

    OCR1BL=0x00;
    // Timer/Counter 2 initialization

    // Clock source: System Clock

    // Clock value: Timer2 Stopped

    // Mode: Normal top=0xFF

    // OC2 output: Disconnected

    ASSR=0x00;

    TCCR2=0x00;

    TCNT2=0x00;

    OCR2=0x00;
    // External Interrupt(s) initialization

    // INT0: Off

    // INT1: Off

    // INT2: Off

    MCUCR=0x00;

    MCUCSR=0x00;
    // Timer(s)/Counter(s) Interrupt(s) initialization

    TIMSK=0x00;
    // USART initialization

    // USART disabled

    UCSRB=0x00;
    // Analog Comparator initialization

    // Analog Comparator: Off

    // Analog Comparator Input Capture by Timer/Counter 1: Off

    ACSR=0x80;

    SFIOR=0x00;
    // ADC initialization

    // ADC disabled

    ADCSRA=0x00;
    // SPI initialization

    // SPI disabled

    SPCR=0x00;
    // TWI initialization

    // TWI disabled

    TWCR=0x00;
    b=PINA;//записываем число из порта А

    A=A<<5;//сдвигаем влево на 5 разрядов

    b=b&A;//коньюнкция

    PORTC=b ;

    while (1)

    {

    // Place your code here

    PORTB.0 = 1;

    delay_ms(250);

    PORTB.0 = 0;

    delay_ms(250);
    }

    }

    1. Число, поступающее в порт В записать в память EEPROM. Из памяти это число передать в порт С, а EEPROM-адрес этого числа записать в порт А. Порт В сконфигурировать как вход, порты А и С – как выходы. Использовать МК ATmega32 с частотой кварца 4МГц.



    /*****************************************************

    This program was produced by the

    CodeWizardAVR V2.05.0 Professional

    Automatic Program Generator

    © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.

    http://www.hpinfotech.com
    Project :

    Version :

    Date : 01.07.2021

    Author :

    Company :

    Comments:

    Chip type : ATmega32

    Program type : Application

    AVR Core Clock frequency: 4,000000 MHz

    Memory model : Small

    External RAM size : 0

    Data Stack size : 512

    *****************************************************/
    #include

    #include .

    // Declare your global variables here
    void main(void)

    {

    // Declare your local variables here
    // Input/Output Ports initialization

    // Port A initialization

    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=Out

    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=0

    PORTA=0x00;

    DDRA=0x01;
    // Port B initialization

    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

    PORTB=0x00;

    DDRB=0x00;
    // Port C initialization

    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

    PORTC=0x00;

    DDRC=0x00;
    // Port D initialization

    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

    PORTD=0x00;

    DDRD=0x00;
    // Timer/Counter 0 initialization

    // Clock source: System Clock

    // Clock value: Timer 0 Stopped

    // Mode: Normal top=0xFF

    // OC0 output: Disconnected

    TCCR0=0x00;

    TCNT0=0x00;

    OCR0=0x00;
    // Timer/Counter 1 initialization

    // Clock source: System Clock

    // Clock value: Timer1 Stopped

    // Mode: Normal top=0xFFFF

    // OC1A output: Discon.

    // OC1B output: Discon.

    // Noise Canceler: Off

    // Input Capture on Falling Edge

    // Timer1 Overflow Interrupt: Off

    // Input Capture Interrupt: Off

    // Compare A Match Interrupt: Off

    // Compare B Match Interrupt: Off

    TCCR1A=0x00;

    TCCR1B=0x00;

    TCNT1H=0x00;

    TCNT1L=0x00;

    ICR1H=0x00;

    ICR1L=0x00;

    OCR1AH=0x00;

    OCR1AL=0x00;

    OCR1BH=0x00;

    OCR1BL=0x00;
    // Timer/Counter 2 initialization

    // Clock source: System Clock

    // Clock value: Timer2 Stopped

    // Mode: Normal top=0xFF

    // OC2 output: Disconnected

    ASSR=0x00;

    TCCR2=0x00;

    TCNT2=0x00;

    OCR2=0x00;
    // External Interrupt(s) initialization

    // INT0: Off

    // INT1: Off

    // INT2: Off

    MCUCR=0x00;

    MCUCSR=0x00;
    // Timer(s)/Counter(s) Interrupt(s) initialization

    TIMSK=0x00;
    // USART initialization

    // USART disabled

    UCSRB=0x00;
    // Analog Comparator initialization

    // Analog Comparator: Off

    // Analog Comparator Input Capture by Timer/Counter 1: Off

    ACSR=0x80;

    SFIOR=0x00;
    // ADC initialization

    // ADC disabled

    ADCSRA=0x00;
    // SPI initialization

    // SPI disabled

    SPCR=0x00;
    // TWI initialization

    // TWI disabled

    TWCR=0x00;
    b=PINB;//записываем число из порта А

    ptr_to_eeprom=&b;//запись в EEPROM

    i=*ptr_to_eeprom; //Чтение из EEPROM

    PORTC=i;//передача в порт
    A=A<<5;//сдвигаем влево на 5 разрядов

    b=b&A;//коньюнкция

    PORTC=b

    while (1)

    {

    /;
    }

    }


    написать администратору сайта