Главная » Просмотр файлов » Лабораторные работы 1-5-Драгунов

Лабораторные работы 1-5-Драгунов (538456), страница 4

Файл №538456 Лабораторные работы 1-5-Драгунов (Методические указания к лабораторным работам 1, 2, 3, 4, 5) 4 страницаЛабораторные работы 1-5-Драгунов (538456) страница 42015-07-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 4)

clrf rdel1

clrf xxdh

clrf reg

clrf cif0

clrf cif1

movlw 0x09 ; проверка способа деления

movwf xxh ; начинается с 0x0A

start CALL RX_KEY ; ожидание нажатия клавиши

incf xxh ; следующее число hex

movlw 0x00 ; вывод на 1-ю строку

CALL LCD_SET ; числа hex

movf xxh,w

CALL LCD_HEX

movlw 0x33 ; умножить на CD

mulwf xxh,1

movff PRODH,rdel1 ; старший байт -> rdel1

bcf STATUS,0,0 ; обнулить флаг C

rrcf rdel1 ; сдвинуть результат вправо на 1 бит

;bcf STATUS,0,0 ; обнулить флаг C

;rrcf rdel1 ; сдвинуть результат вправо на 1 бит

;bcf STATUS,0,0 ; обнулить флаг C

;rrcf rdel1 ; сдвинуть результат вправо на 1 бит

; результат сдвинут на 3 бита вправо

movlw 0x0A ; умножение результата на 0x0A

mulwf rdel1,1

movff PRODL,reg ; запомнить результат для нахождения остатка

movf reg,w ; reg -> WREG

subwf xxh,0,1 ; xxh - reg, результат -> WREG

movwf cif0 ; запоминание последней цифры числа dec

movlw 0x0A ; запись в WREG 0x0A для сравнения

cpfslt rdel1 ; пропустить, если rdel1 < WREG(0x0A)

goto m1 ; переход на повторное деление

swapf rdel1,0,1 ;

iorwf cif0,1,1 ; логическое сложение, получение искомого

; 2-значного десятичного числа

movlw 40 ; вывод на 2-ю строку

CALL LCD_SET ; числа dec

movf cif0,w

CALL LCD_HEX

goto start ; замыкание цикла

m1 movlw 0x33 ; умножить rdel1 на CD

mulwf rdel1,1

movff PRODH,xxdh ; старший байт -> xxdh

bcf STATUS,0,0 ; обнулить флаг C

rrcf xxdh ; сдвинуть результат вправо на 1 бит

;bcf STATUS,0,0 ; обнулить флаг C

;rrcf xxdh ; сдвинуть результат вправо на 1 бит

;bcf STATUS,0,0 ; обнулить флаг C

;rrcf xxdh ; сдвинуть результат вправо на 1 бит

; результат сдвинут на 3 бита вправо

movff xxdh,cif1 ; запоминание старшей цифры числа dec

movlw 0x0A ; умножение результата на 0x0A

mulwf xxdh,1

movff PRODL,reg ; запомнить результат для нахождения остатка

movf reg,w ; reg -> WREG

subwf rdel1,0,1 ; rdel1 - reg, результат -> WREG

movwf reg ; результат разности -> reg

swapf reg,0,1

iorwf cif0,1,1 ; логическое сложение, получение

; 2-х последних цифр числа dec

movlw 40 ; вывод на 2-ю строку

CALL LCD_SET ; числа dec

movf cif1,w

CALL LCD_HEX

movf cif0,w

CALL LCD_HEX

goto start ; замыкание цикла

end

Приведённая программа является демонстрационной и переводит в десятичную систему числа начиная с 0Ah и далее увеличивает значение переводимого числа на 1 , при нажатии любой клавиши на клавиатуре стенда.

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

Варианты заданий к лабораторным работам

Варианта

Коды клавиш

1

A,В,С,D ,E, F,10,11,12,13,14,15,16,17,30,31

2

18,19,1A,1B,1C,1D,32,33,1E,1F,20,21,22,23,34,35

3

24,25,26,27,28,29,A,B,2A,2B,2C,2D,2E,2F,13,14

4

32,33,50,51,52,53,54,55,56,57,58,59,5A,5B,5C,5D

5

5E,5F,60,61,62,63,64,65,66,67,68,69,6A,6В,6С,6D

6

6E,6F,70,71,72,73,74,75,76,77,78,79,7A,7B,7C,7D

7

7E,7F,80,81,82,83,84,85,86, 87, 88, 89, 8A, 8B, 8C, 8D

8

90,91,92,93,94,95,96,97,9A,9B,9C,9D,9E,9F,A0,A1

9

A2,A4,A3,A5,A6,A7,A8,A9,A,В,С,D ,E, F,10,11

10

12,13,14,15,16,17,30,31,18,19,1A,1B,1C,1D,32,33

11

1E,1F,20,21,22,23,34,35,A,В,С,D ,E, F,10,11

12

2A,2B,2C,2D,2E,2F,13,14,18,19,1A,1B,1C,1D,32,33

13

56,57,58,59,5A,5B,5C,5D,24,25,26,27,28,29,A,B,

14

66,67,68,69,6A,6В,6С,6D,32,33,50,51,52,53,54,55

15

76,77,78,79,7A,7B,7C,7D,5E,5F,60,61,62,63,64,65

16

86, 87, 88, 89, 8A, 8B, 8C, 8D,6E,6F,70,71,72,73,74,75

17

9A,9B,9C,9D,9E,9F,A0,A1,7E,7F,80,81,82,83,84,85

18

A,В,С,D ,E, F,10,11,90,91,92,93,94,95,96,97

19

18,19,1A,1B,1C,1D,32,33,A2,A4,A3,A5,A6,A7,A8,A9

20

66,55,5E,71,70,6D,A2,A,B,C,9A,7E,A9,18,19,1E

21

81,82,83,84,85,2A,2B,2C,18,19,1A,1B, 5A,5B,5C,5D

22

E, F,10,11,E, F,10,11,5A,5B,5C,5D,59,5A,5B,5C

23

16,17,30,31, 8A, 8B, 8C, 8D,62,63,64,65,7A,7B,7C,7D

24

9A,9B,9C,9D,9E,9F,A0,A1,A2,A4,A3,A5,A6,A7,A8,A9

25

7E,7F,80,81, A,В,С,D,76,77,78,79,7A,7B,7C,7D

26

24,25,26,27,28,29,A,B,,9A,9B,9C,9D,9E,9F,A0,A1

В отчёт по данной лабораторной работе включается:

  1. Краткая теоретическая часть

  2. Исходный текст программы

  3. Результат перевода числа

  4. Проверка машинного перевода в ручном (рукописном) варианте.

Контрольные вопросы:

  1. Где сохраняется результат команды умножения?

  2. Объясните почему перед командой сдвига rrcf rdel1 используется команда

bcf STATUS,0,0

  1. Объясните назначение команды cpfslt rdel1

  2. Объясните назначение команды swapf rdel1,0,1

  3. Объясните назначение команды iorwf cif0,1,1

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

Изучение программы бегущая строка

Краткая теоретическая часть

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

Связь памяти программ с памятью данных осуществляется через системный регистр TABLAT .Начало блока выводимой информации задаётся с помощью трёх системных регистров TBLPTRU, TBLPTRH, TBLPTRL. Поскольку начало информационного блока находится по адресу 000200h. Начальная позиция информационного блока задаётся с помощью строки org 200h. Поскольку длинна информационного блока не должна превышать FFh , то в цикле изменяется только содержимое системного регистра TBLPTRL.

Команда tblrd*+ осуществляет побайтное считывание из Flash памяти программы в системный регистр TABLAT, увеличивая на 1 системный регистр TBLPTRL.

В этой программе также используются макросы. Макрос представляет из себя набор команд, заданный в виде одной команды, мнемонику которой определяет пользователь, составляющий макросы.

В нашем случае используется макрос cmp reg5,1B., который сравнивает содержимое регистра reg5 с константой 1B, которая в данном случае представляет из себя ASCII код клавиши ESC.

Второй макрос print string 001 позволяет вывести строку символов, которая записывается начиная с метки string 001. db – означает побайтный вывод, а содержимое берется в кавычки. После “,” записывается 0, обозначающий конец выводимой информации.

Исходный текст программы

LIST P=18F452, F=INHX32

#include <P18F452S.INC>

reg0 equ 080h

reg1 equ 081h

reg2 equ 082h

reg3 equ 083h

reg4 equ 084h

reg5 equ 085h

org 100h

Start

movlw 0 ;Установка позиции дисплея

;00h=начало первой строки

;40h= - второй строки

call LCD_SET ;Команда на установку дисплея

print string001 ;Вывести строку символов до 0

;с текущей позиции дисплея

movlw 40 ;Установка позиции дисплея

call LCD_SET ;Начало второй строки

movlw '@' ;Вывод символа в текущую позицию дисплея

call LCD_DATA

main_loop ;Начало основного цикла

call RX_KEY ;Ждём нажатия на клавишу

movwf reg5 ;Помещаем код клавиши во врем. регистр

cmp reg5,1B ;Сравниваем в.р. с кодом 1В (ESC)

bz strin01 ;если нет, если да то переход на ....

movf reg5,w ;то выводим символ нажатой клавиши

call LCD_DATA ;на дисплей

goto main_loop ;Возврат на начало цикла

strin01

;ВНИМАНИЕ: в этой программе строка символов,

;для вывода как бегущая строка, находится по адресу 200h

movlw .55 ;Задаём кол-во символов в строке

movwf reg0 ;во в.р.

clrf TBLPTRU ;Очистить старший адрес т.к. он не исп. ; (чтобы не мешал ;)

clrf reg2 ;в.р. позиции в строке

cik02 movf reg2,w ;Берём из в.р. позицию в строке

movwf TBLPTRL ;Помещаем как младший адрес

movlw 2 ; 2 как старший адрес

movwf TBLPTRH ;т.к. адрес строки 200h

movlw 0

call LCD_SET

movlw .16 ;заносим в в.р.кол-во выводимых символов

movwf reg1 ;за один раз.

cik001 tblrd*+ ;читаем из Flash символ по адресу 0002XXh

;TBLPTRU=00h

;TBLPTRH=02h

;TBLPTRL=XXh

;в TABLAT

movf TABLAT,w ;Помещаем символ в W

call LCD_DATA ;Выводим символ....

decfsz reg1 ;повторяем этот цикл 16 раз

bra cik001 ;пока не ноль.

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

incf reg2,f ;переход позиции на сл. символ.

decfsz reg0 ;повторяем вывод до конца символов

bra cik02 ;в строке

bra Start ;переход на старт программы

pause

movlw .255

movwf reg4

pz02

movlw .255

movwf reg3

pz01 nop

nop

nop

nop

nop

nop

nop

nop

nop

nop

decfsz reg3

goto pz01

; bra pz01

decfsz reg4

bra pz02

return

string001 db "INIT_OK SET",0

; dw 0000h

; dd 00000000h

; dq 0..0h

org 200h

string002 db " STUDENT GRUPPI 6-UI-7 SOKOV ALEKS ",0

end ; Конец текста программы.

Варианты заданий к лабораторной работе

Варианта

клавиша

Варианта

клавиша

1

1

14

x

2

n

15

z

3

z

16

p

4

m

17

5

5

c

18

6

6

h

19

y

7

7

20

q

8

v

21

8

9

9

22

b

10

2

23

a

11

f

24

c

12

3

25

d

13

4

26

e

Каждый студент изменяет текст программы таким образом, чтобы неподвижная информация соответствовала его фамилии, а при нажатии, соответствующую варианту бегущей строкой выводился текст типа: “Фамилия Имя Отчество - студент факультета АиУ МГТУ МАМИ ”

В отчёт по данной лабораторной работе включается:

  1. Краткая теоретическая часть

  2. Исходный текст программы

  3. Результат бегущей строки преподаватель проверяет визуально на учебном стенде.

Контрольные вопросы:

  1. Какого должно быть значение регистров TBLPTRU, TBLPTRH, TBLPTRL если начало текста бегущей строки будет с адреса 0003FAh?

  2. Как необходимо продолжить макрос print , если неподвижная информация обозначена меткой student?

  3. Какие изменения необходимо внести в программу , чтобы перед выводом бегущей строки во второй строке индикатора был выведен порядковый номер студента?

  4. Объясните назначение команды bz strin01?

  5. Объясните назначение команды clrf reg2?

ПРИЛОЖЕНИЕ А

(обязательно)

Характеристики

Тип файла
Документ
Размер
618,5 Kb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6390
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее