
- •Основные понятия и определения мпт
- •Основные характеристики и типы мп
- •Общие принципы построения мпс
- •Основные операции, выполняемые в мпс с 3-мя шинами
- •Прямой доступ к памяти
- •Микропроцессор кр580вм80а (вм80)
- •Внутренняя структура
- •Программная модель мпс
- •Программная модель памяти
- •Программная модель портов ввода-вывода
- •Анализ работы мп вм80
- •Машинные такты и циклы
- •Слово состояния процессора
- •Временные диаграммы сигналов мп
- •Режимы работы мп
- •Построение отдельных модулей мпс
- •Основные параметры мс пзу
- •Принцип построения внутренней памяти мпс
- •Построение модуля пзу
- •Построение модуля озу
- •Построение двухстраничного модуля памяти
- •Модуль ввода-вывода
- •Реализация модуля ввода-вывода при раздельном поле адресов памяти и портов
- •Схемотехника модуля ввода-вывода
- •Порт ввода:
- •Построение модуля прерывания.
- •Микропроцессор вм85.
- •Система прерываний мп вм85.
- •Ввод и вывод последовательных данных.
- •Построение модуля центрального процессора мп вм85.
- •Система команд мп.
- •Язык Ассемблера.
- •Псевдокоманды Ассемблера.
- •Методика разработки программного обеспечения.
- •Процедура обработки данных.
- •Виды программного обеспечения ( по ) мпс.
- •Подпрограммы как средства модульного программирования.
- •Иерархическая организация подпрограмм.
- •Применение таблиц.
- •Программирование цифровых вычислительных устройств.
- •Арифмитические операции с целыми числами без знака.
- •Быстрое умножение и деление двоичных чисел.
- •Сложение десятичных чисел
- •Преобразование двоичных чисел в десятичные и наоборот.
- •Операции с целыми двоичными числами со знаком !
- •Дробные числа.
- •Арифметические операции с числами с пз
- •Бис параллельного интерфейса
- •Бис последовательного интерфейса кр580вв51а
- •Внутренняя структура бис кр580вв51а
- •Программирование бис вв51а
- •Формат инструкции асинхронного режима работы
- •Формат инструкции синхронного режима работы
- •Формат инструкции команды
- •Формат слова состояния
- •Бис программируемого таймера кр580ви53 (i8253)
- •Программирование таймера
- •Применение мп в системах управления и контроля
- •Работа мк с дискретными сигналами
- •Борьба с дребезгом контактов
- •Формирование управляющих сигналов
- •Методы управления отдельными линиями порта ввода
- •Формирование временных задержек
- •Управление дискретными нагрузками от мпс
- •Сопряжение ацп с мпс
- •Интерфейс быстрых ацп с мпс
- •Интерфейс с 10-разрядным ацп
- •Интерфейс медленных ацп с мпс
- •Сопряжение цап с мпс
- •Устройство сбора и распределения данных
- •Организация связи мпс с оператором.
- •Управление индикаторами линейного дисплея.
- •Программа управления дисплеем с использованием таймера.
- •Интерфейс дисплея с клавиатурой.
- •Программируемый контроллер кр580вв79 с клавиатурой и дисплеем.
- •Программирование кр580вв79.
- •Слово состояние контроллера.
- •Методы ввода данных с клавиатуры.
- •Общая характеристика языков программирования.
- •Структура простейшей программы на языке Си.
- •Представление информации в языке Си.
- •Типы данных.
- •Переменные.
- •Строковые переменные и константы.
- •Элементарный ввод вывод в Си.
- •Операция и выражения в языке Си.
- •Преобразование типов в выражении.
- •Операции управления вычислительным процессом.
- •Функции языка Си.
- •Библиотечные функции.
- •Функции для работы с портами ввода вывода.
- •Видимость переменных.
- •Классы хранения переменных.
- •Операции присвоения.
- •Условная операция.
- •Операция sizeof (определение размера).
- •Указатели.
- •Массивы и функции
- •Операции со строками
- •Массивы строк.
- •Массивы – указатели.
- •Типы, определяемые пользователем.
- •Операции с файлами.
- •Обмен инф-ции с файлами.
- •Часть 3 Разработать мк для управления насосом напорной башни.
- •Интерфейс мпс.
- •Организация интерфейсов.
- •Структура интерфейса:
- •Организация линий интерфейса.
- •Передача по однонаправленным линиям связи.
- •Передача по двухпроводной линии.
- •Интерфейс ирпр ( bs – 4421 )
- •Пример подключения ппа кр580вв55а.
- •Драйверы обмена оирпр.
- •Последовательный интерфейс.
- •Драйверы для работы интерфейса.
- •Аппаратное квитирование передачи данных.
- •Интерфейс коп (канал общего пользования).
- •Команды интерфейса коп.
- •Транспортная передача данных.
- •Сопряжение устройств управления и контроля с пк.
- •Интерфейсная часть ус.
- •Подключение устройств к порту принтера.
- •Подключение устройств сопряжения к компьютеру через последовательный порт.
- •Интерфейсная шина i2c.
Операции с файлами.
Файл – порция данных, имеющая уникальное имя.
При работе с файлами используют понятие “ потока ”. Т.е. язык CI рассматривает данные в виде потока, поступающ. Последовательно друг за другом.
Буфер – участок памяти, кот. использ. при обмене данные между файлами и программой.
Stdin – входной поток ( с клавиатуры )
Stdout – стандартный поток вывода ( дисплей )
Stderr – станд. Поток сообщения об ошибках ( дисплей )
Stdprn – вывод на принтер
Stdaux – станд. поток вспомогательного устройства.
При операции с файлами использ. понятие “ файловая структура ”, FILE. В ней несколько полей кот. определяют все действия с файлами.
Чтобы использовать файлов. Структуру на неё надо создать.
FILE * имя_указателя;
FILE * fp;
FILE * fin, * fout;
Fopen () – открытие файла в < stdio.h >
Int fopen ( “ имя_файла ”,” режим_доступа ” )
R – файл только для чтения
W – для записи ( все имеющиеся данные стираются )
A – для добавления данных
R+} для чтения и для записи
W+}
T – текстовый режим доступа к файлу
B – двоичный режим доступа к файлу
Ф-ция fopen () возвращает значение: если произошла ошибка, то возвращает null – файл не открыт
FILE * fp;
Fp = fopen ( “ Мой_файл ”, “ W ” );
Fp = fopen ( “ a: \ myfiledat ”, “ W ” );
If (( fp = fopen ( “ myfile ”, “ W ”)) = NUUL )
{
puts ( “ Не возможно открыть файл ” );
return 1;
}
Закрытие файла осуществляется ф-цией:
Fclose ( имя_указателя );
FILE *fp;
….
Fclose ( fp );
Fcloseall () – закрывает все открытые файлы
При чтении или записи в файл использ. спец. указатель чтение_записи.
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
+ |
+ |
+ |
Начало Конец
Указатель определяет номер байта при чтении или записи, при достижении конца файла возвращается символ EOF, поэтому программа должна контролировать появление этого символа. При записи система автоматически определяет конец файла.
Обмен инф-ции с файлами.
Приём инф-ции с файла – чтение ( ввод ), передача инф-ции в файл – запись (вывод ).Все операции чтение – записи делят. на 4 группы.
1. Операции посимвольного ввода – вывода.
2. построеового ввода – вывода.
3. Форматированного ввода – вывода.
4. Блокового ввода – вывода.
производят запись или приём одного символа.
Fgetc () – чтение из файла
Fputc () – запись в файл
Int fputc ( символ, указатель_на_файл );
Эта ф-ция возвращает код символа, а если ошибка – EOF
Пример:
# include < stdio.h >
main ()
{
FILE *fp;
Char letter;
If (( fp = fopen ( “ myfile ”,” W ” )) == NULL );
{
puts ( “ Невозможно открыть файл ” );
return 1;
}
do
}
letter = getchar ();
}
fputc ( letter, fp );
while ( letter ! = ‘ \ n ’ );
fclose ( fp );
return 0;
}
int fgetc ( указатель_на_файл );
ф-ция извлекает из файла символ и возвращает его, если ошибка возвращает – EOF
Пример:
# include < stdio.h >
main ()
{
FILE *fp;
Char better;
If (( fp = fopen ( “ myfilo ”, “ r ” ) / == NULL )
{
puts ( “ Невозможно открыть файл ” );
return 1;
}
while ( better = fgetc ( fp ) ! = EOF )
printf ( “ % c ”, better);
fclose ( fp );
return 0;
}
int feof ( указатель_на_файл )
возвращает не 0, если конец файла достигнут и 0 в противном случае.
Fputc.cpp
A: \ fputc.cpp
Пример: копирование
# include < stdio.h >
main ()
{
File *in, *out;
If (( in = fopen ( “ fputc.cpp ”, “ r ” )) ==NULL )
{
puts ( “ Невозможно открыть файл fputc.cpp” );
return 1;
}
if // out = fopen ( “ a: \ fputc.cpp ” )) = NULL )
{
puts ( “ Невозможно открыть файл a: \ fputc.cpp ” );
return 1;
}
while ( ! feot ( in ))
fputc ( fgetc ( in ), out );
fclose ( out );
return 0;
}
2 .fputs () – запись в файл строки
fgets () – чтение из файла строки.
Int fputs ( строка указатель_на_файл );
Записывает в файл строку до тех пор, пока не будет ‘ \ o ’ ( сам этот символ в строку не вносится).
Если при записи был достигнут конец файла, то эта ф-ция возвращает NULL.
Пример: / *fputs.cpp * /
# include < stdio.h >
# include < string.h >
main ()
{
FILE *fp;
Char name [ 40 ];
If (( = fopen ( “ myfile ”, ” W ” )) == NUUL )
{
puts ( “ Невозможно открыть файл ” );
return 1;
}
printf ( “ Введите имя ” )
gets ( name);
while ( strlen ( name ) > 0 )
{
fputs ( name, fp );
fputs ( “ \ n ”, fp );
printf ( “ Введите имя : ” );
gets ( name );
}
/ *
для выхода – нажать Enter * /
fclose ( fp);
return 0;
}
int fgets ( строка, длина_строки, указатель_на_файл );
Длина_строки – число символов, кот. надо считать
Ф-ция возвращает символы строки и возвращает NULL в случае, когда достигнут конец файла или прочитано указанное число символов.
Пример: / *fgets.cpp * /
# include < stdio.h >
main ()
{
FILE * fp;
Char name [ 40 ];
If (( fp = fopen ( “ myfilo ”, ” r ” )) ==NUUL )
{
puts ( “ Невозможно открыть файл ” );
return 1;
}
while ( name, 40, fp ) ==NUUL )
gets ( name );
fclose ( fp );
return 0;
}
3 Ф-ции форматированного ввода-вывода;
fprintf () – ф-ция формат. записи
аысфта () – ф-ция формат. чтения
ште азкштеа ( указатель_но_файл, форматная строка, список_аргументов )
форматн. строка – текст и идентификаторы
В случае неуспешной записи в файл возвращает EOF
Int fscanf ( указатель_на_файл, форматная_строка, список_аргументов )
Пример: / * fprintf.cpp * /
# include < stdio.h >
# include < string.h >
main ()
{
FILE * fp;
Char filename [ 15 ];
Char product [ 20 ];
Float cost;
Int quantity;
Printf ( “ Введите имя файла, которой хотите создать: ” );
Gets ( name );
If (( fp = fopen ( name, “ W ” )) ==NUUL ))
{
printf ( “ Невозм. Откр. Файл %s \ n”, name );
return 1;
}
printf ( “ Введите назв. товара ” );
gets ( product );
while ( strlen ( product ) > 0 )
{
printf ( “ Введите стоимость товара: ” );
fflush ( stain );
scanf ( “ % f ”, & cost );
printf ( “ Введите кол-во товара: ” );
fflust ( stdin );
scanf ( “ % d ”, & quantity );
fprintf ( fp, “ % s % f % d “, product, cost, quantity );
printf ( “ Введите название товара: ” );
fflust ( stdin );
gets ( product );
}
fclose ( fp );
return 0;
}
/ * fscant.cpp * /
# include < stdio.h >
main ()
{
FILE * fp;
Char name [ 15 ];
Char product [ 40 ];
Float cost;
Int quantity;
Printf ( “ Введите имя файла: ” );
Gets ( name );
If (( fp = fopen ( name, “ r ” )) ==NUUL )
{
printf ( “ Невозм. открыт. файла % s \ n ”, name );
return 1;
}
while ( fscanf ( fp, “ % s % f % d ”, product, & cost, & quantity )=(EOF)
{
printf ( “ Название товара: % s \ n ” , product );
printf ( “ Стоимость % 2 f \ n ”, cost );
printf ( “ Кол-во % d \ n ”, quantity );
}
fclose ( fp );
return 0;
}
fscanf () не позволяет читать строки с пробелами. При вводе или выводе файла в формате, несоотв. спецификатору, эти ф-ции выдают ошибки.