Перейти к содержанию

    

Исходники программ и библиотек

А вот приемник ИК пульта от Самсунга (кодировка типа NEC, но со своими особенностями).

Работает на АТтини2313, у меня - 11.059 мгц кварц. Собственно, по сорсам все понятно должно быть.

RemoconCtrl.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Свой вариант библиотек LCD44780 и DS1820.

 

Очень понравился по стилю написания вариант работы с HD44780 от protoss, но как мне кажется он не полный. Выкладываю свой. Думаю уважаемый protoss им не воспользуется, а вот начинающие - возможно. Также вариант библиотеки для работы с DS18x20.

 

Возможности LCD44780. Есть вторичный вывод. Вывод символа в Win кодировке, прямая адресация курсора, сплитер и др. Поддерживаются стандартные п/п printf и outs вместе с форматированием. Форматирование расширено что позваляет легко делать меню.

 

Возможности DS18x20. Позволяет подключать несколько датчиков DS1820/18b20/18s20 в любом сочетании. Позволяет динамически определять их колличество и подключать новые. Позволяет работать с ними по 2-ух проводной шине.

ds1820.zip

HD44780.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте!

 

Я вот тут решил зарегистрироваться и кое чем поделиться, ибо искал это кое что.... долго ;)

 

А именно - исходник инициализации и работы с LCD МТ-16s2 фирмы МЭЛТ по 4-х проводному интерфейсу. Написано под WinAvr, но я за 5 минут переделал под CVAVR.

Выкладываю оригинал (надеюсь автор не будет против).

 

Вся бякость этого LCD состоит в том, что он не совсем аналог HD44780 ;)

TextLCD_2.zip

Изменено пользователем Screw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проект на Pic

MASTER-Pic16f628

Slave - Pic12f629

 

Monitor 2 Wire 7Adr Led

 

Устройство состоит из блока графической индикации 5х8 точек с формирователем 2 проводной линии связи с адресными устройствами.

Питание адресников осуществляется по тойже линии связи.

Каждый адресник имеет 2 входа замыкаемые на массу.

Блок индикации обслуживает 8 адресных устройств.

Индикация, наличие адресного устройство на линии, и о замыкании у адресного устройства входных линий на землю.

Адресники могут содержать фиксированный адрес 0-7,

или вариант адресника с 3 перемычками задающий адрес устройства.

Блок индикации является MASTEROM на линиа а адресники SLAVE.

Начало обмена- команда сброс для всех адресников, далее пакет из 4 байт.

1 -адрес устройства

2 -код команды (чтение или запись из адресника)

3 -байт данттых

4 -CRC8 контрольная сумма.

 

 

Мастер посылает пакет адреснику и читает ответ с линии и проверяя CRC пакета, если CRC не совпадает, MASTER повторяет посылку ещё 2 раза.

Если, нет то считается что адресника нет.

 

 

Весь проект с схемами, фотками и файлами -ASM,HEX

 

Мажет пригодится кому нибудь.

aralgen@mail.ru

arxiv.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поделюсь своим кодом на Ассме для организации меню на буквенно цифровом дисплее HD4478 16х2.. В программе реализована отправка строк с флеш памяти. При нажатии одной из 4 кнопок происходит прерывание Int_1, затем его обработка (со звуковым сигналом). Куда подключать кнопки и дисплей, ясно из программы, динамик-через усилительный транзистор

Расчитано для работы на 4 МГц кварце. Для приминения на других частотах кварца нужно просто поменять значение, заносимое в рег r20

DELAY20MS:

wdr; sbros storozhevogo timera (mozhno zapreshat' ego raboty)

LDI R20,110; Сюда (20=1МГц, 40=2 и.т.д)

d20:

dec r20

...

если что неясно, пишите kadrum@narod.ru или ICQ#: 191-851-131

:smile3046:

 

код для HD 4478 здесь

menu_HD4478.zip

Изменено пользователем Шалапут:-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может кому будет полезно очень быстрое преобразование двоичного ( 4-х байтного ) числа в двоично-десятичное число . Собственный алгоритм . Взято из рабочей программы ; некогда было окультуривать. Вполне можно перенести на Си . Очень удобно когда есть неоходимость , например , вывода на экран каких либо значений , которые считаются внутри в двоичном виде .

Bin32BCD8.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

на телесисах пробегала сылка на коллекцию исходников: http://faq.embedders.org/_examples_code/

и документации: http://lord-n.narod.ru/walla.html#faqembedders

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Часто появляются вопросы об удобном доступе к ножкам порта. Несколько раз выкладывал в разных темах очень удобные (как мне кажется) макросы. Решил выложить здесь наиболее свежую версию, чтобы потом долго не искать. Пользоваться ими так:

#define LED1    PORTC,2,H   // output, active high (led from PC2 to GND)
#define LED2    PORTD,3,L   // output, active low (led from Vcc to PD3)
#define KEY1    PINB,5,L    // input, active low (key from PB5 to GND, pull-up resistor)
#define KEY2    PINC,7,H    // input, active high (key from Vcc to PC7, pull-down resistor)

#include "ascold.h"
unsigned char Key1Status;
unsigned char Key2Status;
void main() {
    Key1Status = signal(KEY1);
    Key2Status = signal(KEY2);
    for(;;) {
        cpl(LED1);          // toggle LED1
        if(signal(KEY1))    // if KEY1 pressed, turn on LED2
            on(LED2);
        else                // otherwice turn off LED2
            off(LED2);
    }
}}

Если в результате переразводки вывод поменялся, достаточно изменить лишь одну строчку #define

 

Я использую с компилятором IAR для процессоров AVR, MSP430, AT91SAM7, LPC2xxx, ADuC70xx. Но они должны работать и с любым другим компиляторм.

ascold.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
очень удобные (как мне кажется) макросы.

Я тоже ими пользуюсь очень давно :-)

Только signal() переименовал сразу же в bit_active() (ну и все остальные в bit_on/bit_off для однообразия).

После какого-то давнего залёта со своей переменной с именем errno в борландовском С - не рискую применять имена, могущие пересечься с чем-то "очень стандартным".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
(*
   Вычисление дня недели в приложениях автоматического вычисления
   дня недели в датах от 1996 года и старше.

   Copyright (C) Sergei Frolov, 1998.   v1.0  Jan, 4, 1998.

   Программа ориентирована на применение в приложениях, написанных
   на языке ассемблера без использования аппаратного умножения/деления
   и операций с плавающей запятой.
*)

program denned;
const
  YEARS  : array[0.. 3] of byte = (0, 2, 3, 4);
  MONTHS : array[1..12] of byte = (0, 3, 3, 6, 1, 4, 6, 2, 5, 0, 3, 5);
  DAYOFWEEKS  : array[0..6] of string =
    ('Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг',
     'Пятница', 'Суббота');
var
  a, b, c, d, e, f, tmp : byte;
  day, month, year      : word;

begin
  repeat
    write('Число XX -> ');    readln(day);
    if day = 0 then break; { выход }
    write('Месяц XX -> ');    readln(month);
    write('Год XXXX -> ');    readln(year);
    tmp := year - 1996;
    a := tmp and 3;
    b := (tmp shr 2) + (tmp and $FC);
    c := MONTHS[month];
    if (a = 0) and (month > 2) then inc(c);
    a := YEARS[a];
    e := (a + b + c + day) mod 7;
    writeln('Результат: ', DAYOFWEEKS[e]);    writeln;
  until false;
end.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сергей Борщ

#define LED1 PORTC,2,H // output, active high (led from PC2 to GND)

Интересно, как у вас работают программы с комментариями // в #define, или компилятор это отлавливает ?

Изменено пользователем umup

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Сергей Борщ

#define LED1 PORTC,2,H // output, active high (led from PC2 to GND)

Интересно, как у вас работают программы с комментариями // в #define, или компилятор это отлавливает ?

IAR не жалуется. GCC (WinAVR) тоже. Согласно http://gcc.gnu.org/onlinedocs/cpp/Initial-...tial-processing комментарии заменяются пробелами до обработки #define

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 svlad - interrupt.h и io.h надо поставить винавр тогда они появяться.

Если кому интересно могу выложить декодировку манчестера по INT0 для 8-й меги.

не уж то ни у кого нет WinAVR? :)

В чем вопрос-то состоял? www.google.ru, искать по ключевому слову WinAVR. Хотя это первое, что нужно делать перед писанием в конференции.

post-17095-1172053240_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Драсте всем!

В прикреплённом файле - ф-ция и интерупт с помощъю которых я ловил манчестер для эм-мариновских карт - у них манчестерская кодировка данных + хитрый протокол передачи,кому надо - может пообкусывать чё не надо.

Shnyaga.txt

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти