Проектирование прибора измеряемого длительность импульсаРефераты >> Программирование и компьютеры >> Проектирование прибора измеряемого длительность импульса
INC R16 ;инкремент R17(счетчик прошедших мСекунд срабатывает при R17>10)
BRBC 1,M3 ; если R16 переполнится
INC R18 ; тогда инкрементируем R18(Длительность импульса
; Прошло десять мС далее идет счет каждой мС
M3: RETI ; находится в R18(ст. разряд),R16(мл. разряд)
IMPULS:
LDI R20, 0B00001001 ; если приходит импульс то тогда запускается T/C1
OUT TCCR1B,R20
RET
IMPILS_1_TO_0:
LDI R20,0B00000000 ; если импульс закончился T/C1 останавливается
OUT TCCR1B,R20
CPSE R16,R19 ;проверка на начало цикла измерения если он начился
RCALL TEST_OF_STOP_TC1 ; то тогда переход на TEST_OF_STOP_TC1
SBIC PORTA,1 ; Опрос состояния кнопки режима измерения длительности импульса
RCALL IMPULS_POLOGITELNAY; режим из-ия высокого уровня длительности
RCALL IMPULS_OTRICHATELNAY ; режим из-ия низкого уровня длительности
RET
TEST_OF_STOP_TC1: ; подпрограмма проверки (действительно ли T/C1 остановился
IN R21,TCCR1B ;во время режима измерения длительности)
ANDI R21,0B000000000 ;если все в порядке, то тогда переходим на bin16BCD5
BRNE ENDTEST_OF
RCALL bin16BCD5
ENDTEST_OF:
RET
M2OTR:
IMPULS_OTRICHATELNAY:
CBI PORTA,2 ;Выключаем светодиод
SBIS PORTA,0 ; Происходит проверка на наличие 0
RCALL IMPULS_OTR
SBIC PORTA,0
RCALL IMPILS_0_TO_1; на PA1, если его нет, тогда переход
M5OTR: CPI R17,0xFF
BRCS M2OTR
LDI R17,0XA
RJMP M2OTR;
IMPULS_OTR:
;LDI R16,0X9
;LDI R17,0X0
LDI R20, 0B00001001 ; то тогда запускается T/C1
OUT TCCR1B,R20
RET
IMPILS_0_TO_1:
LDI R20,0B00000000 ;T/C1 остановлен
OUT TCCR1B,R20
CPSE R16,R19
RCALL TEST_OF_STOP_TC1_OTR
SBIC PORTA,1
RCALL IMPULS_POLOGITELNAY
RCALL IMPULS_OTRICHATELNAY
RET
TEST_OF_STOP_TC1_OTR:
IN R21,TCCR1B
ANDI R21,0B000000000
BRNE ENDTEST_OF_OTR
RCALL bin16BCD5
ENDTEST_OF_OTR:
RET
bin16BCD5: Подпрограмма перевода двоичного числа в двоично-десятичное
MOV R22,R16
MOV R23,R18
ldi tBCD2, -1
bin16BCD5_loop_1:
inc tBCD2 ; определение
subi fbinL, low(10000) ; количества
sbci fbinH, high(10000) ; десятков тысяч
brsh bin16BCD5_loop_1 ;в числе которое переводится
subi fbinL, low(-10000)
sbci fbinH, high(-10000)
ldi tBCD1, -0x11
bin16BCD5_loop_2:
subi tBCD1, -0x10 ;определение
subi fbinL, low(1000) ; количества
sbci fbinH, high(1000) ; тысяч
brsh bin16BCD5_loop_2 ;в числе которое переводится
subi fbinL, low(-1000)
sbci fbinH, high(-1000)
bin16BCD5_loop_3:
inc tBCD1 ;определение
subi fbinL, low(100) ; количества
sbci fbinH, high(100) ; десятков
brsh bin16BCD5_loop_3 ;в числе которое переводится
subi fbinL, -100
ldi tBCD0, -0x10
bin16BCD5_loop_4:
subi tBCD0, -0x10 ;определение
subi fbinL, 10 ; количества
brsh bin16BCD5_loop_4 ; единиц
subi fbinL, -10 ;в числе которое переводится
add tBCD0, fbinL
LDI R16,0X9
LDI R17,0X0
ldi r18,0x0
LDI R27,0X0
WAIT_PRESS_KEY: ; Подпрограмма проверки, в чем отображать
; индикацию в мСекундах или Секутдах
; Примечание:
; если ни одна из кнопок режима отображения
; не нажата или нажаты все, индикация отображаться не БУДЕТ
SBRC R27,0
RJMP EXIT
SBIC PORTA,3 ; Если нажата кнопка мСекунды
RCALL FLASH_mC ; то тогда переход на FLASH_mC
SBIC PORTA,4 ; если нажата кнопка Секунды
RCALL FLASH_C ; то тогда переход на FLASH_C
RJMP WAIT_PRESS_KEY ; если ни одна из кнопок не нажата
; то тогда ожидаем нажатия
SBIS PORTA,3 ; в противном случае выход из подпрограммы
RJMP EXIT
SBIC PORTA,4 ; если нажаты все две кнопки, то тогда
; ожидаем пока одну кнопку не отключат
RJMP WAIT_PRESS_KEY
OUT PORTD,R23 ; вывод на порт D двоично-десятичного числа
OUT PORTC,R24 ; вывод на порт C двоично-десятичного числа
OUT TCNT1H,R18 ;обнуление регистра NCNT1H (ст. регистр T/C1)
OUT TCNT1L,R18 ;обнуление регистра NCNT1L (мл. регистр T/C1)
EXIT: RET
FLASH_mC:
SBI PORTA,5 ; Включаем светодиод (режим мСекунды)
CBI PORTA,6 ; Выключаем светодиод (режим Секунды)
CBI PORTA,7 ; и выключаем разделительную точку
INC R27
RET
FLASH_C:
CBI PORTA,5 ; Включаем светодиод (режим Секунды)
SBI PORTA,6 ;Выключаем светодиод (режим мСекунды)
SBI PORTA,7 ; и включаем разделительную точку
INC R27
RET
Список использованных источников
1. Описание однокристальной микро-ЭВМ AVR90S8515
2. Методическое указания и задания по курсовому проектированию «Расчет и проектирование цифровых измерительных приборов»