|
||||||||||
|
||||||||||
|
Рис.4.2.4.1.
4.2.5 БСА подпрограммы вывода числа на индикацию
БСА вывода числа на индикацию представлена на рис.4.2.5.1.
В ячейку памяти ci заносится число (бл.2) равное кол-ву цифр выводимых на индикатор.
В блоке 5 происходит загрузка числа для табличной перекодировки, в регистр Х. После чего в бл.6 следует команда табличной перекодировки числа для индикации, где TCI – это начало кодовой таблицы. После этой команды, происходит передвижение по ячейкам BCDxxx.
В блоках 8,9 происходит запись перекодированного числа в одну из ячеек памяти INDxxx, после чего в блоке 10 идёт передвижение по ячейкам INDxxx.
В блоке 11 происходит настройка индикатора на приём адреса, после чего в блоке 12 адрес передаётся в индикатор, который стробируется импульсом образованным блоками 13-15. После этого следует задержка 30 мкС, в течении которой индикатор выполняет, свои внутренние операции.
Как только задержка окончилась, в бл.17,18 индикатор настраивается на приём данных, и далее происходит передача данных (бл.19), которые стробируются импульсом образованным блоками 20-22. После чего в блоке 23 происходит задержка, после которой декрементируется ячейка памяти ci, в блоках 25-27 происходит подготовка для вывода следующего числа на индикацию, и в бл.28 проверяется, если ci 0, то подпрограмма переходит к выполнению бл.6 и всё начинается заново. Если ci=0, то программа выходит из обработчика.
Рис.4.2.5.1.
Рис.4.2.5.1.(продолжение)
4.2.6 БСА подпрограммы перевода числа в BCD формат
БСА подпрограммы перевода числа в BCD формат представлена на рис.4.2.6.1.
В начале подпрограммы, регистры CPU сохраняются в стеке. В блоке 1 происходит проверка:
1. Если число больше 99, то в блоке 3 происходит деление числа на 100, в результате этой операции, целое частное помещается в аккумулятор, а остаток деления в регистр H. Целое частное – это сотни числа, поэтому они заносятся в ячейку памяти BCD100 (бл.4), после чего остаток загружается в аккумулятор (бл.5), и делится на 10 (бл.6). В результате этой операции, в аккумуляторе получаются десятки числа, которые заносятся в BCD10 (бл.7), а остаток числа показывает единицы и заносится в BCD1 (бл.8).
2. Если число меньше 99, то оно проверяется в блоке 2, если оно меньше 9, то в ячейку памяти BCD100,BCD10 записывается код пробела (бл. 11,12), после чего данное число записывается в BCD1 (бл.13). Если оно больше 9, то число записывается в аккумулятор (бл.9), в ячейку памяти BCD100 записывается код пробела, после чего происходит деление числа на 10 (бл.6) и далее всё происходит как в пункте 1, только начиная с блока 6.
3.
Рис.4.2.6.1.
5. Принципиальная схема устройства
Принципиальная схема устройства изображена на рис.5.1.
Заключение
Обратите внимание на принципиальную схему прибора, в ней как видно минимум элементов. Это объясняется применением в схеме, микроконтроллера. Причем всё измерение осуществляется в полуавтоматическом режиме и происходит в микроконтроллере. Тем самым пользователь прикладывает минимум усилий для измерения своего давления.
Таким образом применение микропроцессорных систем в устройствах различного типа, позволяет сократить кол-во элементов в схеме, сделать устройство более качественным, а также позволяет осуществить наиболее “дружелюбный” интерфейс с пользователем.
Программа для данного устройства была написана на ассемблере CASM08, оттранслированна и отлажена на ICS08JL, листинг программы приведён в приложении.
Список литературы
1. Панфилов Д.И. Датчики фирмы MOTOROLA. Москва. ДОДЭКА. 2000. 96 с.
2. БЭК. Жидкокристалические индикаторы фирмы DATA INTERNATIONAL. Москва. 1999. 64 с.
3. Technical Data. MC68HC908JL3.
4. Technical Data. MPX5050DP.
Приложение
тонометр.asm Assembled with CASM08Z 25.02.03 9:58:45 PAGE 1
0000 1 PTA equ $0
0000 2 PTB equ $1
0000 3 PTD equ $3
0000 4 DDRA equ $4
0000 5 DDRB equ $5
0000 6 DDRD equ $7
0000 7 PDCR equ $A
0000 8 PTAPUE equ $D
0000 9 KBSCR equ $1A
0000 10 KBIER equ $1B
0000 11 CONFIG2 equ $1E
0000 12 CONFIG1 equ $1F
0000 13 TSC equ $20
0000 14 TCNTH equ $21
0000 15 TCNTL equ $22
0000 16 TMODH equ $23
0000 17 TMODL equ $24
0000 18 ADSCR equ $3C
0000 19 ADR equ $3D
0000 20 ADICLK equ $3E
21
22
23
0080 24 org $80 ;ОЗУ
25
0080 26 ind rmb 3
0083 01 27 adres db 1
0084 01 28 BCD100 db 1
0085 01 29 BCD10 db 1
0086 01 30 BCD1 db 1
0087 01 31 indx db 1
0088 01 32 ci db 1
0089 01 33 bitf db 1
008A 01 34 upress1 db 1
008B 01 35 upress db 1
008C 01 36 udav db 1
008D 01 37 const db 1
008E 01 38 dav db 1
008F 01 39 y db 1
0090 01 40 pulse db 1
0091 01 41 bitf1 db 1
0092 01 42 cmp1 db 1
0093 01 43 del db 1
0094 01 44 por db 1
0095 01 45 ovsec db 1
0096 01 46 cmpad db 1
0097 01 47 amp2 db 1
0098 01 48 amp1 db 1
0099 01 49 sec db 1
009A 01 50 sec10 db 1
009B 01 51 time1 db 1
009C 01 52 time2 db 1
009D 01 53 time3 db 1
009E 01 54 pr1 db 1
009F 01 55 sis db 1
00A0 01 56 pr2 db 1
00A1 01 57 dia db 1
00A2 01 58 pul db 1
тонометр.asm Assembled with CASM08Z 25.02.03 9:58:45 PAGE 2
00A3 01 59 bcdx db 1
00A4 01 60 pmem1 db 1
61
EC00 62 org $ec00 ;программа
63
64 start:
65 ;--------------------------- Инициализация -----
66
EC00 [01] 4F 67 clra
EC01 [01] 5F 68 clrx
69
EC02 [04] 6EFF07 70 mov #$ff,DDRD ;Настраиваем линии
порта PTD на вывод
EC05 [04] 6E1C05 71 mov #$1c,DDRB ;Настраиваем линии
РТВ2,РТВ3,РТВ4 на вывод
72
73 ;Инициализация индикатора
74
EC08 [04] 1501 75 bclr 2,PTB
EC0A [04] 1701 76 bclr 3,PTB
EC0C [04] 6E0603 77 mov #$6,PTD ;Установка режима ввода
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
При использовании материалов активная ссылка на источник обязательна.