Читаем Микроконтроллеры AVR: от простого к сложному полностью

#include

#include

#include

char SendByte(char ByteOut)

{

  int i.j; long li;

  unsigned char ByteOutCpy, Byteln = 0;

  ByteOutCpy = ByteOut;

  for (i=0; i

  {

    Byteln = (Byteln <<1) + ((inportb(0x379)&0x80)==0);

    outportb(0x37A,0x021(((128&Byte0utCpy)==0)));

    for (li=0; li<20001; li++);

    outportb(0x37A,0x001(((12B&Byte0utCpy)==0)));

    for (li=0; li<20001; li++);

    outportb(0x37A,0x021(((128&Byte0utCpy)==0)));

    ByteOutCpy = ByteOutCpy <<1;

    for (li=0; 1К20001; li++);

  }

  return Byteln;

}

void KeyOn(void)

{

  int i;

  long li;

  for (i=0; i<64; i++)

  {

    outportb(0x37A,0x00);

    for (li=0; li<200001; li++);

    outportb(0x37A.0x03);

    for (li=0; li<200001; li++);

  }

  delay(100);

}

void KeyOff(void)

{

  int i;

  long li;

  for (i=0; i<128; i++)

  {

    outportb(0x37A,0x0B);

    for (li=0; li<20001: li++):

    outportb(0x37A.0x08);

    for (li=0; 1K20001: li++);

  }

}

void Riain()

{

  Key0n(); // Включение ключа

  printf("%02X",SendByte(0)); // Отправка 8 байтов.

  printf("%02X",SendByte(1))

  printf("%02X",SendByte(2));

  printf("%02X",SendByte(3));

  printf("%02X",SendByte(4));

  printf("%02X",SendByte(5));

  printf("%02X",SendByte(6));

  printf("%02X",SendByte(7));

  printf("\n");

  printf(''%02X",SendByte(7)); // Отправка следующих 8 байтов и одновременное

  printf(”%02X",SendByte(6)); // получение байтов, отправленных раньше

  printf("%02X",SendByte(5));

  printf("%02X",SendByte(4));

  printf("%02X",SendByte(3));

  printf("%02X",SendByte(2));

  printf("%02X",SendByte(1));

  printf(:%02X".SendByte(0)):

  printf("\n");

  printf("%02Х''.SendByte(0xF0)); // Отправка следующих 8 байтов и одновременное

  ргintf("%02Х",SendByte(0xF1)); // получение байтов, отправленных раньше

  printf("%02Х",SendByte(0xF2));

  printf("%02X",SendByte(0xF3));

  printf("%02X",SendByte(0xF4));

  printf("%02X",SendByte(0xF5));

  printf("%02X",SendByte(0xF6));

  printf("%02X", SendByte(0xF7));

  printf("\n");

  printf("\n');

  KeyOff(); // Отключение питания ключа

Автор: Сафонников В. В. (E-mail: svv@ufanet.ru).

<p>6.11. Кодовый замок</p>

1. Назначение и описание устройства

Схема предназначена для работы в качестве электронного кодового замка, музыкального звонка и устройства регистрации.

Секретный код состоит из 5 десятичных цифр и набирается на 11-кнопочной клавиатуре; дополнительная кнопка используется как сброс в случае, если была нажата неверная клавиша. Предусмотрена возможность ввода нового кода с этой же клавиатуры.

При нажатии на кнопку звонка микроконтроллер проигрывает мелодию или выдает звуковой сигнал, напоминающий звонок телефонного аппарата. Первый вариант выбирается в случае, если первая цифра секретного кода четная, а второй — если нечетная.

При проигрывании мелодии останавливается вывод данных во внешний компьютер, поэтому, если шел прием данных и был нажат звонок, потребуется дополнительное время на исправление возникшей ошибки. При проигрывании простого сигнала такого не происходит. Кроме того, для правильного воспроизведения мелодии желательно использовать внешний кварц вместо внутреннего RC-генератора микросхемы.

Перейти на страницу:

Все книги серии Библиотека инженера

Похожие книги

Искусство схемотехники. Том 3 (Изд.4-е)
Искусство схемотехники. Том 3 (Изд.4-е)

Широко известная читателю по предыдущим изданиям монография известных американских специалистов посвящена быстро развивающимся областям электроники. В ней приведены наиболее интересные технические решения, а также анализируются ошибки разработчиков аппаратуры: внимание читателя сосредотачивается на тонких аспектах проектирования и применения электронных схем. На русском языке издается в трех томах. Том 3 содержит сведения о микропроцессорах, радиотехнических схемах, методах измерения и обработки сигналов, принципах конструирования аппаратуры и проектирования маломощных устройств, а также обширные приложения. Для специалистов в области электроники, автоматики, вычислительной техники, а также студентов соответствующих специальностей вузов и техникумов.

Пауль Хоровиц , Уинфилд Хилл

Техника / Радиоэлектроника