Суббота, Декабрь 07, 2019

Функция _delay_ms и _delay_us AVR C

//поиздеваемся над звуком,применяя библиотечную функцию _delay_ms и _delay_us
#define F_CPU 4000000UL             //обязательно,т.к. это значение используется функцией _delay_... как параметр
#include <avr/io.h>
#include <avr/pgmspace.h>
#include "util/delay.h"             //обязательно откройте этот файл и изучите его
//Фукции _delay_ms_us нельзя передать переменную,а только константу,поэтому схитрим и напишим свою функцию.
void delay_us(unsigned int us)
{
    for(unsigned int i=0;i<us;i++)//Цикл us-раз вызывает _delay_us(1)-1-на микросекунда
    {
        _delay_us(1);     
    }
}
void main(void)
{
    DDRB=0x08;
    PORTB=0x08;
    ACSR=0x80;
    unsigned int us=600;
    while(1)
    {
        PORTB^=(1<<PB3);     
        delay_us(us);
        us--;
        if(!us)
            us=100;
    }
}
//Только нужно нажать Alt+F7 и найти там Toolchain/Optimization и поставить Os



 

НАЗАД               Assembler AVR               Assembler PIC                 ДАЛЕЕ


Back to Top