Юрий Ревич - Занимательная микроэлектроника
- Название:Занимательная микроэлектроника
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2007
- Город:Санкт-Петербург
- ISBN:978-5-9775-0080-7
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Юрий Ревич - Занимательная микроэлектроника краткое содержание
Для широкого круга радиолюбителей
Занимательная микроэлектроника - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
sbrs Flag,2 ;если бит1=0, то уже все остальное сделали
rjmp end_res ;выход из процедуры
;восстановление
cli ;запрещаем прерывания на время установок
cbr Flag,2 ;сбрасываем бит1 Flag
;восстанавливаем внешние соединения:
clr temp
ldi temp,0b01110111 ;порт D разряды 0,1,2,4,5,6 на выход
out DDRD,temp
ldi temp, 0b11111100 ;порт В все на выход, кроме 0,1
out DDRB,temp
sei ;разрешаем прерывания
END_res:
ret ;конец процедуры восстановления выходов
SEG_SET: ;процедура установки сегментов
cpi temp,0 ;ищем число, равное temp
brne ss_0
rcall OUT_0 ;и посылаем на нужную процедуру вывода сегментов
rjmp END_seg
ss_0: cpi temp,1
brne ss_1
rcall OUT_1
rjmp END_seg
ss_1: cpi temp,2
brne ss_2
rcall OUT_2
rjmp END_seg
ss_2: cpi temp,3
brne ss_3
rcall OUT_3
rjmp END_seg
ss_3: cpi temp,4
brne ss_4
rcall OUT_4
rjmp END_seg
ss_4: cpi temp,5
brne ss_5
rcall OUT_5
rjmp END_seg
ss_5: cpi temp,6
brne ss 6
rcall OUT_6
rjmp END_seg
ss_6: cpi temp,7
brne ss_7
rcall OUT_7
rjmp END_seg
ss_7: cpi temp,8
brne ss_8
rcall OUT_8
rjmp END_seg
ss_8: cpi temp,9
rcall OUT_9
END_seg:
jret ;конец процедуры установки сегментов
;процедуры для отображения цифр на семисегментном индикаторе
;ABCDEF(0);ВС(1)/ABDEG(2)/ABCDG(3)/BCFG(4);ACDFG(5)
;ACDEFG(6);ABC(7);ABCDEFG(8);ABCDFG(9)
Out_0:
sbi PortD,segA
sbi PortD,segB
sbi PortB,segC
sbi PortB,segD
sbi PortB,segE
sbi PortB,segF
ret
OUT_1:
sbi PortD,segB
sbi PortB,segC
ret
OUT_2:
sbi PortD,segA
sbi PortD,segB
sbi PortB,segG
sbi PortB,segE
sbi PortB,segD
ret
OUT_3:
sbi PortD,segA
sbi PortD,segB
sbi PortB,segG
sbi PortB,segC
sbi PortB,segD
ret
OUT_4:
sbi PortD,segB
sbi PortB,segC
sbi PortB,segF
sbi PortB,segG
ret
OUT_5:
sbi PortD,segA
sbi PortB,segF
sbi PortB,segG
sbi PortB,segC
sbi PortB,segD
ret
OUT_6:
sbi PortD,segA
sbi PortB,segF
sbi PortB,segG
sbi PortB,segC
sbi PortB,segE
sbi PortB,segD
ret
OUT_7:
sbi PortD,segA
sbi PortD,segB
sbi PortB,segC
ret
OUT_8:
sbi PortD,segA
sbi PortD,segB
sbi PortB,segC
sbi PortB,segD
sbi PortB,segE
sbi PortB,segF
sbi PortB,segG
ret
OUT_9:
sbi PortD,segA
sbi PortD,segB
sbi PortB,segC
sbi PortB,segD
sbi PortB,segF
sbi PortB,segG
ret
Программа измерителя температуры и давления, описанного в главе 15, приведена в листинге П5.2.
Листинг П5.2
;ATmega853 5 кварц 4000 кГц
.include "m8535def.inc"
;==== Определения и константы ====
;Управление индикацией
.equ segG = 6 ;port С pin 28
.equ segF = 5 ;pin 27
.equ segE = 4 ;pin 26
.equ segD = 3 ;pin 25
.equ segC = 2 ;pin 24
.equ segB = 1 ;pin 23
.equ segA = 0 ;pin 22
.equ RazrTdH = 0 ;PortB,0 pin 1 десятки градуса
.equ RazrTdM = 1 ;PortB,1 pin 2 ед. градусов
.equ RazrTdL = 2 ;PortB,2 pin 3 десятые градусов
. equ RazrPdH = 3 ;PortB,3 pin 4 сотни давления
.equ RazrPdM = 4 ;PortB,4 pin 5 дес. давления
.equ RazrPdL = 5 ;PortB,5 pin 6 ед. давления
;адреса SRAM старший байт адреса SRAM=0x01
.equ Tram =: 0x0 ;0x0,0x1 — старш. и младш. байты температуры АЦП
.equ Pram =: 0x2 ;0x2,0x3 — старш. и младший, байты давления АЦП
.equ TdH = 0x04 ;температура старший дес.
.equ TdM = 0x05 ;темп. средний дес.
.equ TdL = 0x06 ;темп. младший дес.
.equ PdH = 0x07 ;давление старший дес.
.equ PdM = 0x08 ;давление средний дес.
.equ PdL = 0x09 ;давление младший дес.
.equ tZH = 0x20 ;ст. разряд коэффициента Z температуры
.equ tZL = 0x21 ;мл. разряд коэффициента Z температуры
.equ tKH = 0x22 ;ст. разряд коэффициента К температуры
.equ tKL = 0x23 ;мл. разряд коэффициента К температуры
.equ pZH = 0x24 ;ст. разряд коэффициента Z давления
.equ pZL = 0x25 ;мл. разряд коэффициента Z давления
.equ pKH = 0x26 ;ст. разряд коэффициента К давления
.equ pKL = 0x27 ;мл. разряд коэффициента К давления
.equ AtBCDO = 5 ;адрес ResL для процедуры преобразования Bin-Dee
.equ AtBCD2 = 6 ;адрес ResH
;переменные
.def AregH = r2 ;результат измерения hex, старший байт
.def AregL = r3 ;результат измерения hex, младший байт
.def KoeffH = r4 ;коэффициент, старший байт
.def KoeffL = r5 ;коэффициент, младший байт
.def ResL = r6 ;результат упакованный BCD, младший байт
.def ResH = r7 ;результат упакованный BCD, старший байт
.def temp = r16 ;рабочий регистр
.def temp1 = r17 ;вспомогательная переменная
.def temp2 = r18 ;вспомогательная переменная
.def count = r19 ;счетчик преобразований — до 64
.def countCyk = r20 ;счетчик до 32,
.def Flag = r21 ;регистр флагов, биты:
;измерение: 0 — температуры, 1 — давления,
.def cRazr = г22 ;счетчик до 6 мультиплексирования разрядов
;====== прерывания ======
rjmp RESET ;Reset Handle
reti ;IRQ0 Handler
reti ;IRQ1 Handler
reti ;Timer2 Compare Handler
reti ;Timer2 Overflow Handler
reti ;Timer1 Capture Handler
reti ;Timer1 Compare A Handler
reti ;Timer1 Compare В Handler
reti ;TIM1_OVF ;Timer1 Overflow Handler
rjmp TIM0 ;Timer0 Overflow Handler
reti ;SPI Transfer Complete Handler
reti ;USART RX Complete Handler
reti ;UDR Empty Handler
reti ;USART TX Complete Handler
rjmp readADC ;reti;ADC ;ADC Conversion Complete Handler
reti ;EEPROM Ready Handler
reti ;Analog Comparator Handler
reti ;Two-wire Serial Interface Handler
reti ;IRQ2 Handler
reti ;Timer0 Compare Handler
reti ;Store Program Memory Ready Handler
;==================
OUT_N: ;маски цифр
.db
0b00111111,0b0000110,0b01011011,0b01001111,0b01100110,0b01101101, 0b01111101,0b00000111,0b01111111,0b01101111
;seg ABCDEF(0);seg BC(1);seg ABDEG(2);seg ABCDG(3);seg BCFG(4);seg ACDFG(5)
;seg ACDEFG(6);seg ABC(7);seg ABCDEFG(8);seg ABCDFG(9)
TIM0:
;сначала индикация
inc cRazr ;счетчик разрядов
cpi cRazr,6 ;всего б разрядов
brne Set_razr
clr cRazr ;если равен 6, очищаем
Set_razr:
cpi cRazr,0 ;десятки градусов
brne Р1 ;если нет — на другие разряды
ldi r28,TdH ;установка YL — старш. темп.
ld temp,Y ;в temp — значение десятков градусов
Читать дальшеИнтервал:
Закладка: