Jump to content

    

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

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

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

RemoconCtrl.rar

Share this post


Link to post
Share on other sites

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

 

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

 

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

 

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

ds1820.zip

HD44780.zip

Share this post


Link to post
Share on other sites

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

 

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

 

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

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

 

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

TextLCD_2.zip

Edited by Screw

Share this post


Link to post
Share on other sites

Проект на 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

Share this post


Link to post
Share on other sites

Поделюсь своим кодом на Ассме для организации меню на буквенно цифровом дисплее 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

Edited by Шалапут:-)

Share this post


Link to post
Share on other sites

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

Bin32BCD8.rar

Share this post


Link to post
Share on other sites

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

#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

Share this post


Link to post
Share on other sites
очень удобные (как мне кажется) макросы.

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

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

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

Share this post


Link to post
Share on other sites
(*
   Вычисление дня недели в приложениях автоматического вычисления
   дня недели в датах от 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.

Share this post


Link to post
Share on other sites

Сергей Борщ

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

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

Edited by umup

Share this post


Link to post
Share on other sites
Сергей Борщ

#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

Share this post


Link to post
Share on other sites

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

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

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

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

post-17095-1172053240_thumb.jpg

Share this post


Link to post
Share on other sites

Драсте всем!

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

Shnyaga.txt

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now