Лекция № 6 (1085699)
Текст из файла
ЛЕКЦИЯ № 6.
Задание:
На основе платы, используя USART, вывести заданное сообщение. Принять символы с клавиатуры ПК и, в зависимости от принятого символа, перейти к исполнению программы измерения аналогового сигнала с помощью АЦП или вывода метки времени, или записи в последовательную память с последующим выводом на USART.
Структурная схема:
TITLE "FAMILY_NOVEMBER_2007_ KIT – 03,USART_ADC_8583.SIRIEL MEMORY" ; SIRIEL MEMORY – означает использование последовательной памяти.
LIST P = 16F873
#INCLUDE "P16F873.INC" ; включить на внешний файл.
_ _CONFIG _ ……………… ; установка битов конфигурации микроконтроллера.
; определение констант (если есть константы, лучше их определить в одном месте).
KOL_IZM EQU .10 ; количество измерений равно 10.
…………………..
; определение переменных.
CBLOCK 0x20 ; указание стартового адреса для первой именованной константы.
COUNT_SYMBOL ; COUNT_SYMBOL будет иметь шестнадцатеричный адрес 20.
BUFER ; BUFER будет иметь шестнадцатеричный адрес 21.
SAVE_W ; SAVE_W будет иметь шестнадцатеричный адрес 22.
THO ; THO будет иметь шестнадцатеричный адрес 23.
HUNS ; HUNS будет иметь шестнадцатеричный адрес 24.
DESC ; DESC будет иметь шестнадцатеричный адрес 25.
ONES ; ONES будет иметь шестнадцатеричный адрес 26.
COUNT_IZM ; COUNT_IZM будет иметь шестнадцатеричный адрес 27.
………………
ENDC ; конец списка именованных констант.
ORG 0x000 ; откуда начинаем.
GOTO MAIN ; безусловный переход на основную программу.
……………………..
SEND_MESSAGE: ; подпрограмма вывести сообщение.
CALL SELECT_MES ; вызов подпрограммы SELECT_MES. BANKSEL COUNT_SYMBOL ; выбор банка, где находится COUNT_SYMBOL. INCF COUNT_SYMBOL ; увеличение на единицу COUNT_SYMBOL.
MOVWF BUFER ; пересылка значения из W в буферный регистр BUFER.
MOVF BUFER, F ; перес. знач. из буфера в буфер для опред. 0 или нет.
BTFSC STATUS, Z ; пров.приз.нуля (Z): если '1',то $+1, если '0',то $+2.
GOTO MES_END ; безусловный переход на метку MES_END.
CALL SEND_USART ; вызов подпрогр.SEND_USART (перес. на монитор).
GOTO SEND_MESSAGE ; переход в начало подпрограммы.
MES_END:
RETURN ; возврат из подпрограммы.
SELECT_MES: ; подпрограмма выбора сообщения.
BANKSEL COUNT_SYMBOL ; выбор банка, где находится COUNT_SYMBOL.
MOVF COUNT_SYMBOL, W ; пересылка в W значения из COUNT_SYMBOL.
ADDWF PCL, F ; выполняется сложение содержимого W и PCL.
DT 0x20, 0x20 "\N\R USART is ready ";сообщ.:2 пробела, перевод строки, возврат каретки...
RETLW 0x00 ; возврат из подпрограммы c загрузкой 0x00 в W.
DT 0x20, 0x20 "\N\R Press key A, T, M", 0 ; вывод сообщ.: 2 проб…,нажм.1 из 3 клавиш.
DT "\N\R You have pressed key", 0x20, 0x20 ; … вы нажали клав.,2 проб.и знач.этой клав.
RETLW 0x00 ; возврат из подпрограммы c загрузкой 0x00 в W.
RETURN ; возврат из подпрограммы.
Пояснение:
В подпрограмме выбора сообщения SELECT_MES:
1.) определяем не само значение, а адрес, где лежит это значение.
2.) при выводе сообщений используется директива DT, которая порождает на каждый символ директиву. Вызов любого символа или строки осуществляется организацией:
-
входом в подпрограмму.
-
выходом из подпрограммы (RETLW).
Директива DT генерирует серию команд RETLW для 8-разрядных значений символов. Каждое значение символа сохраняется в отдельной команде RETLW:
RETLW 0x20
RETLW 0x20
RETLW 0x0A
RETLW 0x0D
RETLW 'U'
RETLW 'S'
…………………...
3.) после директивы DT 0x20, 0x20 "\N\R Press key A, T, M", 0 ; - не сбрасываем COUNT_SYMBOL для того, чтобы при обращении к подпрограмме, она начала выполняться там, где закончили.
Примечание:
Таких подпрограмм может быть несколько. Их можно выводить в параллель на ЖКИ и монитор. При этом необходимо помнить, что на ЖКИ нет перевода строки и возврата каретки.
RECEIVE: ; подпрограмма приема кода нажатой клавиши.
BANKSEL RCSTA ; отыщем банк, где нах. рег.управ. и статуса приемника RCSTA.
BSF RCSTA, CREN ; уст. CREN =1 в регистре RCSTA (приём разрешен).
BANKSEL PIR1 ; отыщем банк, где нах. регистр флагов прерываний PIR1.
BCF PIR1, RCIF ; сброс бита RCIF в регистре PIR1 (если там случайно1).
BTFSS PIR1, RCIF ; пров. знач. бита RCIF: если '1', то $+2, если '0', то $+1.
GOTO $ −1 ; переход на предыдущую команду.
RETURN ; возврат из подпрограммы.
Пояснение:
Все запросы прерываний устанавливаются аппаратно, а сбрасываются – программно. Поэтому в подпрограмме необходимо предусмотреть предварительный сброс бита RCIF в регистре флагов прерываний PIR1.
TEST_RECEIVE: ; подпрогр. тестовый прием кода нажатой клавиши.
BANKSEL PIR1 ; отыщем банк, где нах. регистр флагов прерыв. PIR1.
BCF PIR1, RCIF ; сброс бита RCIF в рег. PIR1(если там случайно1).
CALL SEND_MESSAGE ; вызов подпрограммы SEND_MESSAGE.
CALL ECHO ; вызов подпрограммы ECHO.
RETURN ; возврат из подпрограммы.
ECHO:
BANKSEL RCREG ; отыщем банк, где нах. рег. данных прием. USART (RCREG).
MOVF RCREG, W ; пересылка в W значения из регистра RCREG.
CALL SEND_USART ; вызов подпрограммы SEND_USART.
RETURN ; возврат из подпрограммы.
VIBOR_SYMBOL: ; подпрограмма управления по нажатой клавише.
MOVWF SAVE_W ; сохраним значение W в SAVE_W.
SUBLW 'A' ; т.к. сравнения нет, то из 'A' вычитаем содержимое рег. W.
BTFSC STATUS, Z ; пров. приз.нуля (Z): если '1', то $+1, если '0', то $+2.
CALL ADC_ON ; вызов подпрограммы какого то одного измерения.
MOVF SAVE_W, W ; пересылка в W значения из SAVE_W.
SUBLW 'T' ; т.к. сравнения нет, то из ' T ' вычитаем содерж. рег. W.
BTFSC STATUS, Z ; пров. приз.нуля (Z): если '1', то $+1, если '0', то $+2.
CALL RTC_ON ; вызов подпрограммы чтения из часов/календаря.
MOVF SAVE_W, W ; пересылка в W значения из SAVE_W.
SUBLW 'M' ; т.к. сравнения нет, то из 'M' вычитаем содержимое рег. W.
BTFSC STATUS, Z ; пров. приз.нуля (Z): если '1', то $+1, если '0', то $+2.
CALL MEMORY ; вызов подпрограммы MEMORY.
RETURN ; возврат из подпрограммы.
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.















