Двух-байтовое двоичной число в десятичное.

Обсуждаем контроллеры компании Atmel.
Ответить
Hailmary
Первый раз сказал Мяу!
Сообщения: 35
Зарегистрирован: Ср янв 18, 2023 13:01:27

Двух-байтовое двоичной число в десятичное.

Сообщение Hailmary »

Всем доброго времени! Хочу составить на ассемблере программу для считывания данных с входов микросхемы и вывода на 4-разрядный индикатор, но не понимаю как. С 8-ми битовым числом всё легко, а вот с 16-ти... Дальше того, что считал данные с двух портов и записал их в регистры дело не пошло :? Помогите, кто может.
Последний раз редактировалось Hailmary Вт янв 24, 2023 17:46:03, всего редактировалось 1 раз.
Реклама
Аватара пользователя
MLX90640
Опытный кот
Сообщения: 848
Зарегистрирован: Ср авг 03, 2022 05:22:56

Re: Двух-битовое двоичной число в десятичное.

Сообщение MLX90640 »

А давайте вначале выучим, что бит - это одит разряд (binary digit), а байт - это 8 битов!
Затем выучим, что в 1 байте числа от 0 до 255. А в двух байтах 256×256 = 65536 чисел и они будут в диапазоне 0 - 65535.

Ну и после этого можно уже найти реализацию конвертера bin-to-bcd, то есть в поразрядную десятичную.
Чтобы отобразить число до 65535, нужно 5 разрядов десятичного числа. В каждом разряде будут числа 0 - 9, которые и будут показываться на пятиразрядном индикаторе.
Последний раз редактировалось MLX90640 Вт янв 24, 2023 13:31:41, всего редактировалось 1 раз.
Реклама
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15585
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Двух-битовое двоичной число в десятичное.

Сообщение BOB51 »

Для начинающего более удобно или табличное преобразование или метод вычитания.
Деление со сдвигом конечно более оптимально - но там таки больше мороки...
Вычитаем десятки тысяч - складываем в байтик результат
Вычитаем тысячи - складываем в байтик результат
Вычитаем сотни - складываем в байтик результат
в остатке остаются десятки
Затем выполняем табличное перекодирование двоично-десятичных значений из байтиков результата в сегментные коды и выгружаем результат в наш дисплейчик.
8)
И таки 4-х разрядного индикатора для полного диапазона из двух байт маловато - у нас ведь максимум 65536 -
это ПЯТЬ разрядов индикации...
:wink:
u37
Сверлит текстолит когтями
Сообщения: 1242
Зарегистрирован: Пн май 01, 2017 20:01:45

Re: Двух-битовое двоичной число в десятичное.

Сообщение u37 »

Два байта на 4 сегмента (полностью) можно вывести только в HEX.
Тогда проблема резко упрощается - надо вывести "байт" на 2 разряда, и так сделать 2 раза (для первого и второго байтов).
Как вывести "байт" в 2 разряда? Пишется простая процедура перевода байта в HEX (т.е. 2 байта со значением 0-15). Потом эти два числа выводятся на два разряда индикатора, каждый в свой. Для упрощения можно использовать табличное преобразование числа 0-15 в символ 0-9-A-F.
Реклама
Эиком - электронные компоненты и радиодетали
akl
Друг Кота
Сообщения: 4447
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: Двух-битовое двоичной число в десятичное.

Сообщение akl »

Как вариант. Проще вновь написать, чем найти
Спойлер

Код: Выделить всё

; преобразование в BCD значения регистров R22:R21
	SER	ZL
	MOV	R5,ZL
	MOV	R6,ZL
	MOV	R7,ZL
	MOV	R8,ZL
;	MOV	R9,ZL
R5_10000:
	INC	R5
	SUBI	R22,BYTE1(10000)
	SBCI	R21,BYTE2(10000)
	BRCC	R5_10000

	SUBI	R22,BYTE1(-10000)
	SBCI	R21,BYTE2(-10000)
R6_1000:
	INC	R6
	SUBI	R22,BYTE1(1000)
	SBCI	R21,BYTE2(1000)
	BRCC	R6_1000

	SUBI	R22,BYTE1(-1000)
	SBCI	R21,BYTE2(-1000)
R7_100:
	INC	R7
	SUBI	R22,BYTE1(100)
	SBCI	R21,BYTE2(100)
	BRCC	R7_100

	SUBI	R22,BYTE1(-100)
	SBCI	R21,BYTE2(-100)
R8_10:
	INC	R8
	SUBI	R22,BYTE1(10)
	SBCI	R21,BYTE2(10)
	BRCC	R8_10

	SUBI	R22,BYTE1(-10)
	SBCI	R21,BYTE2(-10)

	MOV	R9,R22
;*************************************************
;гашение незначащих нулей
        CLR   R4
	LDI	R20,10
	
T_PROV10000:
	CP	R5,R4
	BRNE	T_PROV_OUT
	MOV	R5,R20
T_PROV1000:
	CP	R6,R4
	BRNE	T_PROV_OUT
	MOV	R6,R20
T_PROV100:
	CP	R7,R4
	BRNE	T_PROV_OUT
	MOV	R7,R20
T_PROV10:
	CP	R8,R4
	BRNE	T_PROV_OUT
	MOV	R8,R20
T_PROV_OUT:
; R9 значащий всегда
	RET
Реклама
Hailmary
Первый раз сказал Мяу!
Сообщения: 35
Зарегистрирован: Ср янв 18, 2023 13:01:27

Re: Двух-байтовое двоичной число в десятичное.

Сообщение Hailmary »

Всех благодарю за ответы, особенно Вас, akl, уже второй раз выручаете!
Реклама
Ответить

Вернуться в «AVR»