Автоматизация работы теплового насоса

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

Рубрика Коммуникации, связь, цифровые приборы и радиоэлектроника
Вид дипломная работа
Язык русский
Дата добавления 30.06.2012
Размер файла 2,5 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

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

Алгоритм работы начального загрузчика следующий:

Первый шаг: Инициализация оборудования

1. Установка запрета прерываний процессора.

2. Конфигурация PLLA

3. Конфигурация PLLB

4. Переключение MCK на PLLB/2

5. Активация отладочных сообщений в порту DBGU

6. Конфигурация таблицы памяти

7. Инициализация DataFlash

8. Инициализация NandFlash

9. Конфигурация портов ввода и вывода

10. Выход

Второй шаг: Загрузка содержимого из Nand flash в ОЗУ

Третий шаг: Распаковка содержимого ОЗУ

Четвертый шаг: Запуск приложения

6.3 Рекомендации по отладке

Подготовка программы для микроконтроллера выполняется на персональном компьютере и состоит из следующих этапов:

- создание текста программы;

- трансляция текста в машинные коды и исправление синтаксических ошибок;

- отладка программы, то есть устранение логических ошибок;

- окончательное программирование AVR-микроконтроллера.

Каждый из этапов требует использования специальных программных и аппаратных средств. Ниже перечислены наиболее доступные из них на сегодняшний день.

Базовые программные средства распространяются бесплатно, в то время как аппаратные средства имеют свою стоимость.

Следует отметить, что кроме бесплатных программных средств фирмы Атмел, позволяющих программировать только на языке ассемблера, фирмами IAR SYSTEMS, CMX CORPORATION, KANDA SYSTEMS Ltd. и другими разработаны средства поддержки программирования на языках высокого уровня С, а также операционные системы реального времени.

Результатом работы на первом этапе является файл .asm, который содержит текст программы (расширение имени файла обычно указывает на язык программирования) и является входным для программ-трансляторов, которые, в свою очередь, создают четыре новых файла: файл листинга (.lst), объектный файл (.obj), файл-прошивка FLASH-памяти (.hex), файл-прошивка EEPROM-памяти (.eep).

Файл листинга - это отчет транслятора о своей работе. В нем приводится транслируемая программа в виде исходного текста, каждой строке которого сопоставлены соответствующие двоичные коды. Кроме того, листинг содержит сообщения о выявленных ошибках.

Объектный файл используется в дальнейшем как входной для программы-отладчика и имеет специальный формат. Файлы прошивки FLASH и EEPROM блоков памяти предназначены для работы с любыми последовательными и параллельными программаторами AVR и имеют стандартные форматы.

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

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

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

Наиболее быстрый, не требующий пайки способ построения микропроцессорной системы - это приобретение комплекта AVR STARTER KIT фирмы Атмел, который содержит плату DEVELOPMENT BOARD, книгу "Development tool user's guide", дискеты с программным обеспечением, CD-ROM с полной документацией на все типы и многочисленными примерами прикладных программ. Плата DEVELOPMENT BOARD содержит панельки для подключения базовых типов микроконтроллеров в DIP-корпусах; источник питания; последовательный программатор, узел интерфейса RS-232 для связи с компьютером по асинхронному последовательному каналу; наборы из 8 светодиодов и из 8 кнопочных переключателей, которые можно подключать к выводам портов микроконтроллера; разъемы, через которые при помощи гибких кабелей можно наращивать микропроцессорную систему. Универсальность DEVELOPMENT BOARD удобна для обучения и для макетирования новых разработок.

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

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

Завершающим этапом программирования микроконтроллера является занесение в память уже отлаженной программы. Оно может быть выполнено так же, как и при отладке программы, через SPI-интерфейс. Однако необходимо помнить, что последовательное программирование младших моделей не позволяет изменять FUSE-биты микроконтроллера.

Если в микропроцессорной системе не предусмотрен SPI-интерфейс а также при серийном производстве для повышения скорости программирования большого числа микроконтроллеров удобно использовать программаторы, которые выполняют параллельное программирование. Следует отметить, что параллельные программаторы обычно являются универсальными устройствами и позволяют, кроме, работать и с другими типами микроконтроллеров, с постоянными запоминающими устройствами и микросхемами программируемой логики.

Заключение

В дипломной проекте был предложен вариант реализации локальной системы управления, позволяющей осуществлять работу теплового насоса вода-вода Dimplex WI 22TE . Для данной системы подобраны функциональные элементы, определены их передаточные функции в соответствии с техническими характеристиками выбранных устройств. Далее исследована система управления на устойчивость (включая дискретный элемент) и определены показатели ее качества, построены реальные логарифмические характеристики. На основе проделанной работы видно, что первоначальная система по своим техническим параметрам удовлетворяет параметрам, указанным в техническом задании на разработку автоматической системы (расхождение параметров укладывается в интервал ошибки 5%), система имеет запас устойчивости по фазе.

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

Список использованной литературы

Васюхин О.В. Экономическая часть дипломных разработок: методические указания для студентов технических специальностей всех форм обучения. - С-Пб.: ГИТМО (ТУ), СПб, 2011.

Гигиенические требования к видеодисплейным терминалам, персональным электронно-вычислительным машинам и организации работы (утв. постановлением Госкомсанэпиднадзора РФ от 14 июля 1996 г. N 14) Санитарные нормы СН 2.2.2.542-96

Дульнев Г.Н. Тепло- и массообмен в радиоэлектронной аппаратуре. М.: Высшая школа, 1984.

Иванова Н.Ю., Романова Е.Б., Проектирование печатных плат в САПР P-CAD 2002. Учебное пособие. . СПб ИТМО, 2004.

Надежность. Методика аналитической оценки безотказности изделий. / под ред. Фролковой Е.Г. - СПб ИТМО (каф.ПКС), 2007.

Новиков Ю.В. и др. Разработка устройств сопряжения для персонального компьютера типа IBM PC. М.: Эком, 1997.

Разевиг В.Д. Проектирование печатных лат в P-CAD 2010.М.:

Сучков Д.И., Проектирование печатных плат в САПР. М.,2007.

Тихонов Ю.Л. Разрботка пояснительной записки в курсовом и дипломном проектировании: Учеб.Пособие. - Л.:ЛИТМО, 2008.

Экономическая часть дипломных разработок. Методические указания. Санкт-Петербург: СПбГИТМО(ТУ), 2008.

Фрунзе А.В. Микроконтроллеры? Это же просто! Т.1. - М.: ООО “ИД СКИМЕН”, 2009 - 336 с., ил.П.Хоровиц, У.Хилл. Искусство схемотехники. - 5-е издание, переработанное. - М.: “Мир”,1998.

Степаненко И.П. Основы микроэлектроники: Учеб. пособие для вузов. - 2-е издание, переработанное и дополненное. - М.: Лаборатория Базовых Знаний, 2008. - 488 с., ил.

У.Титце, К.Шенк. Полупроводниковая схемотехника. Пер. с нем. - М.: “Мир”,2008 - 512 с., ил.

Баюков А. Б. Полупроводниковые приборы: Справочник. - М.: Энергоатомиздат, 1987 г - 744 с.

Каспер Эрни Программирование на языке ассемблера для микроконтроллеров семейства i8051:Москва 2004.

Интернет ресурсы www.analog.com

Kohonen T. 1984. Self-organization and associative memory. Series in Information Sciences, vol. 8. Berlin: Springer Verlag Werbos P. J. 1974.

Hebb D. 1961. Organization of behavior. New York: Science Edition.

Rumelhart D. E., Hinton G. E., Williams R. J. 1986. Learning internal reprentations by error propagation. In Parallel distributed processing, vol. 1, pp. 318-62. Cambridge, MA: MIT Press.

Приложение А

Листинг ПО контроллера

$nolist

$include(org.prc)

$include(pic_io.mac)

$include(lcd_io.mac)

$include(kbrd_io.mac)

$include(552asm.inc)

$list

LJMP START ; переход на основную программу

ORG 8003h ; подпрограмма обработки прерывания по INT0

RETI ; выход из подпрограммы обработки прерывания по INT0

ORG 8013h ; подпрограмма обработки прерывания по INT1

ADD A,TL1

JB PSW.0,M11 ; переход если поступило прерывание останавливающее таймер

SETB TCON.4

JMP M12

M11: CLR TCON.4 ; остановка таймера

MOV IEN0,#00h ; блокировка прерываний

MOV TL1,#00h ; обнуление счётчика импульсов

M12: RETI ; выход из подпрограммы обработки прерывания по INT1

START: CALL I2cinit ; проверка связи с сопроцессором

%PicGet(PIC_flg)

JC PROG

HALT: %SEND_STR_LCD(ERR1)

AJMP START

PROG: CLR CY ; обнулить бит переноса

LCALL LCDinit ; инициализировать ЖКИ

MOV ACC,(Scan_8_lines+INTenable+AutoRepeat_en+Beep_enable) ; (8 линий + прерывание по INT0)

LCALL initKBRD ; инициализировать клавиатуру

NEW: %SEND_CMD_LCD(01h) ; очистить экран

CALL D ; подпрограмма временной задержки

%PICGET(PIC_flg) ; проверка состояния сопроцессора

JNB ACC.KBRDRQU,NEW ; переход если клавиша не нажата

%PICGET(KBRD_STS) ; чтение кода нажатой клавиши

%KBRD_COD ; преобразование в коды ЖКИ

LCALL LCDD ; вывод на экран заданного числа MOV A,R0 ; преобразование кода нажатой клавиши в число

SUBB A,#30h

MOV R0,A

MOV R1,#64h

LCALL UM

MOV R6,A ; запись числа оборотов в регистры R6 и R7

MOV R7,B ; в регистре R7 - старшие разряды, а в R6 - младшие

M1: %PICGET(PIC_flg)

JNB ACC.KBRDRQU,M1

%PICGET(KBRD_STS)

%KBRD_COD

LCALL LCDD ; вывод на экран заданного числа

MOV A,R0 ; преобразование кода нажатой клавиши в число об/мин

SUBB A,#30h

MOV R0,A

MOV R1,#0Ah

LCALL UM

MOV R0,A

MOV R1,R6

LCALL SUM ; операция сложения тысяч и сотен об/мин в регистах R6 и R7

M2: %PICGET(PIC_flg)

JNB ACC.KBRDRQU,M2

%PICGET(KBRD_STS)

%KBRD_COD

LCALL LCDD ; вывод на экран заданного числа десятков об/мин

MOV A,R0

SUBB A,#30h

ADD A,R6 ; получение окончательного

MOV R6,A ; числа в регистрах R6 и R7

MOV R0,#00h

LCALL LCDD ; добавка нуля к полученному результату

OPR: MOV R3,R7 ; определение времени которое должно быть получено на счётчике

MOV R2,R6 ; между двумя импульсами от датчика скорости

MOV R0,#02h

LCALL DEL ; деление скорости на 2 (N/2)

MOV R0,R2

MOV R3,#27h

MOV R2,#10h

LCALL DEL ; 10000/(N/2)

MOV R1,R2

MOV R0,#05h

LCALL UM ; 10000*5/(N/2)

MOV R6,A ; занесение в регистры R6 и R7 времени

MOV R7,B ; с которым будет сравниваться время полученное на счётчике

MOV PWMP,7Fh ; задание начальной частоты повторения ШИМ

MOV TCON,#01h ;установка прерывания INT0 по уровню (переход из 1 в 0)

MOV IEN0,#81h ; снятие блокировки прерываний и разрешение прерывания по INT0

M3: JNB TCON.1,M3 ; ожидание прерывания по INT0 (включение двигателя)

MOV TMOD,#D1h ;Разрешение управлять счётчиком 1 от INT1 и выбор 1 - ого режима счётчика 1 и таймера 0

MOV TCON,#44h ; запуск счётчика 1 и установка прерывания INT1 по уровню (переход из 1 в 0)

MOV IEN0,#84h ; снятие блокировки прерываний и разрешение прерывания по INT1

M4: JNB TCON.3,M4 ; ожидание прерывания по INT1(с датчика скорости запускающего таймер)

M5: JNB TCON.3,M5 ;ожидание прерывания по INT1(с датчика скорости останавливающего таймер)

SRAV: MOV A,TH0 ; операция сравнения заданного времени и времени с счётчика

MOV B,TL0

CLR CY

SUBB A,R7

JC UVEL

MOV A,B

SUBB A,R6

JC UVEL

JMP UMEN

UVEL: MOV A,PWMP ; операция увеличения скважности импульсов

CJNE A,#01h,M6

DEC PWMP

JMP M6

UMEN: MOV A,PWMP ; операция уменьшения скважности импульсов

CJNE A,#FFh,M6

INC PWMP

M6: MOV R0,#02h

MOV R3,TH0

MOV R2,TL0

LCALL DEL

MOV R0,R2

MOV R3,#27h

MOV R2,#10h

LCALL DEL

MOV R0,R2 ; преобразование времени счётчика в текущую скорость

MOV R1,#05h ; двигателя и отображение её на ЖКИ

LCALL UM

MOV R4,A

MOV R5,B

MOV R0,#64h MOV R3,R5

MOV R2,R4

LCALL DEL

MOV A,R2

ADD A,#30h

MOV R0,#C0h

LCALL LCDC ; установка курсора в начало второй строки ЖКИ

MOV R0,A

LCALL LCDD ; вывод датчиков

MOV R1,R2

MOV R0,#64h

LCALL UM

MOV R3,R5

MOV R2,R4

LCALL VICH

MOV B,#0Ah

MOV A,R2

DIV AB

MOV R0,A

ADD A,#30h

MOV R0,A

LCALL LCDD ; вывод

MOV A,B

ADD A,#30h

MOV R0,A

LCALL LCDD ; вывод

MOV R0,#30h

LCALL LCDD ; добавка нуля к полученному результату

LJMP

UM: MOV A,R0 ; операция умножения

MOV B,R1

MUL AB

RET

SUM: MOV A,R0 ; операция сложения

ADD A,R1

MOV R0,A

MOV A,R2

ADDC A,R2

MOV R1,A

MOV R7,R1

MOV R6,R0

RET

DEL: MOV A,R3 ; операция деления

MOV B,R0

DIV AB

MOV R3,A

MOV A,B

MOV B,R0

MOV R1,#08h

dwb3: CLR C

XCH A,R2

RLC A

XCH A,R2

RLC A

JNC dwb4

MOV R4,#FFh

XCH A,R4

DIV AB

ADD A,R2

MOV R2,A

MOV A,R4

ADD A,B

MOV B,R0

dwb4: CJNE A,B,dwb1

dwb1: JC dwb2

SUBB A,B

INC R2

dwb2: DJNZ R1,dwb3

RET

VICH: CLR C ; операция вычитания

MOV A,R2

SUBB A,R0

MOV R2,A

MOV A,R3

SUBB A,R1

MOV R3,A

RET

D: %DELAY ; временная задержка

RET

Приложение Б

Листинг ПО пользователя

1. MPASM 5.05 .ASM 1-26-2010 18:09:07 PAGE 1

2.

3.

4. LOC OBJECT CODE LINE SOURCE TEXT

5. VALUE

6.

7. 00001

8. 00002 #INCLUDE P16F886.INC

9. 00001 LIST

10. 00002 ; P16F886.INC Standard Header File, Version 1.00 Microchip Technology, Inc.

11. 00614 LIST

12. 00003 ; ПОДСЧЕТ ИМПУЛЬСОВ С ПРОИЗВОДИТСЯ 1 СЕКУНДУ.

13. 00004 ; ЗА ОБОРОТ ПРОХОДИТ 1 ИМПУЛЬС. ЗНАЧЕНИЕ В СЧЕТЧИКЕ БУДЕТ

14. 00005 ; N ЗА СЕКУНДУ. ЗА МИНУТУ НАДО УМНОЖИТЬ НА 60. НА 10 МЫ ДЕЛИМ,

15. 00006 ; УБРАВ РАЗРЯД ЕДИНИЦ ИЗ ИНДИКАЦИИ

16. 00007 ; ПОЛУЧИМ: Nx60=>Nx6=n ОБ/МИН. 1 СЕК. ПОЛУЧАЕМ С TMR0, С ПРЕДДЕЛИТЕЛЕМ К=32:

17. 00008 ;ОПРЕДЕЛЕНИЕ РЕГИСТРОВ.

18. 00000000 00009 INDF EQU 00h ;ДОСТУП К ПАМЯТИ ЧЕРЕЗ FSR.

19. 00000001 00010 TMRO EQU 01H ;TMR0.

20. 00000081 00011 OPTION_REG EQU 81H ;OPTION (RP0=1).

21. 00000002 00012 PC EQU 02H ;СЧЕТЧИК КОМАНД.

22. 00000003 00013 STATUS EQU 03H ;РЕГИСТР СОСТОЯНИЯ АЛУ.

23. 00000004 00014 FSR EQU 04H ;РЕГИСТР КОСВЕННОЙ АДРЕСАЦИИ.

24. 00000005 00015 PORTA EQU 05H ;ПОРТ А ВВОДА;ВЫВОДА.

25. 00000006 00016 PORTB EQU 06H ;ПОРТ В ВВОДА;ВЫВОДА.

26. 00000085 00017 TRISA EQU 85H ;НАПРАВЛЕНИЯ ДАННЫХ ПОРТА А.

27. 00000086 00018 TRISB EQU 86H ;НАПРАВЛЕНИЯ ДАННЫХ ПОРТА В.

28. 0000000B 00019 INTCON EQU 0BH ;РЕГИСТР ФЛАГОВ ПРЕРЫВАНИЙ.

29. 00020

30. 00021 ; ОПРЕДЕЛЕНИЕ РЕГИСТРОВ ИНДИКАЦИИ.

31. 00000010 00022 DESI EQU 010H ;ДЕСЯТКИ ИНДИКАЦИИ.

32. 00000011 00023 SOTI EQU 011H ;СОТНИ.

33. 00000012 00024 TUSI EQU 012H ;ТЫСЯЧИ.

34. 00025

35. 00026 ; РЕГИСТРЫ ДЛЯ ОРГАНИЗАЦИИ ИНДИКАЦИИ.

36. 00000013 00027 ANOD EQU 013H ;АНОД.

37. 00000014 00028 SEGD EQU 014H ;СЕГМЕНТЫ.

38. 00029

39. 00030 ; ВРЕМЕННЫЕ, ДЛЯ ХРАНЕНИЯ ПРИ ПРЕРЫВАНИИ

40. 00000015 00031 W_TEMP EQU 015H ;БАЙТ СОХРАНЕНИЯ РЕГИСТРА W ПРИ ПРЕРЫВАНИИ.

41. 00000016 00032 STATUS_TEMP EQU 016H ;БАЙТ СОХРАНЕНИЯ РЕГИСТРА STATUS ПРИ ПРЕРЫВАНИИ.

42. 00000017 00033 FSR_TEMP EQU 017H ;ВРЕМЕННЫЙ ДЛЯ FSR.

43. 00034

44. 00035 ; ОПРЕДЕЛЕНИЕ РЕГИСТРОВ СЧЕТА.

45. 00000018 00036 DES EQU 018H ;МЛАДШИЙ РАЗРЯД РЕГИСТРА СЧЕТА.

46. 00000019 00037 SOT EQU 019H ;СТАРШИЙ РАЗРЯД.

47. 0000001A 00038 SEC EQU 01AH ;СЕКУНДЫ.

48. 0000001B 00039 SOTU EQU 01BH ;ВРЕМЕННЫЙ РЕГИСТР.

49. 00040

50. 00041

51. 00042 ; ОСНОВНАЯ ПРОГРАММА.

52. 0000 00043 ORG 0

53. 0000 2805 00044 GOTO INIT

54. 0004 00045 ORG 4

55. 0004 2875 00046 GOTO CONST

56. 00047

57. 00048 ; 1. ИНИЦИАЛИЗАЦИЯ

58. 0005 00049 INIT

59. 0005 1683 00050 BSF STATUS,5 ;ПЕРЕХОДИМ В БАНК 1.

60. 0006 30C4 00051 MOVLW B'11000100' ;ПРЕДДЕЛИТЕЛЬ ПЕРЕД ТАЙМЕРОМ, К=32 ...100,

61. 0007 0081 00052 MOVWF OPTION_REG^80H;ПОДТЯГИВАЮЩИЕ ВЫКЛЮЧЕНЫ, ФРОНТ

62. 00053 ;НАРАСТАНИЯ.

63. 0008 30B0 00054 MOVLW B'10110000' ;РАЗРЕШЕНИЕ ПРЕРЫВАНИЯ = ПРИ ПЕРЕПОЛНЕНИИ ТАЙМЕРА

64. 0009 008B 00055 MOVWF INTCON ;И ИЗМЕНЕНИЮ ВХОДНОГО СИГНАЛА ПОРТА В.

65. 000A 3018 00056 MOVLW B'00011000' ;RA0-RA2 НА ВЫХОД, RA3, RA4-ВХОД.

66. 000B 0085 00057 MOVWF TRISA^80H

67. 000C 3001 00058 MOVLW B'00000001' ;RB0 НА ВХОД, RBI-RB7-ВЫХОД.

68. 000D 0086 00059 MOVWF TRISB^80H

69. 000E 1283 00060 BCF STATUS,5 ;ПЕРЕХОДИМ В БАНК 0.

70. 000F 0181 00061 CLRF TMR0 ;ВСЕ ОБНУЛЯЕМ И УСТАНАВЛИВАЕМ.

71. 0010 0190 00062 CLRF DESI

72. 0011 0198 00063 CLRF DES

73. 0012 0191 00064 CLRF SOTI

74. 0013 0199 00065 CLRF SOT

75. 0014 019B 00066 CLRF SOTU

76. 0015 0192 00067 CLRF TUSI

77. 0016 019A 00068 CLRF SEC

78. 00069

79. 00070 ; 2. ОПРЕДЕЛЕНИЕ СОСТОЯНИЯ КНОПОК И ФЛАГОВ.

80. 00071

81. 0017 1D0B 00072 BTFSS INTCON,2 ;ЕСЛИ НЕТ ПРЕРЫВАНИЯ,

82. 0018 285B 00073 GOTO INDZIKL0 ;ИДЕМ НА ИНДИКАЦИЮ.

83. 00074

84. 00075 ; 3. УМНОЖЕНИЕ

85. 00076

86. 0019 0818 00077 MOVFW DES ;МЛАДШИЙ РАЗРЯД.

87. 001A 0718 00078 ADDWF DES,0 ;1+1

88. 001B 1803 00079 BTFSC STATUS,0;ЕСЛИ НЕТ ПЕРЕНОСА, -

89. 001C 0A9B 00080 INCF SOTU,1 ;+1 В СТАРШИЙ РАЗРЯД.

90. 001D 1003 00081 BCF STATUS,0;0.

91. 001E 0798 00082 ADDWF DES,1 ;2+1.

92. 001F 1803 00083 BTFSC STATUS,0;ЕСЛИ НЕТ ПЕРЕНОСА,

93. 0020 0A9B 00084 INCF SOTU,1 ;+1 В СТАРШИЙ РАЗРЯД.

94. 0021 0819 00085 MOVFW SOT ;СТАРШИЙ РАЗРЯД.

95. 0022 0719 00086 ADDWF SOT,0 ;1+1;

96. 0023 0799 00087 ADDWF SOT,1 ;2+1.

97. 0024 081B 00088 MOVFW SOTU ;ПРИБАВИМ ПЕРЕНОС ИЗ МЛАДШЕГО РАЗРЯДА.

98. 0025 0799 00089 ADDWF SOT,1 ;ЗАПИШЕМ В СТАРШИЙ РАЗРЯД.

99. 0026 019B 00090 CLRF SOTU ;ОБНУЛИМ ВРЕМЕННЫЙ.

100. 00091

101. 00092 ; 4. ПЕРЕКОДИРОВКА ИЗ 16-РАЗРЯДНОГО ДВОИЧНОГО В 3-Х РАЗРЯДНОЕ ДВОИЧНО-ДЕСЯТИЧНОЕ.

102. 0027 00093 RAS

103. 0027 0064 00094 CLRWDT

104. 0028 0190 00095 CLRF DESI ;ОБНУЛИМ РЕГИСТРЫ ИНДИКАЦИИ.

105. 0029 0191 00096 CLRF SOTI

106. 002A 0192 00097 CLRF TUSI

107. 002B 1103 00098 BCF STATUS,2 ;ОЧИСТКА БИТА "Z" РЕГИСТРА STATUS.

108. 002C 0899 00099 TSTF SOT ;ПРОВЕРИМ НА НОЛЬ.

109. 002D 1903 284B 00100 BZ RAS1 ;ЕСЛИ РАВНО, ИДЕМ.

110. 002F 00101 RAS0

111. 002F 3064 00102 MOVLW 64 ;100.

112. 0030 00103 RAS2

113. 0030 1403 00104 BSF STATUS,0 ;УСТАНОВКА БИТА "С" РЕГИСТРА STATUS.

114. 0031 00105 RAS3

115. 0031 0298 00106 SUBWF DES,1 ;ВЫЧИТАЕМ ИЗ РЕГИСТРА 100 > DES.

116. 0032 1C03 2836 00107 BNC BINDES ;ПЕРЕХОД ЕСЛИ ПЕРЕНОС.

117. 0034 0A92 00108 INCF TUSI,1 ;ПРИБАВИМ 1 К ТЫСЯЧАМ РЕГИСТРА ИНДИКАЦИИ.

118. 0035 2831 00109 GOTO RAS3 ;ПОВТОРИТЬ.

119. 0036 00110 BINDES

120. 0036 0064 00111 CLRWDT

121. 0037 1103 00112 BCF STATUS,2;ОЧИСТКА БИТА "Z" РЕГИСТРА STATUS.

122. 0038 0899 00113 TSTF SOT ;ПРИВЕРИТЬ РЕГИСТР НА НОЛЬ.

123. 0039 1903 283E 00114 BZ RAD ;ЕСЛИ 0, ИДЕМ.

124. 003B 0399 00115 DECF SOT,1 ;ВЫЧЕСТЬ ИЗ РЕГИСТРА 1.

125. 003C 0A92 00116 INCF TUSI,1 ;ПРИБАВИМ 1 К ТЫСЯЧАМ РЕГИСТРА ИНДИКАЦИИ.

126. 003D 2830 00117 GOTO RAS2 ;ПОВТОРИТЬ.

127. 003E 00118 RAD

128. 003E 0798 00119 ADDWF DES,1 ;ВОССТАНОВИМ ДЕСЯТКИ (В АКК. - 100).

129. 003F 300A 00120 MOVLW .10 ;10.

130. 0040 1403 00121 BSF STATUS,0 ;ОЧИСТКА БИТА "С" РЕГИСТРА STATUS.

131. 0041 00122 RAD0

132. 0041 0298 00123 SUBWF DES,1 ;ВЫЧИТАЕМ ИЗ РЕГИСТРА 10 > DES.

133. 0042 1C03 2846 00124 BNC BINDED ;ПЕРЕХОД, ЕСЛИ ПРОПАЛ ПЕРЕНОС.

134. 0044 0A91 00125 INCF SOTI,1 ;ПРИБАВИМ 1 К СТАРШЕМУ РЕГИСТРУ.

135. 0045 2841 00126 GOTO RAD0 ;ПОВТОРИТЬ.

136. 0046 00127 BINDED

137. 0046 0718 00128 ADDWF DES,0 ;+10.

138. 0047 0090 00129 MOVWF DESI ;ЗАПИШЕМ В РЕГИСТР ИНДИКАЦИИ.

139. 0048 0198 00130 CLRF DES ;ОБНУЛИМ.

140. 0049 0199 00131 CLRF SOT

141. 004A 287D 00132 GOTO RECONST

142. 004B 00133 RAS1

143. 004B 1103 00134 BCF STATUS,2 ;ОЧИСТКА БИТА "Z" РЕГИСТРА STATUS.

144. 004C 0898 00135 TSTF DES ;ЕСЛИ ЗНАЧЕНИЕ РЕГИСТРА = 0,

145. 004D 1903 287D 00136 BZ RECONST ;ЗАВЕРШАЕМ ПРЕРЫВАНИЕ,

146. 004F 282F 00137 GOTO RAS0 ;ИНАЧЕ ИДЕМ СЧИТАТЬ.

147. 00138

148. 00139

149. 00140 ; 5. ТАБЛИЦА СЕГМЕНТОВ ДЛЯ ОБЩЕГО АНОДА.

150. 00141

151. 0050 00142 SEGDATA ;7, б, 5, 4, 3, 2, 1, 0.

152. 0050 0782 00143 ADDWF PCL,F ;G, F, E, D, С, B, A, PR

153. 00144 ;АНОД-ДЛЯ ОБЩИХ АНОДОВ

154. 00145 ;КАТОД - ДЛЯ ОБЩИХ КАТОДОВ

155. 00146 ;НЕНУЖНОЕ УДАЛИТЬ ИЛИ ЗАКОММЕНТИРОВАТЬ

156. 00147 ; АНОД КАТОД

157. 0051 3481 00148 RETLW B'10000001' ; 0 B'01111111'

158. 0052 34F3 00149 RETLW B'11110011' ; 1 B'00001101'

159. 0053 3449 00150 RETLW B'01001001' ; 2 B'10110111'

160. 0054 3461 00151 RETLW B'01100001' ; 3 B'10011111'

161. 0055 3433 00152 RETLW B'00110011' ; 4 B'11001101'

162. 0056 3425 00153 RETLW B'00100101' ; 5 B'11011011'

163. 0057 3405 00154 RETLW B'00000101' ; 6 B'11111011'

164. 0058 34F1 00155 RETLW B'11110001' ; 7 B'00001111'

165. 0059 3401 00156 RETLW B'00000001' ; 8 B'11111111'

166. 005A 3421 00157 RETLW B'00100001' ; 9 B'11011111'

167. 00158

168. 00159 ; 7. ИНДИКАЦИЯ.

169. 005B 00160 INDZIKL0

170. 005B 0064 00161 CLRWDT

171. 005C 0193 00162 CLRF ANOD ;ОБНУЛЯЕМ АНОД, ЧТОБЫ ОЧИСТИТЬ СТАРШИЕ РАЗРЯДЫ.

172. 005D 178B 00163 BSF INTCON,7;ЧТОБЫ НЕ ПРОПУСТИТЬ ПРЕРЫВАНИЕ.

173. 005E 1413 00164 BSF ANOD,0 ;УСТАНОВИМ МЛ. РАЗРЯД.

174. 005F 3010 00165 MOVLW 010H ;ЗАПИСЬ НОМЕРА РЕГИСТРА МЛ. РАЗРЯДА

175. 0060 0094 00166 MOVWF SEGD ;В РЕгИСТР АДРЕСА РАЗРЯДА.

176. 0061 00167 INDZIKL1

177. 0061 0084 00168 MOVWF FSR ;В РЕГИСТР КОСВЕННОЙ АДРЕСАЦИИ.

178. 0062 0800 00169 MOVFW INDF ;ВЫБИРАЕМ 2-10 ЗНАЧЕНИЕ.

179. 0063 2050 00170 CALL SEGDATA ;ПРЕОБРАЗУЕМ В СЕМИСЕГМЕНТНОЕ ДЛЯ ИНДИКАЦИИ

180. 0064 0086 00171 MOVWF PORTB ;В ПОРТ В.

181. 0065 0813 00172 MOVFW ANOD ;ЗАГРУЖАЕМ ЗНАЧЕНИЕ АНОДА.

182. 0066 0085 00173 MOVWF PORTA ;В ПОРТ А.

183. 0067 2070 00174 CALL REST ;НА ОТДЫХ.

184. 0068 1003 00175 BCF STATUS,0 ;ОБНУЛИМ.

185. 0069 0D93 00176 RLF ANOD,1 ;+1 В РЕГИСТР АНОДА.

186. 006A 1993 00177 BTFSC ANOD,3 ;ЗАПИСЬ ЧИСЛА 3.

187. 006B 285B 00178 GOTO INDZIKL0;ЕСЛИ РАВНО 0, ИДЕМ,

188. 006C 0064 00179 CLRWDT ;ВРЕМЯ ТАЙМЕРА - 18 МС.

189. 006D 0A94 00180 INCF SEGD,F ;+1 В РЕГИСТР АДРЕСА РАЗРЯДА.

190. 006E 0814 00181 MOVFW SEGD ;ЗАГРУЖАЕМ ЗНАЧЕНИЕ

191. 006F 2861 00182 GOTO INDZIKL1;И ИДЕМ.

192. 0070 00183 REST

193. 0070 300A 00184 MOVLW .10 ;ЗАДЕРЖКА В 41 ЦИКЛ.

194. 0071 00185 REST0

195. 0071 3EFF 00186 ADDLW -01H ;ВРЕМЯ НА ГОРЕНИЕ СЕГМЕНТА

196. 0072 1D03 00187 BTFSS STATUS,2;64 ЦИКЛА=7,81 MCEK.

197. 0073 2871 00188 GOTO REST0 ;ЗАЦИКЛИВАЕМСЯ

198. 0074 0008 00189 RETURN

199. 00190

200. 00191 ; 8. СОХРАНЕНИЕ И ВОССТАНОВЛЕНИЕ ЗНАЧЕНИЙ РЕГИСТРОВ ПРИ ПРЕРЫВАНИИ.

201. 0075 00192 CONST

202. 0075 138B 00193 BCF INTCON,7 ;ЗАПРЕТ ПРЕРЫВАНИЙ.

203. 0076 0095 00194 MOVWF W_TEMP ;СОХРАНЕНИЕ ЗНАЧЕНИЙ РЕГИСТРОВ W И

204. 0077 0803 00195 MOVFW STATUS ;STATUS

205. 0078 0096 00196 MOVWF STATUS_TEMP ;

206. 0079 0804 00197 MOVFW FSR ;FSR.

207. 007A 0097 00198 MOVWF FSR_TEMP

208. 007B 188B 00199 BTFSC INTCON,1 ;ЕСЛИ ПРЕРЫВАНИЕ ПО ВХОДУ В,

209. 007C 2810 00200 GOTO DESI ;+1 В РЕГИСТРЫ СЧЕТА.

210. 007D 00201 RECONST ;ВОССТАНОВЛЕНИЕ СОХРАНЕННЫХ ЗНАЧЕНИЙ.

211. 007D 0816 00202 MOVFW STATUS_TEMP ;ВОССТАНОВЛЕНИЕ РЕГИСТРОВ:

212. 007E 0083 00203 MOVWF STATUS ;STATUS,

213. 007F 0817 00204 MOVFW FSR_TEMP

214. 0080 0084 00205 MOVWF FSR ;FSR,

215. 0081 0815 00206 MOVFW W_TEMP ;W.

216. 0082 0009 00207 RETFIE ;ВОЗВРАТ ИЗ ПРЕРЫВАНИЯ.

217. 00208 ; 9. СЧЕТ

218. 0083 00209 DES1

219. 0083 0818 00210 MOVFW DES ;ЗАГРУЗКА ЗНАЧЕНИЙ МЛ. РАЗРЯДА В РАБ. РЕГИСТР.

220. 0084 3CFF 00211 SUBLW 0FFH ;ВЫЧЕСТЬ ИЗ РЕГИСТРА 255.

221. 0085 1903 288A 00212 BZ SOT1 ;СРАВНИТЬ НА О, ЕСЛИ РАВНО, ПЕРЕЙТИ,

222. 0087 0A98 00213 INCF DES,F ;ИНАЧЕ ПРИБАВИТЬ 1 В РЕГИСТР МЛ. РАЗРЯДА.

223. 0088 108B 00214 BCF INTCON,1 ;СБРОС ФЛАГА ПРЕРЫВАНИЯ.

224. 0089 287D 00215 GOTO RECONST

225. 008A 00216 SOT1

226. 008A 0198 00217 CLRF DES ;ОБНУЛЕНИЕ РЕГИСТРА МЛ. РАЗРЯДА.

227. 008B 0819 00218 MOVFW SOT ;ЗАГРУЗКА СТ. РАЗРЯДА В РАБ. РЕГИСТР.

228. 008C 3CFF 00219 SUBLW 0FFH ;ВЫЧЕСТЬ ИЗ РЕГИСТРА 255.

229. 008D 1903 2892 00220 BZ FALSH ;СРАВНИТЬ НА О, ЕСЛИ РАВНО, ЗНАЧИТ ОШИБКА.

230. 008F 0A99 00221 INCF SOT,F ;ПРИБАВИТЬ 1 В СТ. РАЗРЯД.

231. 0090 108B 00222 BCF INTCON,1;СБРОС ФЛАГА ПРЕРЫВАНИЯ.

232. 0091 287D 00223 GOTO RECONST

233. 0092 00224 FALSH

234. 0092 0199 00225 CLRF SOT ;ОБНУЛЯЕМ.

235. 0093 0198 00226 CLRF DES

236. 0094 287D 00227 GOTO RECONST ;НАЧИНАЕМ СНАЧАЛА.

237. 00228

238. 00229 END

239.

240. MEMORY USAGE MAP ('X' = Used, '-' = Unused)

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.