Давайте делиться св...
 
Уведомления
Очистить все

[Закреплено] Давайте делиться своими исходниками!

3 Посты
2 Пользователи
0 Likes
10.9 Тыс. Просмотры
Radioded
(@sergey)
Estimable Member Admin
Присоединился: 5 лет назад
Сообщения: 184
Topic starter  

Уважаемые форумчане, давайте делать благие дела, а именно делиться своими исходниками. Не важно на чем написан код, будь то Си или ассемблер - возможно они кому-то пригодятся. Очень многие радиолюбители будут благодарны. Как говориться, с миру по нитке!


Цитата
skiff
(@skiff)
New Member
Присоединился: 15 лет назад
Сообщения: 4
 

Доброго времени суток!есть маленький кодик на Си, написанный в среде IAR System 5.11full. Может кому пригодиться...
Код может применяться, когда в устройстве на микроконтроллере нужно сообщить о какой-либо завершенной работе (например жидкость нагрета до нужной температуры!)...

#include <ioavr.h> /* библиотека описания микроконтроллеров AVR */
#include <intrinsics.h> /* Из этой библиотеки используется */
/* функция __delay_cycles(float number) */
void signal(void)
{/* Функция формирования прерывистого сигнала зумера */
unsigned int i=0;

while(1)
{
PORTB=1; /* Зажигаем светодиод */
PORTD=1;
__delay_cycles(400); /* Задержка 0.4мс или 400мкс */
PORTD=0;
__delay_cycles(400);

i++; /* Пока переменная i не равна 1500 зумер звучит */
if(i==1500) /* Если переменная i равна 1500, то выполняется тело */
/* Оператора условия if{ } (Значение 1500 можно менять на */
/* свое усмотрение) */
{
PORTB=0; /* Гасим светодиод */
i=0; /* Обнуляем переменную */
__delay_cycles(800000); /* в течении 800мс зумер молчит (Значение 800000 можно менять на */
/* свое усмотрение) */
}
}
}

void main(void)
{/* Основная функция */
DDRD=1; /* Разряд PD0 на вывод (подключен зумер) */
DDRB=1; /* Разряд PВ0 на вывод */
signal(); /* Переходим на функцию сигнал */
}

Ваше мнение засчитывается... ;)


ОтветитьЦитата
skiff
(@skiff)
New Member
Присоединился: 15 лет назад
Сообщения: 4
 

Есть еще один исходничик, так сказать для разминочки написал! Для ЖКИ индикатора WH1602D-YYB-CTK. Организация меню посредством конструкции switch. Среда CodeVision AVR 1.25.3.

#include <Mega8.h>
#asm
.equ __lcd_port=0x18 /* Порт В */
#endasm
#include <lcd.h>
#include <delay.h>
#define sig 500
char tmp=0;

void menu(void)
{
while(1)
{

  • /* организация работы кнопок. */
    if(PINC.0==0){if(tmp>=3){}else{tmp++;}} /* Если tmp >= 3, не увеличивать ее значение.*/
    if(PINC.1==0){if(tmp==0){}else{tmp--;}} /* Если tmp = 0, не уменьшать ее значение*/

  • switch (tmp)
    {
    case 0:
    #pragma rl+ /* Указываем, что надо выводить русские буквы */
  • delay_ms(sig);
    lcd_clear();
    lcd_gotoxy(6,0);
    lcd_putsf("Меню 1");break;

  • case 1:
  • delay_ms(sig);
    lcd_clear();
    lcd_gotoxy(6,0);
    lcd_putsf("Меню 2");break;

  • case 2:
  • delay_ms(sig);
    lcd_clear();
    lcd_gotoxy(6,0);
    lcd_putsf("Меню 3");break;

  • case 3:
  • delay_ms(sig);
    lcd_clear();
    lcd_gotoxy(6,0);
    lcd_putsf("Меню 4");
    tmp=3;break;

  • #pragma rl-
    }
    }
    }

    void main(void)
    {

  • lcd_init(16); /* инициализация индикатора на 2 строки 16 символов */
    lcd_clear();
    DDRC=0x00; /* Порт С на ввод */
    PORTC=0x03; /* Подключаем подтягивающие резисторы */
    menu();

  • }


    ОтветитьЦитата