90928

Программирование клавиатуры и организация ввода-вывода

Лабораторная работа

Информатика, кибернетика и программирование

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

Русский

2015-07-10

349.5 KB

0 чел.

Лабораторная работа № 1. Программирование клавиатуры и организация ввода-вывода

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

  1.  Задание к лабораторной работе

1) Изучите схему подключения клавиатуры, изображенную на лицевой панели стенда. Здесь в виде контакта изображена кнопка клавиатуры. Обратите внимание, что одна клемма кнопки клавиатуры предназначена для ввода, а вторая для вывода сигнала.  

2) Предполагая, что на третий вход канала порта RD3 подключается клавиша «1», а  выход клавиши «1» подключается для инициализации к выходному биту RD7 контроллера, разработайте программу зажигания светодиода при нажатии клавиши «1». Светодиод подключите к  биту RC7 (см. программа 1.1). Он остается включенным до тех пор, пока, нажата клавиша клавиатуры.

Программа 1.1

include <p16F877.inc>

;Начало программы

 org  00h ;выполнение программы начинается с 0-го адреса

nop   ;nop - пустая команда, должна быть первой, так

nop ;как она необходима для работы отладчика

nop

 org 05h ;начало кода с адреса 5 в шестнадцатеричном (h)

  ;формате

START

CLRF   STATUS

BSF  STATUS,RP0 ;назначить 1-ый банк

 MOVLW  B'00001000' ;3-ий разряд порта Д

MOVWF  TRISD  ;вход, а остальные выходы

CLRF   TRISC  ;порт С выход

 CLRF   STATUS ;назначить 0-ой банк

CLRF   PORTD  ;очистить порт Д и С

CLRF   PORTC

MOVLW  B'10000000' ;подать 1 на 7-ой выход

MOVWF  PORTD  ;порта Д

LOOP

CLRF  PORTC  ;очистить порт С

LOOP1

BTFSS   PORTD, 3 ;когда 1 появится на 3-ем

GOTO   LOOP  ;входе пропустить эту команду

MOVLW  B'10000000' ;зажечь 7-ой светодиод в

MOVWF  PORTC  ;порте С

GOTO  LOOP1  ;повторить опрос клавиши до

END   ;нового перезапуска

4) Переработайте программу 1.1 так, что клавишей «1» светодиод включается и остается включенным, а при нажатии клавиши «5» отключается до нового включения ( программа 1.2).

5) Запрограммируйте четыре светодиода на включении при нажатии клавиш с 1-го по 3-ий соответствующих номеров светодиода (программа 1.3) и отключении при нажатии клавиш с 5-ой по 7-ую.

  1.  Изучите временные диаграммы команд CALL, RETLW.

7) Изучите программу 1.4 задержки за счет организации циклов, определите, при каком числе, записанном в регистрах KOL,ZAD,ZAD1, будет максимальная и минимальная задержка.

Программа 1.4

include <p16F877.inc>

;Описание регистров ОЗУ  

 KOL EQU H'0020'  ;

 ZAD EQU H'0021'  ;

 ZAD1 EQU H'0022' ;

;Начало программы

 org     0 ;выполнение программы начинается с 0-го адреса

nop   ;nop - пустая команда, должна быть первой, так

nop ;как она необходима для работы отладчика

nop

 org     05h

START

 CLRF  STATUS   

 BSF  STATUS, RP0 ; Выбираем банк 1

 CLRF  TRISC  ;инициализировать порт С,как выход

 CLRF     STATUS  ; выбрать 0 банк       

 MOVLW H'FF'  ; количество повторений мигания

 MOVWF KOL  ;

LOOP

 CLRF  PORTC ; очистить порт С-потушить светодиоды

 CALL  LOOP1 ; вызвать п.п. задержки

 MOVLW B'11111111' ;

 MOVWF PORTC ; зажечь светодиоды

 CALL  LOOP1 ; задержка

 DECFSZ KOL,F ;уменьшить количество повторений цикла

     ;если 0, то пропустить следующую

 GOTO  LOOP ;если не ноль, то повторить цикл

 GOTO $  ;закончить до нового перезапуска

 END

;подпрограмма задержки

LOOP1  

 MOVLW B'11111111' ;

 MOVWF ZAD ; установить время задержки в ячейку ZAD

 MOVLW B'11111111' ;

 MOVWF ZAD1 ; установить время задержки в ячейку ZAD1

LOOP2

 NOP

LOOP3

 DECFSZ ZAD1,F;

 GOTO LOOP3;

 DECFSZ ZAD,F ;

 GOTO LOOP2;

 RETURN  ;

 END

Пояснения: в результате выполнения программы светодиоды будут мигать 256 раз, а затем останутся в зажженном состоянии.

8) Изучите, как в программе 1.4 использовался стек. Определите максимальное время задержки при частоте тактового генератора 12 Мгц.

9) Изучите команды возврата из подпрограммы по условию RETLW k, RETFIE. Пусть в рабочем регистре содержится смещение от начала таблицы данных. Тогда получить нужный элемент можно следующей процедурой:

Программа 1.5 (фрагмент)

 MOVLW 02h   ;задать смещение

 CALL  SHOSYM ;вызвать подпрограмму

 MOVWF DATAPORT ;вывести элемент таблицы в порт В

 GOTO $   ;зациклится навсегда

SHOWSYM

 ADDWF PC   ;вычислить смещение в таблице

 RETLW 0Aah   ;1-ый элемент таблицы

 RETLW 0BBh   ;2-ый элемент таблицы

 RETLW 0CCh   ;3-ый элемент таблицы

Результат таблицы 10111011. Используйте этот фрагмент для реализации вывода результирующей таблицы на светодиоды при определенных сигналах с клавиатуры ( см. программу 1.5).

10) Изучите следующие характеристики  ЖКИ типа MT-16S2D. Модуль позволяет отображать 2 строки по 26 символов в каждой. Символы отображаются в матрице 5х8 точек. Между символами имеются интервалы шириной в одну отображаемую точку. Каждому отображаемому символу соответствует его код в ячейке ОЗУ модуля. Модуль содержит два вида памяти – кодов отображаемых символов и пользовательского знакогенератора, а также логику для управления ЖК панелью. Символы английского алфавита  выводятся на индикатор как обычные символьные константы в виде ‘simvol’, а для вывода русского алфавита используйте таблицу 1.1.

Пример программирования индикатора приведен в программе 1.6.

Таблица 1.1

Программа 1.6

;============================================

;     Программа управления индикатором

;============================================

include <p16f877.inc>

;============================================

;     Символы задержки

;============================================

SIMVOL  EQU H'0020'

SIMVOLL  EQU H'0021'

SIM   EQU H'0022'

;====================================================

; Расчет частоты работы индикатора и переменные настройки индикатора

;====================================================

Dev_Freq  EQU D'12000000'; Базовая частота микроконтроллера 12 MHz

LCD_INIT_DELAY EQU (HIGH ((( Dev_Freq / 4 ) * D'46' / D'10000' ) / 3 ) ) + 1

MSD EQU H'0030 '; Временный регистр, старшие цифры кода

; для преобразования BIN в BCD

LSD  EQU       H'0031' ; Временный регистр, младшие цифры кода

CHAR EQU       H'0032';Временный регистр, для вывода символа на LCD 

LCD_DATA EQU PORTC

LCD_DATA_TRIS EQU TRISC

LCD_CNTL  EQU PORTE

E  EQU 1  ; Разрешение обращения к модулю

RRW  EQU 0  ; Выбор режима чтение/запись

RS  EQU 2  ; бит выбора режима данные/команда

; настройка LCD

DISP_ON  EQU  0x00C ; вкл. дисплея

DISP_ON_C EQU  0x00E; вкл. дисплей, курсор в исх. положение

DISP_ON_B EQU  0x00F;вкл. дисплей, курсор в исх. положение,

;вкл.мигание курсора

DISP_OFF  EQU 0x008  ; выкл. дисплея

CLR_DISP  EQU 0x001  ; очистка дисплея

ENTRY_INC EQU 0x006  ;

ENTRY_INC_S EQU 0x007  ;

ENTRY_DEC EQU 0x004  ;

ENTRY_DEC_S EQU 0x005  ;

DD_RAM_ADDR EQU 0x080  ; читать 7-bit адрес

DD_RAM_UL EQU 0x080  ; перемещение влево курсора;

;============================================

; Начало кода

;========================

org 0000h  ; начать программу с 0-го адреса памяти программ

nop

GOTO START              

;===========================================================

; Начало исполняемого кода 100h

;===========================================================

org 0100h

START

CLRF  STATUS   ; назначение 0-го банка

 CLRF  INTCON   ; Запретить все прерывания

 CLRF  PIR1

BSF  STATUS,RP0

MOVLW 0x00

MOVWF OPTION_REG

CLRF  PIE1

MOVLW 0xFF

MOVWF ADCON1

BCF  STATUS,RP0

;===========================================================

; Инициализация портов

;===========================================================

 CLRF  PORTC   

 CLRF  PORTE

 BSF  STATUS, RP0  ; выбор 1-го банка

 CLRF  TRISC   ; настройка порта С на выход

 CLRF  TRISE   ; настройка порта Д на выход

 BCF  STATUS, RP0  ; выбор 0-го банка

;===========================================================

; Начальная настройка индикатора

;===========================================================

CLRF  LCD_CNTL  ; обнулить порт управления

DISPLAY_INIT

MOVLW 0x038   ;  Выбираем 8-ми битный интерфейс

MOVWF LCD_DATA  

BSF  LCD_CNTL, E  ; передать команду

 BCF      LCD_CNTL, E  

LCD_DELAY

MOVLW LCD_INIT_DELAY; загрузка значений регистр MSD и LSD

MOVWF MSD ;  знач.регистра LCD_INIT_DELAY задается в библ.

 CLRF  LSD ; "lm032l.h" в зависимости от тактовой чатоты мк.

LOOP2

DECFSZ LSD, F; время для инициал. = MSD * ((3 * 256) + 3) * Tcy

 GOTO LOOP2   

DECFSZ   MSD, F   

END_LCD_DELAY

GOTO LOOP2   

CMD_SEQ

MOVLW 0X038

MOVWF LCD_DATA  ; команда - 8-битный интерфейс

BSF  LCD_CNTL, E  ; передать команду

BCF  LCD_CNTL, E  

;=====================================================

; Начальные установки индикаторов

;=====================================================

MOVLW DISP_ON               

CALL  SEND_CMD  

MOVLW CLR_DISP  

CALL  SEND_CMD  

MOVLW ENTRY_INC     

CALL  SEND_CMD              

MOVLW DD_RAM_ADDR    

CALL  SEND_CMD  

;=====================================================

; Основная программа

;=====================================================

LOOP_NEW

CALL  ST1   ;вывод первой бегущей стоки

MOVLW H'00AA'

CALL  ZAD   ; Задержка

CALL  CLRF_LCD  ; очистить индикатор

 CALL  ST2   ;вывод второй бегущей строки

 MOVLW  H'00AA'

 CALL  ZAD   ; задержка

CALL  CLRF_LCD  ; очистить индикатор

GOTO  LOOP_NEW ;повторить основную программу

;=====================================================

; Вывод бегущей строки "HALLO THE STUDENT"

;=====================================================

ST1

MOVLW 'H'

CALL  SEND_CHAR  

MOVLW 'A'

CALL  SEND_CHAR

MOVLW 'L'

CALL  SEND_CHAR

MOVLW 'L'

CALL  SEND_CHAR

MOVLW 'O'

CALL  SEND_CHAR

MOVLW B'11000000'

CALL  SEND_CMD

MOVLW 'T'

CALL  SEND_CHAR  

MOVLW 'H'

CALL  SEND_CHAR

MOVLW 'E'

CALL  SEND_CHAR

MOVLW ' '

CALL  SEND_CHAR

MOVLW 'S'

CALL  SEND_CHAR

MOVLW 'T'

CALL  SEND_CHAR

MOVLW 'U'

CALL  SEND_CHAR

MOVLW 'D'

CALL  SEND_CHAR

MOVLW 'E'

CALL  SEND_CHAR

MOVLW 'N'

CALL  SEND_CHAR

MOVLW 'T'

CALL  SEND_CHAR

RETURN

;=====================================================

; Вывод бегущей строки  "Здравствуй студент"

;=====================================================

ST2

MOVLW H'00A4'

CALL  SEND_CHAR  

MOVLW H'00E0'

CALL  SEND_CHAR

MOVLW 'P'

CALL  SEND_CHAR

MOVLW 'A'

CALL  SEND_CHAR

MOVLW 'B'

CALL  SEND_CHAR

MOVLW 'C'

CALL  SEND_CHAR

MOVLW 'T'

CALL  SEND_CHAR

MOVLW 'B'

CALL  SEND_CHAR

MOVLW H'00A9'

CALL  SEND_CHAR

MOVLW H'00A6'

CALL  SEND_CHAR

MOVLW B'11000000'

CALL  SEND_CMD

MOVLW 'C'

CALL  SEND_CHAR  

MOVLW 'T'

CALL  SEND_CHAR

MOVLW H'00A9'

CALL  SEND_CHAR

MOVLW H'00E0'

CALL  SEND_CHAR

MOVLW 'E'

CALL  SEND_CHAR

MOVLW 'H'

CALL  SEND_CHAR

MOVLW 'T'

CALL  SEND_CHAR

RETURN

;=====================================================

; Подпрограмма задержки (три вложенных цикла)

;=====================================================

ZAD

MOVWF SIMVOLL

PAU

MOVLW H'000F'

MOVWF SIMVOL

PAUZ

MOVLW H'00FF'

MOVWF SIM

PAUZA

DECFSZ SIM,F

GOTO  PAUZA

DECFSZ SIMVOL,F

GOTO  PAUZ

DECFSZ SIMVOLL,F

 GOTO  PAU

RETURN

;=====================================================

; Подпрограмма очистки индикатора

;=====================================================

CLRF_LCD

MOVLW CLR_DISP

CALL  SEND_CMD

MOVLW ENTRY_INC

CALL  SEND_CMD

MOVLW DD_RAM_ADDR

 CALL  SEND_CMD

RETURN

;=====================================================

; Подпрограмма вывода символа на индикатор

;=====================================================

SEND_CHAR

MOVWF CHAR   ; загрузка символа в регистр  CHAR

MOVLW H'000F'

 CALL  ZAD   ; Задержка 

MOVF  CHAR, w   

MOVWF LCD_DATA  ; послать символ на индикатор

BCF  LCD_CNTL, RRW; перевести индикатор в режим чтение

BSF  LCD_CNTL, RS ; установить индикатор в режим данных

BSF  LCD_CNTL, E  ; начало передачи данных

 BCF  LCD_CNTL, E

RETURN

;=====================================================

; подпрограмма подачи команд на индикатор ;=====================================================

SEND_CMD

MOVWF CHAR   ; сохранить команду в регистре  CHAR

MOVLW H'000F'

CALL  ZAD   ; задержка

MOVF  CHAR, w            

MOVWF LCD_DATA  ; послать команду на индикатор

BCF  LCD_CNTL, RRW; перевести индикатор в режим чтения

BCF  LCD_CNTL, RS ; установить индикатор в режим команд

BSF  LCD_CNTL, E  ; начало передачи данных

 BCF  LCD_CNTL, E

RETURN

;=====================================================

 end

Рисунок 1.1

11) Сделайте анализ приведенной программы, определите, каков будет результат её выполнения. При этом подключайте индикатор к контроллеру в порядке, указанном на рисунке 1.1.

12) Напишите программу решения следующей задачи: при нажатии клавиши «5» на экран выводится строка «Здравствуй студент», а при отключенной клавише «5» - строка «Hallo student» ( программа 1.7).

Лабораторная работа № 2. Таймерные функции

Цель работы: изучение понятия таймеров микропроцессора, возможностей и режимов работы шестнадцатиразрядного таймера TMR1.

2.1 Задание к лабораторной работе

1) Изучите поле сторожевого таймера WDT регистра STATUS и флаг прерывания по переполнению  тайм аута –TOIF регистра INTCON, разряды регистров TMRO-TMR2.

2) Напишите программу 2.1 организации задержки за счет таймерных функций процессора при использовании TMR1.

Программа 2.1

;описание регистров

include<p16F877.inc>

;Начало

org 0 ;выполнение программы начинается с 0-го адреса.

nop ;пустая команда используется для

nop ;работы отладчика

nop

org 05h ;начать с адреса 5

START

CLRF  STATUS

BSF   STATUS,RP0

 MOVLW  B'00000000'

 MOVWF  TRISC

 CLRF  STATUS

CLRF T1CON ; Остановить TMR1, тактирование от внутреннего

; генератора, пределитель частоты =1:1

 CLRF  TMR1H ;очистить старший байт таймера

 CLRF  TMR1L ;очистить младший байт таймера

CLRF INTCON ; Запретить прерывания от TMR1

 BSF  STATUS,RP0

CLRF  PIE1  ; Запретить периферийные прерывания

BCF  STATUS,RP0

CLRF  PIR1  ; Обнулить флаг периферийных прерываний

MOVLW 0X30; Тактирование от внутреннего

MOVWF T1CON; генератора, пределитель частоты =1:8

BSF  T1CON,TMR1ON; Старт TMR1

T1_OFF

BTFSS PIR1,TMR1IF; до тех пор, пока не установится

 GOTO T1_OFF   ;флаг переполнения таймера зациклить

 MOVLW H'FF'  ;когда флаг переполнения установится

 MOVWF PORTC ;зажечь светодиоды

 BCF  PIR1,TMR1IF ;обнулить флаг переполнения таймера

 BSF  T1CON,TMR1ON ; Старт TMR1

T2_OFF

BTFSS PIR1,TMR1IF

GOTO T2_OFF

CLRF  PORTC  ;потушить светодиоды

BCF  PIR1,TMR1IF  ;обнулить флаг переполнения таймера

 GOTO START  ;повторить сначала

END

В результате выполнения этого задания магистрант должен приобрести навыки  расчета конкретных временных значений по характеристикам микроконтроллера. Если коротко охарактеризовать работу таймера, то это накопление импульсов тактового генератора. Это накопление происходит до тех пор, пока не переполнятся два 8-разрядных регистра таймера TMR1 (TMR1H и TMR1L), то есть один 16 –разрядного регистр. Понятно, что это переполнение произойдет, когда в регистр поступит 216 импульсов (65536). Частота, с которой поступают импульсы, определяется частотой тактового генератора (12 Мгц), а также значением предделителя частоты (1:8). Накопление времени происходит каждый машинный цикл, который состоит из 4-х тактов тактового генератора. При таких данных период поступления импульсов составляет Т= [1/(12*10-6)]*8*4 = 2,67 мкс. Тогда максимальное время до установки флага переполнения:  tmax=2,67x65536x10-6 =0,18 c, значит, частота миганий светодиодов (или частота выходных импульсов) fmin=1/0,18= 5,56 Гц, tmin=2,67x10-6 с, значит, частота миганий светодиодов (или частота выходных импульсов) fmax=(1/2,67)x106= 375 KГц. Большее, чем 0,18 секунд, время формируем за счет организации вложенных циклов или простым повторением циклов опроса таймера. Формирование времени осуществляется накоплением импульсов от начального значения регистров TMR1H и TMR1L до переполнения таймера.

3) Напишите программы организации зажигания светодиодов на 5 с и нового их включения через 10 с. Предусмотрите удобный для вас контроль выполнения программы по состоянию светодиодов. Процедуры задержек можно оформить в виде подпрограмм ( программа 2.2).

4) Разработайте программу работы светофора, который через каждые 10 с выдает попеременно сообщения «STOY» и «IDI». В качестве светофора используйте ЖКИ ( программа 2.3).

5) Разработайте такую программу,  в результате выполнения которой на 10 с включается звуковая сигнализация, а  на следующие 10 с включаются светодиоды (программа 2.4). При этом учтите, что частота работы звукового генератора должна быть в диапазоне слышимости от 20 до 15 000 Гц. Звуковой генератор подключен к портуС-7-му каналу, а светодиоды к остальным каналам порта С.

Лабораторная работа № 3. Двоично-десятичное преобразование

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

1. Задание к лабораторной работе

1) Изучите принцип преобразования двоичного кода в двоично-десятичное значение [1,2,3] и алгоритм (см. рисунок 3.1).

 

Рисунок 3.1 – Блок-схема алгоритма двоично-десятичного преобразования

2) Наберите программу 3.1 преобразования восьмиразрядного кода в двоично-десятичное значение, исследуйте результат её выполнения.

3) Наберите программу 3.2 преобразования шестнадцатиразрядного кода в двоично-десятичное значение, исследуйте результат её выполнения.

4) Используя программы 3.1 и 3.2, разработайте программы вывода результатов на индикаторы.

Программа 3.1

;8-RAZRAD

;преобразование двоичного значения в ВСD

LSD EQU H'20';младшая цифра

MSD EQU H'21';старшая цифра результата

 org H'00'

GOTO MAIN

BINBCD

CLRF  MSD

 MOVWF LSD

GT

 MOVLW D'10'

 SUBWF LSD,0 ;вычесть 10

 BTFSS STATUS,C

 GOTO OVER ;если <10 прекратить

 MOVWF LSD ;если больше 10 записать остаток в LSD

 INCF  MSD,1 ;+1 в MSD

 GOTO GT ;повторить

OVER 

RETLW 0 ;возврат в основную программу с 0 в аккумуляторе

;контрольная программа, преобразовать H'63', получиться 99

MAIN

MOVLW H'63'

CALL BINBCD

GOTO $

 END

Программа 3.2

;Преобразование 16-RAZRAD двоичных кодов ы двоично-десятичное

;результат 5-ти разрядное десятичное число

;исходное число в регистрах H_BYTE и L_BYTE

COUNT  EQU  H'62';счетчик разрядов

TEMP  EQU  H'63';временный регистр хранения

R0   EQU  H'64';старшие две цифры результата

R1   EQU  H'65' ;средние две цифры результата

R2   EQU  H'66' ;младшие две цифры результата

H_BYTE EQU  H'67' ;старший байт исходного числа

L_BYTE  EQU  H'68' ;младший байт исходного числа

 ORG H'00'

GOTO MAIN

B2_BCD

BCF  STATUS,C

 MOVLW D'16'

 MOVWF COUNT

 CLRF  R0

 CLRF  R1

 CLRF  R2

LOOP16

 RLF  L_BYTE,1

 RLF  H_BYTE,1

 RLF  R2,1

 RLF  R1,1

 RLF  R0,1

 DECFSZ COUNT,1

 GOTO ADJDEC

 RETLW 0

ADJDEC MOVLW R2

 MOVWF FSR

 CALL ADJBCD

 MOVLW R1

MOVWF FSR

 CALL ADJBCD

 MOVLW R0

MOVWF FSR

CALL ADJBCD

GOTO LOOP16

ADJBCD MOVLW H'03'

ADDWF INDF,0

MOVWF TEMP

BTFSC TEMP,3

MOVWF INDF

MOVLW H'30'

ADDWF INDF,0

MOVWF TEMP

BTFSC TEMP,7

MOVWF INDF

RETLW 0

; Тестовая программа. Результат R0,R1,R2=65,55,35

MAIN

MOVLW H'FF'

MOVWF H_BYTE;задаем двоичное FFFF (16 бит)

 MOVWF L_BYTE

CALL B2_BCD

 GOTO $

END

5) Изучите программы умножения чисел в двоичном коде по следующей программе 3.3.

Программа 3.3

;беззнаковое умножение 8-разрядных чисел

MN1  EQU  H'20' ;МНОЖИМОЕ

MN2  EQU  H'21' ;МНОЖИТЕЛЬ

H_BYTE EQU  H'22' ;старший байт результата

L_BYTE EQU  H'23' ;младший байт результата

COUNT EQU  H'24' ;счетчик разрядов

START

MOVLW 0FF ;контрольная константа = 255

MOVWF MN2 ;записать в множимое

MOVLW 0FF ;контрольная константа = 255

MOVWF MN1 ;записать в множитель

CALL UMN ;перейти на подпрограмму умножения

 GOTO $

;

UMN

CLRF  STATUS

MOVLW D'08'

 MOVWF COUNT ;загрузить количество разрядов

CLRF  H_BYTE ;очистить регистры результата

CLRF  L_BYTE

MOVF MN1,0 ;множимое в аккумулятор

BCF  STATUS,C;очистить бит переполнения

CYC

RRF MN2,1 ;сдвиг множителя вправо

BTFSC STATUS,C;если не было переполнения пропустить

ADDWF H_BYTE,1;иначе сложить MN1+MN2

RRF  H_BYTE,1;сдвиг вправо стврший байт результата

RRF  L_BYTE,1;сдвиг вправо младший байт результата

DECFSZ COUNT,1 ;если все 8 бит опрошены пропустить

GOTO CYC ;иначе повторить цикл

RETLW 0 ;возврат из подпрограммы с 0 в аккумуляторе

END  

6) Изучите программу деления чисел в двоичном коде по программе 3.4. Комментарии к программе помогут вам в этом.

Программа 3.4

;деление 16-разрядных чисел

; АССВ(16 БИТ)/АССА(16 БИТ)=АССВ(16 БИТ)

;остаток помещается в АССС(16 бит)

;SIGNED определяет версию деления-

;SIGNED=1 - для версии деления со знаком

;SIGNED=0 - для версии деления без знака

; деление с двойной точностью (16 бит/16 бит=16 бит) b=b/a+c

; предварительно надо убедиться, что делимое больше, чем делитель

ACCAL0 EQU H'20'

ACCAHI EQU H'21'

ACCBL0 EQU H'22'

ACCBHI EQU H'23'

ACCCL0 EQU H'24'

ACCCHI EQU H'25'

ACCDL0 EQU H'26'

ACCDHI EQU H'27'

TEMP EQU H'28'

SIGN  EQU H'29'

SIGNED EQU H'01'

ORG H'00'

GOTO MAIN

D_DIVS

BTFSC SIGNED,0;если версия деления без знака,

;пропустить следующую команду

CALL S_SIGN ;если со знаком перейти на

;определение знака результата

;

CALL SETUP ;к подпрограмме записи делимого

; во временный регистр АССD

CLRF  ACCCHI ;очистить регистр остатка

CLRF  ACCCL0

DLOOP

BCF  STATUS,C;очистить бит переполнения

RLF  ACCDL0,1;сдвиг влево делимого

RLF  ACCDHI,1

RLF  ACCCL0,1;сдвиг влево остатка

RLF  ACCCHI,1

MOVF ACCAHI,0;делитель в аккумулятор

SUBWF ACCCHI,0;вычесть из остатка делитель,проверяем а>c?

BTFSS STATUS,Z;если a=c пропустить следующую команду

GOTO NOCHK ;перейти к подпрограмме деления

MOVF ACCAL0,0

SUBWF ACCCL0,0;вычесть из остатка делитель для сташего байта

NOCHK

BTFSS STATUS,C; если с>а, пропустить следующую команду

GOTO NOGO ;перейти к порограмме деления

MOVF ACCAL0,0;

SUBWF ACCCL0,1;выч из остатка делитель для младшего байта (с-а)=с

 BTFSS STATUS,C;

DECF ACCCHI,1

MOVF ACCAHI,0

SUBWF ACCCHI,1

BSF  STATUS,C; уст. бит переноса и сдвигаем в младший разряд

NOGO

RLF  ACCBL0,1

 RLF  ACCBHI,1

DECFSZ TEMP,1 ;организация цикла по всем 16-ти разрядам

GOTO DLOOP

BTFSC SIGNED,0;если без знаковое деление

;пропустить следующую команду

BTFSS SIGN,7 ;если знаковое деление проверить

;знак отрицательный?

RETLW 0 ;"нет", то возврат с 0 в аккумуляторе

GOTO NEG_A ;"да", то перейти на изменение знака

;подпрограмма установки начальных условий

SETUP

MOVLW D'16' ;количество битов 16

MOVWF TEMP

MOVF ACCBHI,0;переписать делимое в регистр D

 MOVWF ACCDHI

MOVF ACCBL0,0

MOVWF ACCDL0

 CLRF  ACCBHI ;очистить регистр В для результата (частного)

CLRF  ACCBL0

RETLW 0

;подпрограмма изменения знака -а=а

NEG_A

COMF ACCAL0,1

 INCF  ACCAL0,1

 BTFSC STATUS,Z

 DECF ACCAHI,1

COMF ACCAHI,1

RETLW 0

;подпрограмма деления со знаком

S_SIGN 

MOVF ACCAHI,0

 XORWF ACCBHI,0

 MOVWF SIGN

BTFSS ACCBHI,7;если "-" меняем знак байта А0СВ

GOTO CHEK_A

COMF ACCBL0,1;меняем знак

INCF  ACCBL0,1

BTFSC STATUS,Z

DECF ACCBHI,1

 COMF ACCBHI,1

CHEK_A

BTFSS ACCAHI,7;если "-" то меняем знак байта АССА

RETLW 0

GOTO NEG_A

;тестовая программа

MAIN

MOVLW H'80'

MOVWF ACCAHI ;загрузка "-2" ACCA

MOVLW H'02'

MOVWF ACCAL0

MOVLW H'00'

MOVWF ACCBHI

MOVLW H'08'

MOVWF ACCBL0 ;загрузка "8" в АССВ

 CALL D_DIVS ;перейти к подпрограмме деления

GOTO $

END

7) Разработайте программы представления результатов умножения и деления в двоично-десятичном виде (программа  3.5).

Лабораторная работа №4. Аналогово-цифровое преобразование

Цель работы: Изучение принципов аналогово-цифрового преобразования в микропроцессорных средствах, приобретение навыков сбора схемы с аналоговыми сигналами, приобретение навыков подключения аналоговых датчиков в задачах автоматизации.

  1.  Задание к лабораторной работе

  1.  Изучите схему центрального процессора PICF877 [1,2,4], обратите внимание на то, что к этому контроллеру подключаются аналоговые сигналы на напряжение  от 0 до 5 Вольт.
  2.  Изучите принципы аналого-цифрового преобразования [5 стр.173].
  3.  Изучите программу инициализации аналогового входа (программа 4.1) микроконтроллера для подключения аналоговых датчиков систем автоматизации.

Программа 4.1 (фрагмент)

; Код примера инициализации A/D преобразователя.

BSF   STATUS, RP0  ; Выбираем Bank1

CLRF  ADCON1   ; Все входы АЦП аналоговые

BСF   PIE1, ADIE  ; Запретить прерывание от АЦП

BCF   STATUS, RP0  ; Выбираем Bank0

MOVLW  0xC1              ; Внутренний RC генератор, АЦП включен,

MOVWF  ADCON0         ;преобразования выполняются по 0-му каналу

                  ; (AN0)

BCF   PIR1,ADIF           ; Отчистить флаг окончания A/D 

;преобразования

BСF   INTCON,PEIE  ; Запретить периферийные прерывания

BSF   INTCON, GIE ; Запретить все прерывания

; Необходимо время для осуществления выборки

BSF   ADCON0, GO   ; Старт АЦП

; Производится опрос бита (ADIF) окончания A/D преобразования

AD_WAIT

BTFSS  PIR1, ADIF

GOTO  AD_WAIT

; A/D преобразование закончено

BCF   PIR1, ADIF

……………….

; Продолжение программы

4) Дополните программу 4.1 выводом аналогового сигнала на индикатор (см. программу 4.2).

Программа 4.2

; Begin

 R0L EQU 0x20 ; младший регистр

 R0H EQU 0x21

 R1L EQU 0x22

 R1H EQU 0x23

 R2L EQU 0x24

 R2H EQU 0x25

 R3L EQU 0x26

 R3H EQU 0x27

R4L EQU 0x28

R4H EQU 0x29

R5L EQU 0x2A

R5H EQU 0x2B

;начало кода программы

 ORG 0x0000  ; начать с 0-го адреса

 BCF PCLATH,3  ;назначение 0-ой страницы памяти программ

 BCF PCLATH,4

GOTO L0002  ;перейти к основной программе

 ORG 0x0004  ; при наличии прерываний

 RETFIE   ;возврат с разрешением нового прерывания

L0002:

; 1:Определяет ADC_CLOCK=3 'если не выполняется перемен. времени 3

; 2:Определяет ADC_SAMPLEUS =10 'если не вып. переменная времени 20

; 3: Опред LCD_BITS=8'разрешение  4 и 8 – битных линий интерфейса

; 4: Определяет LCD_DREG = PORTB

; 5: Определяет LCD_DBIT=0'0 или 4 для 4-бит интерфейса, игнорируется ;для 8-битного интерфейса

; 6: Определяет LCD_RSREG = PORTD

; 7: Определяет LCD_RSBIT = 1

; 8: Определяет LCD_EREG = PORTD

; 9: Определяет LCD_EBIT = 3

; 10: Определяет LCD_RWREG = PORTD 'запрет на 0

; 11: Определяет LCD_RWBIT = 2 'запрет на 0

; 12: Определяет LCD_COMMANDUS = 2000 'продолжительность вывода ; ;команды LCDCMDOUT, предельное значение 5000

; 13: Определяет LCD_DATAUS = 50 'задержка LCDOUT, по значению 100

; 14: Определяет LCD_INITMS = 2 'задержка по LCDINIT, по значению 100

;15:  'переменная для отображения реальных величин в режиме симулляции

; 16:

; 17: Матрица «an0» как цифровое слово

;       адрес переменной 'an0'  0x2C

 an0 EQU 0x2C

; 18:

; 19: TRISA = 0xff 'установка всех каналов PORTA аналоговыми входами

 BSF   STATUS,RP0

 MOVLW  0xFF

 MOVWF  0x05

 BCF   STATUS,RP0

; 20: ADCON1 = 0 'установка PORTA все аналоговые входа

 BSF   STATUS,RP0

 CLRF  0x1F

 BCF   STATUS,RP0

; 21: начальные установки LCD модуля; курсор мигает

 BCF   0x08,3

 BCF   0x08,1

 BCF   0x08,2

 BSF   STATUS,RP0

 BCF   0x08,3

 BCF   0x08,1

BCF   0x08,2

CLRF  0x06

BCF   STATUS,RP0

MOVLW  0x02

MOVWF  R0L

MOVLW  0x00

MOVWF  R0H

CALL  W001

MOVLW  0x33

CALL  LC02

MOVLW  0x33

CALL  LC02

MOVLW  0x33

CALL  LC02

MOVLW  0x38

CALL  LC02

MOVLW  0x0D

CALL  LC02

MOVLW  0x01

CALL  LC02

; 22:

; 23: loop:

L0001:

; 24: 0-ой аналоговый вход an0

BSF   STATUS,RP0

BSF   ADCON1,ADFM

MOVLW  0x00

BCF   STATUS,RP0

MOVWF  R0L

CALL  A001

BSF   STATUS,RP0

MOVF  ADRESL,W

BCF   STATUS,RP0

MOVWF  0x2C

MOVF  ADRESH,W

MOVWF  0x2D

; 25: очистка дисплея

MOVLW  0x01

CALL  LC02

; 26: Lcdout "Analog input AN0" '- вывод текста в первую строку

 MOVLW  0x41

CALL  LC01

MOVLW  0x6E

CALL  LC01

MOVLW  0x61

CALL  LC01

MOVLW  0x6C

CALL  LC01

MOVLW  0x6F

CALL  LC01

MOVLW  0x67

CALL  LC01

MOVLW  0x20

CALL  LC01

MOVLW  0x69

CALL  LC01

MOVLW  0x6E

CALL  LC01

MOVLW  0x70

CALL  LC01

MOVLW  0x75

CALL  LC01

MOVLW  0x74

CALL  LC01

MOVLW  0x20

CALL  LC01

MOVLW  0x41

CALL  LC01

MOVLW  0x4E

CALL  LC01

MOVLW  0x30

CALL  LC01

; 27: Lcdcmdout LcdLine2Home 'set cursor at the beginning of line 2

MOVLW  0xC0

CALL  LC02

; 28: Lcdout "Value: ", #an0 'formatted text for line 2

MOVLW  0x56

CALL  LC01

MOVLW  0x61

CALL  LC01

MOVLW  0x6C

CALL  LC01

MOVLW  0x75

CALL  LC01

MOVLW  0x65

CALL  LC01

MOVLW  0x3A

CALL  LC01

MOVLW  0x20

CALL  LC01

MOVF  0x2C,W

MOVWF  R2L

MOVF  0x2D,W

MOVWF  R2H

CALL  LC21

; 29: Ожидание вывода переменной

MOVLW  0x01

MOVWF  R0L

CLRF  R0H

CALL  W001

; 30: Повторить сначала

GOTO  L0001

; конец программы

L0003: GOTO L0003

; Цикл обработки

D001: MOVLW 0x10

 MOVWF R3L

 CLRF  R2H

 CLRF  R2L

D002: RLF  R0H,W

 RLF  R2L,F

 RLF  R2H,F

 MOVF R1L,W

 SUBWF R2L,F

 MOVF R1H,W

 BTFSS STATUS,C

 INCFSZ R1H,W

  SUBWF R2H,F

 BTFSC STATUS,C

  GOTO D003

 MOVF R1L,W

 ADDWF R2L,F

 MOVF R1H,W

 BTFSC STATUS,C

  INCFSZ R1H,W

 ADDWF R2H,F

  BCF  STATUS,C

D003: RLF  R0L,F

 RLF  R0H,F

  DECFSZ R3L,F

  GOTO D002

  MOVF R0L,W

  RETURN

; Следующий цикл

W001: MOVF R0L,F

 BTFSC STATUS,Z

  GOTO W002

  CALL W003

  DECF R0L,F

 NOP

 NOP

 NOP

 NOP

 NOP

 GOTO  W001

W002: MOVF  R0H,F

 BTFSC  STATUS,Z

 RETURN

 CALL  W003

 DECF  R0H,F

 DECF  R0L,F

 GOTO  W001

W003: MOVLW  0x0C

 MOVWF  R2H

W004: DECFSZ  R2H,F

 GOTO  W004

  NOP

  NOP

  MOVLW  0x12

  MOVWF  R1L

W005: DECFSZ  R1L,F

  GOTO  W006

 CALL  W007

 CALL  W007

 NOP

 NOP

 RETURN

W006: CALL  W007

  GOTO  W005

W007: MOVLW  0x0D

  MOVWF  R2L

W008: DECFSZ  R2L,F

  GOTO  W008

  NOP

  RETURN

; Следующий цикл – формирование байта аргумента

X001: MOVLW  0x0A

 SUBWF  R4L,F

  BTFSS  STATUS,C

  RETURN

  GOTO  X002

X002: MOVLW  0x06

  SUBWF  R4L,F

  BTFSS  STATUS,C

  RETURN

  GOTO X002

; Следующий циклСлово аргумента

Y001: MOVLW  0x10

  SUBWF  R4L,F

  CLRW

  BTFSS  STATUS,C

  ADDLW  0x01

  SUBWF  R4H,F

  BTFSS  STATUS,C

  RETURN

  GOTO  Y002

Y002: MOVLW  0x0A

  SUBWF  R4L,F

  CLRW

  BTFSS  STATUS,C

  ADDLW  0x01

  SUBWF  R4H,F

  BTFSS  STATUS,C

  RETURN

  GOTO Y002

; АЦП преобразование

A001: RLF   R0L,F

 RLF   R0L,F

  RLF   R0L,F

  MOVLW  0x38

  ANDWF  R0L,F

  MOVLW  0xC1

  IORWF  R0L,W

  MOVWF  ADCON0

 MOVLW  0x0A

 MOVWF  R4L

 CALL  X001

 BSF   ADCON0,GO

A002: BTFSC  ADCON0,GO

  GOTO  A002

  BCF   PIR1,ADIF

  BCF   ADCON0,ADON

  RETURN

; Цикл обработки выводов монитора

LC01: BSF   0x08,1

 BCF   0x08,2

  MOVWF  0x06

  BSF   0x08,3

  NOP

  BCF   0x08,3

  MOVLW  0x32

  MOVWF  R4L

  CALL  X001

  RETURN

; Цикл обработки команд на монитор

LC02: BCF   0x08,1

 BCF   0x08,2

  MOVWF  0x06

  BSF   0x08,3

  NOP

  BCF   0x08,3

 MOVLW  0xD0

 MOVWF  R4L

  MOVLW  0x07

  MOVWF  R4H

  CALL  Y001

  RETURN

; Цикл десятичного преобразования

LC21: BSF   R3H,7

 MOVLW  0x27

 MOVWF  R1H

  MOVLW  0x10

 CALL  LC22

 MOVLW  0x03

 MOVWF  R1H

 MOVLW  0xE8

 CALL  LC22

 CLRF  R1H

  MOVLW  0x64

 CALL  LC22

 CLRF  R1H

 MOVLW  0x0A

 CALL  LC22

 MOVF  R2L,W

 GOTO  LC23

LC22: MOVWF  R1L

 MOVF  R2H,W

 MOVWF  R0H

 MOVF  R2L,W

 MOVWF  R0L

 CALL  D001

 MOVF  R0L,W

  BTFSS  STATUS,Z

  BCF   R3H,7

 BTFSC  R3H,7

 RETURN

LC23: ADDLW  0x30

 CALL  LC01

 RETURN

; Конец листинга программы

 END

2. Указания к схемотехническому обеспечению лабораторной работы

Соберите схему подключения на аналоговый вход AN0 сигнала с источника аналогового сигнала (см. рисунок 4.1).

Рисунок 4.1 Схема подключения аналогового сигнала

Лабораторная работа № 5. Изучение способов и режимов прерывания

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

  1.  Задание для домашней подготовки

  1.  Изучите режимы следующих видов прерываний [1,2,4]:
  •  внешнее прерывание RB0/int;
  •  прерывание по завершению аналого-цифрового преобразования;
  •  прерывание по переполнению таймера.

2) Изучите разряды регистров OPTION , INTCON, регистров прерывания PIR1, PIR2 и регистров разрешения прерывания PIE1,PIE2,    изменяющие свои флаги в режиме прерывания.

  1.  Изучите карту памяти, обратив внимание на то, что вектор прерывания находится по адресу 04 h.
  2.  Изучите программу организации прерывания по завершению аналого-цифрового преобразования (см. программу 5.1), аналогично организуются прерывания от внешнего сигнала и по переполнению таймера.

Программа 5.1

include <p16F877.inc>

org 0x000

nop                

RESET       GOTO    START

org 0x004

;======================================================

;          Вектор прерываний находится по адресу 4h

;======================================================

;

; Здесь вставьте код обработки прерывания(й)

;

;======================================================

;          Начало исполняемого кода с адреса 100h

;======================================================

           ORG     100h

START             

; Исправленный код из программы 5.1

end

  1.  Задание к лабораторной работе

  1.  Соберите схему для приёма аналогового сигнала  на рисунке 4.1.

2) Запишите программу 5.1. Дополните программу окнами для наблюдения за состоянием регистров OPTION и INTCON, PIR1, PIR2, PIE1, PIE2, откомпеллируйте программу  и запустите её. Исследуйте выполнение программы. Определите, как используются разряды перечисленных регистров для организации аналого-цифрового преобразования (АЦП). Как устанавливается, как очищается флаг переполнения по АЦП и как этот флаг используется для организации аналого-цифрового преобразования?  

3) Соберите схему соединения микроконтроллера с клавиатурой, подключив одну из клавиш к выводу RB0 (внешнее прерывание происходит по изменению состояния на выводе микроконтроллера RB0). Предусмотрите в программе событие по прерыванию, например включение звукового генератора или событие включение светодиода. Проверьте работу микроконтроллера по прерыванию. Какие внешние факторы реальной системы автоматизации должны вызывать прерывание и при каких из них срабатывает звуковая или световая сигнализации. Приведите примеры систем, изобразите электрическую схему и алгоритм работы такой системы.

4) Запишите программу 5.2 (видоизменив программу 5.1. для обработки внешнего прерывания) Дополните программу окнами для наблюдения за состоянием регистров OPTION и INTCON, TNR2CON,. PIR1, PIR2, PIE1, PIE2, откомпеллируйте программу запустите. Исследуйте её выполнение, подавая с клавиатуры значения, которые приведут к прерыванию.  Сопоставьте Ваши результаты с программными единицами в приложении 1.

Лабораторная работа № 6. Программирование арифметического сложения и вычитания много байтовых слов

Цель работы: Изучение способов обработки много байтовых слов, изучение алгоритма арифметического сложения много байтовых слов, приобретение навыков формирование системы цифровой индикации в системах автоматизации.

 

6.1 Задание для домашней подготовки

  1.  Изучите различные коды чисел с фиксированной запятой: прямой код, дополнительный код, числа в двоично-десятичном коде [5].
  2.  Изучите алгоритм сложения   данных с получением много байтового результата [1,2,4].
  3.  Составьте программу сложения двух слагаемых с выводом двух байтового результата на индикацию в шестнадцатеричном коде на семисегментный индикатор (программа 6.1).
  4.  Дополните программу 6.1 включением звукового генератора при выходе результата сложения за пределы двух байт (программа 6.2).
  5.  Составьте программу вычитания с выводом результата вычитания в шестнадцатеричном виде на семисегментный индикатор (программа 6.3).
  6.  Дополните программу 6.3 включением светодиодов при отрицательном результате вычитания (программа 6.4).

6.2 Задание к лабораторной работе

1) На входе микроконтроллера подключены два аналоговых сигнала с датчиков расхода жидкости. Необходимо организовать вывод на цифровой жидкокристаллический экран суммарный расход двух датчиков. Соберите схему, подключив к микроконтроллеру: индикатор, клавиатуру, звуковую сигнализацию. Изобразите электрическую схему подключения всех элементов.

2) Запишите программу 6.1. Предполагая,  что два слагаемых это цифровые коды аналоговых сигналов датчиков расхода, исследуйте выполнения по домашнему заданию при задании  слагаемых  до значения FF.

3) Запишите программу 6.2, для этого отредактируйте предыдущую. Предполагая,  что два слагаемых это цифровые коды аналоговых сигналов датчиков расхода, исследуйте выполнения по домашнему заданию при задании  слагаемых  до значения FF. Звуковая сигнализация используется для контроля правильности выполнения сложения.

4) На входе микроконтроллера подключены два аналоговых сигнала с датчиков расхода жидкости. Необходимо организовать вывод на цифровой жидкокристаллический экран разницу показаний двух датчиков. Соберите схему, подключив к микроконтроллеру: индикатор, клавиатуру, звуковую сигнализацию. Изобразите электрическую схему подключения всех элементов. Запишите и выполните  программу 6.3, задавая на входе различные цифровые коды аналоговых датчиков, и обязательно исследуйте результат выполнения программы при задании   вычитаемого больше уменьшаемого.

5) Запишите и выполните программу 6.4, наблюдая результат по индикатору. Звуковая сигнализация срабатывает при отрицательном значении результата, то есть расход жидкости второго датчика больше первого. Сравните Ваши результаты с программами в приложении 2.

Лабораторная работа № 7. Программирование арифметического умножения и деления много байтовых слов

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

7.1 Задание для домашней подготовки

  1.  Изучите алгоритм умножения  данных с получением двух байтового результата [1,2,4].
  2.  Составьте программу умножения двух чисел с выводом двух байтового результата на индикацию в десятичном виде (программа 7.1).
  3.  Дополните программу 7.1 включением светодиодов при выходе результата умножения за пределы двух байт (программа 7.2).
  4.  Напишите программу деления двух чисел с выводом на индикацию (программа 7.3).
  5.  Дополните программу деления вводом данных с клавиатуры и выходом в режим прерывания при делении на 0 (программа 7.4).

7.2 Задание к лабораторной работе

1) Организуйте умножение цифрового кода аналогового значения датчика на коэффициент нормирования. Запишите программу 7.1, отладьте её и исследуйте при различных данных, обязательно при числах FF.

2) Организуйте умножение цифрового кода аналогового значения датчика на коэффициент нормирования с сигнализацией ошибки вычисление из-за превышения сетки цифровых значений. Запишите программу 7.2, исследуйте её выполнение при тех же данных.

3) Организуйте вычисление коэффициента нормирования аналогового датчика при различных пределах измеряемых и нормируемых значений. Запишите программу 7.3, исследуйте её выполнение при различных данных.

4) Организуйте вычисление коэффициента нормирования аналогового датчика при различных пределах измеряемых и нормируемых значений. Исследуйте последовательно результат выполнения программы 7.4, задавая различные варианты данных: положительные числа, отрицательные числа и деление на ноль. Сравните результаты с программами в приложении 3.

Лабораторная работа № 8. Программирование математических функций

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

 

  1.  Задание для домашней подготовки

1) Изучите следующие рекомендации по программированию стандартных математических функций. Функции sin x, cos x, ln x можно вычислить, воспользовавшись их разложением в ряд:

Число членов ряда определяется из условия получения требуемой точности.

Для вычисления функции х с точностью до целых чисел можно применить алгоритм, основанный на том, что квадрат числа можно определить сложением последовательно нечетных чисел (см. таблица 8.1).

Таблица 8.1

Число

Сумма нечетных чисел

Результат

1

1

1

2

1+3

22

3

1+3+5

32

4

1+3+5+7

42

5

1+3+5+7+9

52

Исходя из приведенных примеров видно, что какое число необходимо возвести в квадрат, такое же количество последовательных нечетных чисел начиная с 1 необходимо сложить.

  1.  По заданию преподавателя составьте программу вычисления одной из перечисленных функций, используя подпрограммы (программа 8.1). Ввод организуйте с клавиатуры, а вывод на индикацию. Продумайте схему клеммных соединений на стенде. Составьте схему схемных соединений.
  2.  Изучите другой метод вычисления стандартных функций – вычисление с помощью таблиц по программе 8.2. Эта программа предназначена для вычисления квадрата числа. Число формируется по адресу.

Программа 8.2

SQ: MOVLW k ;задать константу, которую нужно

;возвести в квадрат

 CALL SQTB ;вызвать п.п. вычисления квадрата

 MOVWF PORTC ;записать результат п.п. в порт С

 GOTO $ ;

 SQTB: ADDWF PC ;вычислить адрес константы

 RETLW 000h ; квадрат 00

 RETLW 001h ; квадрат 01

 RETLW 004h ; квадрат 02

 RETLW 009h ; квадрат 03

 RETLW 010h ; квадрат 04

 RETLW 019h ; квадрат 05

 RETLW 024h ; квадрат 06

 RETLW 031h ; квадрат 07

 RETLW 040h ; квадрат 08

 RETLW 081h ; квадрат 09

 RETLW 064h ; квадрат 0A 

8.2 Задание к лабораторной работе

1) Соберите схему выполнения программы, подключив для ввода клавиатуру, а для вывода индикатор.

2) Запишите программу 8.1 из домашней подготовки, отладьте программу, используя пошаговый режим работы, используйте окна наблюдения.

3) Для той функции, что и в предыдущем задании составьте таблицу вычислений, запишите её как подпрограмму, напишите основную программу, исследуйте выполнение программы для тех же данных, оцените точность реализованных в программе 8.1 алгоритмов.

Список литературы

 

  1.  Тавернье К. PIC- микроконтроллеры. Практика применения: Пер. с фр.-М.:ДМК Пресс,2003. -272 с.:ил.(Серия «Справочник»).
  2.  PIC1.HTML файл на сайте microchip.ru
  3.  М.С.Голубцов, А.В. Кириченкова. Микроконтроллеры AVR:от простого к сложному. Изд. 2-ое испр. и доп. – М.:СОЛОН-Пресс,2004.304 с. – (Серия «Библиотека инженера»)
  4.  Микроконтроллер PIC 16X7XX. Под ред. С.К. Корякина-Черняка, М.:ДОДЭКА, 2005г.
  5.  Цифровая и вычислительная техника: Учебник для вузов/Э.В Евреинов, Ю.Т. Бутыльский, И.А.Мамзелев и др.; Под ред.Э.В.Евреинов. – М.:Радио и связь, 1991. – 464 с.:ил.
  6.  Петров И.В. Программируемые контроллеры. Стандартные языки и приемы прикладного проектирования / Под ред. Проф. В.П. Дьяконова.-М.:СОЛОН-Пресс, 2004. – 256 с.:ил. – (Серия «Библиотека инженера»).
  7.  А.А.Копесбаева Микропроцессорные комплексы в системах управления.  Учебное пособие /Алматы, АИЭС, 2010 г. 121с.
  8.  Э.Парр. Программируемые контроллеры: руководство для инженера. – М.:БИНОМ. Лаборатория знаний, 2007. – 516 с.:ил
  9.  Сайт http://www.intuit.ru/-  электронный учебник «Архитектура микропроцессорных устройств», Гуров Л.
  10.   А.А.Копесбаева Микропроцессорные средства и программно-технические комплексы. Методические указания к лабораторным работам (для студентов специальности 36.03 Автоматизация технологических процессов и слушателей ФПК) – АИЭС, Алматы 2001 год.
  11.  А.А.Копесбаева, А.Б.Файзулина, А.А.Рябцев. Микропроцессорные средства и программно-технические комплексы. Методические указания к выполнению лабораторных и семестровых работ (для студентов специальности 36.03 Автоматизация технологических процессов), Часть 2 – АИЭС, Алматы 2001 год.
  12.  Микропроцессорные средства в системах управления./ Методические указания к выполнению лабораторных работ для студентов всех форм обучения специальности 050702 – Автоматизация и управление. Копесбаева А.А., Ибрашева А.Т., Алматы, АИЭС, 2008. - 46 с.
  13.   А.А.Копесбаева Микропроцессорные комплексы в системах управления. Конспект лекций для студентов всех форм обучения специальностей 050702 – Автоматизация и управление – Алматы .:АИЭС, 2009 – 47 с.
  14.  А.А.Копесбаева Программно-технические комплексы в системах управления. Методические указания к выполнению лабораторных работ для студентов всех форм обучения специальностей 050702 – Автоматизация и управление – Алматы .:АИЭС, 2009 – 45
  15.  Сайт www.telesys.ru/electronics/

Приложение 1

;******************************************************************

; Retr_1.asm ВАРИАНТ С ПРЕРЫВАНИЯМИ

; Сканер для ретранслятора VERTEX-7000VXR.

;******************************************************************

; Позволяет перевести VERTEX-7000VXR и другие подобные ретрансляторы ;из режима односторонней ретрансляции в режим двухсторонней ;ретрансляции без потери качества работы.

;******************************************************************

; Используется микроконтроллер PIC16F84A. Частота кварца 4000кГц.

;******************************************************************

LIST p=16F84a ; Используется PIC16F84A.

__CONFIG 03FF5H ; WDT включен, бит защиты не установлен.

;===========================================================

; Определение положения регистров специального назначения.

;===========================================================

OptionR equ 01h ; Option - банк1

Status equ 03h ; Регистр Status

PortB equ 06h ; Порт B

TrisB equ 06h ; Tris B - Банк1

IntCon equ 0Bh ; Регистр IntCon

;=========================================================

; Определение названия и положения регистров общего назначения.

;=========================================================

Trigg equ 0Ch ; Переключатель направления ретрансляции.

W_Temp equ 0Eh ; Регистр сохранения содержимого W в

; прерываниях.

Stat_Temp equ 0Fh ; Регистр сохранения содержимого STATUS в

; прерываниях.

SecH equ 1Eh ; Старший байт счетчика времени сканирования.

SecL equ 1Fh ; Младший байт счетчика времени сканирования.

SecH_1 equ 1Ch ; Старший байт счетчика защитного интервала

; времени.

SecL_1 equ 1Dh ; Младший байт счетчика защитного интервала

; времени.

SecH_2 equ 1Ah ; Старший байт счетчика задержки рабочей точки

; программы в прерывании.

SecL_2 equ 1Bh ; Младший байт счетчика задержки рабочей точки

; программы в прерывании.

;=========================================================

; Определение места размещения результатов операций.

;=========================================================

W equ 0 ; Результат направить в аккумулятор.

F equ 1 ; Результат направить в регистр.

;=========================================================

; Определение положения флагов и бита выбора банка в регистре STATUS.

;=========================================================

RP0 equ 5 ; Бит выбора банка.

;=========================================================

; Точка входа в программу.

;=========================================================

;141

org 0 ; Начать выполнение программы с нулевого

goto START ; адреса PC.

;========================================================

; Точка входа в прерывание.

;=======================================================

org 4 ; Назначение вектора прерывания (назначается,

; если в программе используются прерывания).

;======================================================

; Объем программы: 63 слова в памяти программ.

;**************************************************************

;**************************************************************

; НАЧАЛО ПРЕРЫВАНИЯ.

;=======================================================

; Сохранение содержимого регистров STATUS и W в ОЗУ.

;--------------------------------------------------------------------------------

INT movwf W_Temp ; Скопировать содержимое регистра W

; в регистр W_Temp.

movf Status,W ; Скопировать содержимое регистра Status

; в регистр W.

movwf Stat_Temp ; Скопировать содержимое регистра W

; в регистр Stat_Temp.

;--------------------------------------------------------------------------------

; Проверка наличия несущей (опрос клавиатуры).

;--------------------------------------------------------------------------------

CYCLE btfsc PortB,0 ; Проверка состояния нулевого бита

; регистра PortB.

goto EndInt ; Если он =1 (несущей нет), то уход

; в ПП выхода из прерывания.

; Если он =0 (несущая есть), то программа

; исполняется далее.

;--------------------------------------------------------------------------------

; Формирование времени одного цикла задержки рабочей точки программы в ;прерывании

;--------------------------------------------------------------------------------

movlw .250 ; Закладка константы .250 в регистр W.

movwf SecH_2 ; Копирование .250 из регистра W

; в регистр SecH_2.

movlw .120 ; Закладка константы .120 в регистр W.

movwf SecL_2 ; Копирование .120 из регистра W

; в регистр SecL_2.

PAUSE_2 clrwdt ; Сброс WDT.

decfsz SecL_2,F ; Декремент содержимого младшего разряда

; счетчика SecL_2.

goto PAUSE_2 ; Если результат декремента не =0, то переход

; в ПП PAUSE_2.

incfsz SecH_2,F ; Если результат декремента =0, то инкремент

; старшего разряда счетчика SecH_2.

goto PAUSE_2 ; Если результат инкремента не=0, то переход

; в ПП PAUSE_2.

goto CYCLE ; Если результат инкремента =0, то переход на

; следующий цикл задержки рабочей точки

; программы в прерывании.

;===================================================

; Восстановление содержимого регистров STATUS и W с последующим ;выходом из прерывания.

;--------------------------------------------------------------------------------

EndInt bcf IntCon,1 ; Сброс флага прерывания по INT.

movf Stat_Temp,W ; Скопировать содержимое регистра Stat_Temp

; в регистр W.

movwf Status ; Скопировать содержимое регистра W

; в регистр Status.

swapf W_Temp,F ; Поменять местами старший и младший полубайты

; регистра W_Temp с сохранением результата

; операции в нем же.

swapf W_Temp,W ; Поменять местами старший и младший полубайты

; регистра W_Temp с сохранением результата 142

; операции в регистре W.

retfie ; Возврат из прерывания по стеку.

;**************************************************************

; КОНЕЦ ПРЕРЫВАНИЯ

;**************************************************************

;**************************************************************

; СКАНИРОВАНИЕ

;**************************************************************

; Подготовительные операции.

;--------------------------------------------------------------------------------

START clrf IntCon ; Запретить все прерывания.

clrwdt ; Сбросить сторожевой таймер WDT.

bsf Status,RP0 ; Установить банк 1.

movlw .1 ; RB0 работает на вход,

movwf TrisB ; остальные - на выход.

movlw .0 ; Включить подтягивающие резисторы порта В.

movwf OptionR ; На входе INT прерывания - по заднему фронту.

bcf Status,RP0 ; Установить банк 0.

;--------------------------------------------------------------------------------

; Выбор направления ретрансляции.

;--------------------------------------------------------------------------------

TRIGGER btfsc Trigg,0 ; Проверка значения нулевого бита

; регистра Trigg.

goto Metka148 ; Если это значение =1, то переход

; на метку Metka148.

; Если это значение =0, то программа

; исполняется далее.

movlw .251 ; Закладка константы .251 (1111 1011)

; в регистр W.

movwf PortB ; Копирование .251 из регистра W

; в регистр PortB (выбор прямого направления

; ретрансляции: ПРМ-X, ПРД-Y).

goto Metka_1 ; Безусловный переход на метку Metka_1.

Metka148 movlw .255 ; Закладка константы .255 (1111 1111)

; в регистр W.

movwf PortB ; Копирование .255 из регистра W

; в регистр PortB (выбор обратного направления

; ретрансляции: ПРМ-Y, ПРД-X).

;--------------------------------------------------------------------------------

; Формирование защитного интервала времени (ожидание окончания ;переходных процессов, возникающих при смене направлений ретрансляции) ;равного, примерно, 60 мс.

;--------------------------------------------------------------------------------

Metka_1 movlw .197 ; Закладка в регистр W константы .197

movwf SecH_1 ; Копирование константы .197 из регистра W

; в регистр SecH_1.

movlw .121 ; Закладка в регистр W константы .121

movwf SecL_1 ; Копирование константы .121 из регистра W

; в регистр SecL_1.

PAUSE_D clrwdt ; Сброс WDT.

decfsz SecL_1,F ; Декремент содержимого младшего разряда

; счетчика SecL_1.

goto PAUSE_D ; Если результат декремента не =0,

; то переход в ПП PAUSE_D.

incfsz SecH_1,F ; Если результат декремента =0, то инкремент

; старшего разряда счетчика SecH_1.

goto PAUSE_D ; Если результат инкремента не=0,

; то переход в ПП PAUSE_D.

; Если результат инкремента =0, то программа

; исполняется далее.

;=====================================================

; Формирование интервала времени сканирования.

;=====================================================

movlw .245 ; Закладка константы .245 в регистр W.

movwf SecH ; Копирование .245 из регистра W 143

; в регистр SecH.

movlw .255 ; Закладка константы .255 в регистр W.

movwf SecL ; Копирование .255 из регистра W

; в регистр SecL.

;--------------------------------------------------------------------------------

; Разрешение прерываний INT.

;--------------------------------------------------------------------------------

movlw .144 ; Закладка константы .144 в регистр W.

movwf IntCon ; Копирование .144 (1001 0000) из регистра W

; в регистр IntCon

; (разрешение прерываний по входу INT).

;--------------------------------------------------------------------------------

PAUSE clrwdt ; Сброс WDT.

decfsz SecL,F ; Декремент содержимого младшего разряда

; счетчика SecL.

goto PAUSE ; Если результат декремента не=0,

; то переход в ПП PAUSE.

incfsz SecH,F ; Если результат декремента =0, то инкремент

; старшего разряда счетчика SecH.

goto PAUSE ; Если результат инкремента не=0,

; то переход в ПП PAUSE.

; Если результат инкремента =0,

; то программа исполняется далее.

;--------------------------------------------------------------------------------

; Изменение направления ретрансляции.

;--------------------------------------------------------------------------------

clrf IntCon ; Запрет всех прерываний.

incf Trigg,F ; Увеличение на 1 (инкремент) содержимого

; переключателя направления ретрансляции.

goto START ; Переход на новый цикл сканирования.

;*********************************************************

End

;*********************************************************

;Программа организации прерывания по входу RB0

;*******************************************************************

; Begin

R0L  EQU  0xC

R0H  EQU  0xD

R1L  EQU  0xE

R1H  EQU  0xF

R2L  EQU  0x10

R2H  EQU  0x11

R3L  EQU  0x12

R3H  EQU  0x13

R4L  EQU  0x14

R4H  EQU  0x15

R5L  EQU  0x16

R5H  EQU  0x17

W_TEMP  EQU  0x4F

STATUS_TEMP  EQU  0x4E

ORG  0x0000

BCF  PCLATH,3

BCF  PCLATH,4

GOTO  L0001

ORG  0x0004

MOVWF  W_TEMP

SWAPF  STATUS,W

CLRF   STATUS

MOVWF  STATUS_TEMP

CALL   L0002

SWAPF  STATUS_TEMP,W

MOVWF  STATUS

SWAPF  W_TEMP,F

SWAPF  W_TEMP,W

RETFIE

L0001:

; 1: TRISA = 0x00 'set all PORTA pins as outputs

BSF   STATUS,RP0

CLRF   0x05

BCF   STATUS,RP0

; 2: PORTA = 0xff 'make all PORTA pins high

MOVLW  0xFF

MOVWF  0x05

; 3: INTCON.INTE = 1 'enable RB0/INT interrupts

BSF  0x0B,4

; 4: INTCON.GIE = 1 'enable all un-masked interrupts

BSF  0x0B,7

; 5: End

L0003: GOTO  L0003

; 6:

; 7: On Interrupt 'interrupt routine

L0002:

; 8: PORTA = PORTA - 1 'decrement the value on PORTA

MOVLW  0x01

SUBWF  0x05,W

MOVWF  0x05

; 9: INTCON.INTF = 0 'enable new RB0/INT interrupts

BCF  0x0B,1

; 10: Resume

RETURN

; End of program

L0004: GOTO   L0004

; End of listing

END

Приложение 2

;****************************************************************************

;Сложение и вычитание с двойной точностью

;*****************************************************************************

;Сложение: АССb (16 бит)+АССа (16 бит) =АССb (16 бит)

;(А) Первый операнд помещается в байты АССаL0 и АССаHI (16 бит)

;(В) Второй операнд помещается в байты АССbL0 и АССbHI (16 бит)

;(C) Вызов D_add

;(D) Результат помещается в байты АССbL0 и АССbHI (16 бит)

;Показатели

;размер памяти: 07

;Количество циклов: 08

;*****************************************************************************

;Вычитание: АССb (16 бит)-АССа (16 бит) =АССb (16 бит)

;(А) Первый операнд помещается в байты АССаL0 и АССаHI (16 бит)

;(В) Второй операнд помещается в байты АССbL0 и АССbHI (16 бит)

;(C) Вызов D_add

;(D) Результат помещается в байты АССbL0 и АССbHI (16 бит)

;Показатели

;размер памяти: 14

;Количество циклов: 17

;****************************************************************************

ACCaL0 EQU  H’20’

ACCaHI EQU  H’21’

ACCbL0 EQU  H’22’

ACCbHI EQU  H’23’

;

include <p16f877.inc>

org 0x00h

;****************************************************************************

;Вычитание с двойной точностью (ACCbACCa =ACCb)

D_sub call neg_A; инверсия знака байта АССа, затем сложение

;****************************************************************************

;Сложение с двойной точностью (АССb+ACCa=ACCb)

D_add MOVF ACCaL0,0

 ADDWF ACCbL0,1 ;прибавление младшего байта

 BTFSC STATUS,C;добавление переноса

INCF  ACCbHI

 MOVF ACCaHI,0

 ADDWF ACCbHI,1 ;прибавление старшего байта

 RETLW 0

;

neg_a  COMF ACCaL0 ;Меняем знак байта АССа(-АССа=АССа)

 INCF  ACCaL0

 BTFSC STATUS,Z

 DECF ACCaHI

 COMF ACCaHI

 RETLW 0

;*****************************************************************************

;Тестовая программа

;*****************************************************************************

;Загрузка  констант в АССа и АССb для тестирования

loadAB MOVLW 1

 MOVWF ACCaHI

 MOVLW 0FF

 MOVWF ACCaL0

 MOVLW 07F

 MOVWF ACCbHI

 MOVLW 0FF

 MOVWF ACCbL0

 RETLW 0

main  NOP

 CALL loadAB ;ACCb+ACCa=ACCb

 CALL D_add ;ACCb=81FE

 CALL  loadAB ;ACCb-ACCa=ACCb

 CALL D_sub ;ACCb=7E00

 GOTO  main

 END  

Приложение 3

;беззнаковое умножение 8-разрядных чисел

MN1 EQU H'20' ;МНОЖИМОЕ

MN2 EQU H'21' ;МНОЖИТЕЛЬ

H_BYTE EQU H'22' ;старший байт результата

L_BYTE EQU H'23' ;младший байт результата

COUNT EQU H'24' ;счетчик разрядов

START

MOVLW 0FF ;контрольная константа = 255

MOVWF MN2 ;записать в множимое

MOVLW 0FF ;контрольная константа = 255

MOVWF MN1 ;записать в множитель

CALL UMN ;перейти на подпрограмму умножения

 GOTO $

;

UMN

CLRF STATUS

MOVLW D'08'

 MOVWF COUNT ;загрузить количество разрядов

CLRF H_BYTE ;очистить регистры результата

CLRF L_BYTE

MOVF MN1,0 ;множимое в аккумулятор

BCF STATUS,C;очистить бит переполнения

CYC

RRF MN2,1 ;сдвиг множителя вправо

BTFSC STATUS,C;если не было переполнения пропустить

ADDWF H_BYTE,1;иначе сложить MN1+MN2

RRF H_BYTE,1;сдвиг вправо стврший байт результата

RRF L_BYTE,1;сдвиг вправо младший байт результата

DECFSZ COUNT,1 ;если все 8 бит опрошены пропустить

GOTO CYC ;иначе повторить цикл

RETLW 0 ;возврат из подпрограммы с 0 в аккумуляторе

END

;деление 16-разрядных чисел

; АССВ(16 БИТ)/АССА(16 БИТ)=АССВ(16 БИТ)

;остаток помещается в АССС(16 бит)

;SIGNED определяет версию деления-

;SIGNED=1 - для версии деления со знаком

;SIGNED=0 - для версии деления без знака

; деление с двойной точностью (16 бит/16 бит=16 бит) b=b/a+c

; предварительно надо убедиться, что делимое больше, чем делитель

ACCAL0 EQU H'20'

ACCAHI EQU H'21'

ACCBL0 EQU H'22'

ACCBHI EQU H'23'

ACCCL0 EQU H'24'

ACCCHI EQU H'25'

ACCDL0 EQU H'26'

ACCDHI EQU H'27'

TEMP EQU H'28'

SIGN EQU H'29'

SIGNED EQU H'01'

ORG H'00'

GOTO MAIN

D_DIVS

BTFSC SIGNED,0;если  дел без зн, пропустить следующую команду

CALL S_SIGN;если со зн. перейти на определение знака результата

;

CALL SETUP;к подпр записи делимого во временный регистр АССD

CLRF ACCCHI ;очистить регистр остатка

CLRF ACCCL0

DLOOP BCF STATUS,C;очистить бит переполнения

RLF ACCDL0,1;сдвиг влево делимого

RLF ACCDHI,1

RLF ACCCL0,1;сдвиг влево остатка

RLF ACCCHI,1

MOVF ACCAHI,0;делитель в аккумулятор

SUBWF ACCCHI,0;вычесть из остатка делитель,проверяем а>c?

BTFSS STATUS,Z;если a=c пропустить следующую команду

GOTO NOCHK ;перейти к подпрограмме деления

MOVF ACCAL0,0

SUBWF ACCCL0,0;вычесть из остатка делитель для сташего байта

NOCHK BTFSS STATUS,C; если с>а, пропустить следующую команду

GOTO NOGO ;перейти к порограмме деления

MOVF ACCAL0,0;

SUBWF ACCCL0,1;выч из остатка делитель для младшего байта (с-а)=с

 BTFSS STATUS,C;

DECF ACCCHI,1

MOVF ACCAHI,0

SUBWF ACCCHI,1

BSF STATUS,C; устанавливаем бит переноса и сдвигаем в младший разряд

NOGO RLF ACCBL0,1

RLF ACCBHI,1

 DECFSZ TEMP,1 ;организация цикла по всем 16-ти разрядам

GOTO DLOOP

BTFSC SIGNED,0;если беззнак деление пропустить следующую команду

BTFSS SIGN,7;если знаковое деление проверить знак отрицательный?

RETLW 0 ;"нет", то возврат с 0 в аккумуляторе

GOTO NEG_A ;"да", то перейти на изменение знака

;подпрограмма установки начальных условий

SETUP

MOVLW D'16' ;количество битов 16

MOVWF TEMP

MOVF ACCBHI,0;переписать делимое в регистр D

 MOVWF ACCDHI

MOVF ACCBL0,0

MOVWF ACCDL0

 CLRF ACCBHI ;очистить регистр В для результата (частного)

CLRF ACCBL0

RETLW 0

;подпрограмма изменения знака -а=а

NEG_A COMF ACCAL0,1

INCF ACCAL0,1

BTFSC STATUS,Z

DECF ACCAHI,1

 COMF ACCAHI,1

RETLW 0

;подпрограмма деления со знаком

S_SIGN MOVF ACCAHI,0

XORWF ACCBHI,0

MOVWF SIGN

BTFSS ACCBHI,7;если "-" меняем знак байта А0СВ

GOTO CHEK_A

COMF ACCBL0,1;меняем знак

INCF ACCBL0,1

BTFSC STATUS,Z

DECF ACCBHI,1

COMF ACCBHI,1

CHEK_A BTFSS ACCAHI,7;если "-" то меняем знак байта АССА

 RETLW 0

GOTO NEG_A

;тестовая программа

MAIN

MOVLW H'80'

MOVWF ACCAHI ;загрузка "-2" ACCA

MOVLW H'02'

MOVWF ACCAL0

MOVLW H'00'

MOVWF ACCBHI

MOVLW H'08'

MOVWF ACCBL0 ;загрузка "8" в АССВ

 CALL D_DIVS ;перейти к подпрограмме деления

GOTO $

END

СОДЕРЖАНИЕ

Лабораторная работа №1………………………………………………….3

Лабораторная работа №2…………………………………………………..13

Лабораторная работа №3…………………………………………………15

Лабораторная работа №4…………………………………………………..21

Лабораторная работа №5…………………………………………………31

Лабораторная работа №6…………………………………………………..32

Лабораторная работа №7………………………………………………….33

Лабораторная работа №8…………………………………………………...34

Список литературы………………………………………………………….36

Приложение 1………………………………………………………………..38

Приложение 2………………………………………………………………..44

Приложение 3………………………………………………………………..46

Сводный план 2011 г., поз. 23

Акшолпан Ауелбековна Копесбаева

ПРОГРАММНЫЕ СРЕДСТВА МИКРОПРОЦЕССОРНЫХ КОНТРОЛЛЕРОВ УПРАВЛЕНИЯ В ЗАДАЧАХ АВТОМАТИЗАЦИИ

Методические указания к лабораторным работам

для магистрантов всех форм обучения специальности

6М070200 – Автоматизация и управление

Редактор Л.Сластихина

Специалист по стандартизации  Н.К.Молдабекова

Подписано в печать __. __. __.                            Формат 60х84  1/ 16

Тираж     50  экз.      Бумага типографическая № 1

Объем  3 уч.-изд. л.     Заказ _____. Цена ____ тг.

Копировально-множительное бюро

Некоммерческого акционерного общества

«Алматинский университет энергетики и связи»

050013 Алматы, Байтурсынова, 126

PAGE   \* MERGEFORMAT 50


 

А также другие работы, которые могут Вас заинтересовать

35792. Выбор профессии 168 KB
  Появление профессии Определение интересов и склонностей Обоснование выбора Алгоритм профессион. самопределения Формула профессии Выявление индивидуальных характер. Выбор профессии – это большая ответственность которую очень важно осознать как можно раньше.
35794. Кружка. Творческий проект 158.5 KB
  4 Технологическая карта № детали № операции Название операции Эскиз Инструмент и приспособления 1 1 Выбрать заготовку с учётом припуска на обработку Линейка 2 Прострогать базовую сторону Верстак рубанок 3 Разметить и прострогать заготовку по толщине Линейка рубанок карандаш 4 Разметить и прострогать по ширине Линейка рубанок карандаш 5 Отторцевать заготовку Угольник карандаш подкладка 6 Разметить и отпилить заготовку по длине Верстак линейка угольник карандаш ножовка 7 Разметить заготовку по чертежу Линейка угольник карандаш...
35795. Вышивка своими руками. Творческий проект 1.18 MB
  Вышивание крестом – один из самых распространенных видов народного искусства. История возникновения вышивки крестом уходит далеко в глубь веков когда появился первый стежок сделанный первобытными людьми при скреплении шкуры убитого мамонта. Материалом для вышивки крестом служили: жилы животных нити льна хлопка конопли шелка шерсти а так же применяли натуральный волос. Особой популярности вышивка крестом достигла в Западной Европе в XVI столетии.
35796. Метод проектів на уроках трудового навчання (обслуговуюча праця) 461 KB
  Проектна технологія — практика особистісно зорієнтованого трудового навчання в процесі конкретної навчально-трудової діяльності учня, на основі його вільного вибору та з урахуванням інтересів. У свідомості учня це має такий вигляд: «Я знаю, для чого мені потрібно все, що я пізнаю, і де я можу ці знання застосувати». Для педагога це прагнення знайти розумний баланс між академічними і прагматичними знаннями, уміннями та навичками.
35797. ”Садово-городній інвентар” Прилад для виготовлення живильних горщиків 565.5 KB
  КОНСТРУКТОРСЬКИЙ ЕТАП Розробка конструкції прилада для виготовлення живильних горщиків. 8 Технологія виготовлення виробу ТЕХНОЛОГІЧНИЙ ЕТАП ЗАКЛЮЧНИЙ ЕТАП. Метою проекту є створення приладу для виготовлення живильних горщиків який здатен задовольнити попит найвибагливіших споживачів.
35799. Садово-огородній інвентар 9.92 MB
  ОРГАНІЗАЦІЙЙНО-ПІДГОТОВЧИЙ ЕТАП Крапельне зрошення: історія і сьогодення Популярність цього методу зростає а разом з цим виникають нові запитання зацікавлені читачі прагнуть більш повного детального розгляду цієї технології. Винахідник крапельного зрошення О. Перші досліди із крапельним зрошенням к. Проте обмеженість водних ресурсів непридатність інших методів зрошення через високу мінералізацію води в цій країні змусили науковців “землі обітованоїâ€ подолати цю проблему і вже в 60ті роки було запатентовано першу систему...
35800. Творчий проект на тему: “Вишивка у інтер’єрі” 371 KB
  Обґрунтування виробу кращої ідеї для реалізації проекту на основі проведених досліджень. Створення клаузори виробу. Визначення отриманої технології виготовленого виробу. Складання технологічної картки виготовлення виробу.