Полная версия этой страницы:
Сравнение чисел на AT89S8252
Muxamor
Sep 20 2005, 06:55
Приветствую!
Такая вот проблема в микроконтроллер мне приходит число 15000 мне нужно его сравнить с 10000 как это реализуеться?
Ну если приходит 15000, то чё его сравнивать с 10000? Напиши по-русски словами, чего тебя волнует, чтобы никто не гадал. В каком виде приходит? Как часто? Только 15000 или ещё что-нить? Какие ещё пожелания?
Muxamor
Sep 20 2005, 08:13
Алгоритм такой! В бинарном виде приходит! Числа приходят от 200 до 20000 с шагом 200! приходящее число я получаю как оно сравниваец ! Двубаитное число?
elserge
Sep 20 2005, 08:34
Ну конечно двухбайтное. Вычитаешь из одного 2-байтного числа другое 2-байтное, и по результатам можешь определить больше, меньше, равно. Изучи команды условных переходов (jc, jnc, jz и т.д.). Это же азы. Если не понимаешь таких вещей с лету, то возьми бумагу, и обрабатывай двоичные числа на бумаге вручную. Так сразу будет видно и понятно, что происходит в АЛУ (арифметико-логическом устройстве) МК, какие флаги и когда взводятся, какие команды использовать. Помогает, проверено на себе.
Анекдот по теме: Армия, прапорщик: Если вы такие болваны, что не можете запомнить, то записывайте в блокнот, как это делаю Я.
Muxamor
Sep 20 2005, 09:00
А точно там же флоаг ставиться!
Ну спасибо за помощь!
dimka2001
Nov 26 2005, 07:34
такие вещи и математику лучше писать на Си, там ничего сложно нету
Harbinger
Nov 26 2005, 14:49
Да и на асме тривиально, главное знать, куда енто число приходит
aforestman
Nov 28 2005, 12:00
Ну, начнем с того, что 100.000 в два байта надо еще умудриться запихать!
В свое время нужно было сравнивать текущее и сохраненное значение таймера.
; Сравнение старшего байта
clr C
mov A, TH0
subb A, T_EAH
jz TmrLowB; Ст. байт текущего значения равен
jnc TmrWrt; Ст. байт текущего значения больше
jmp TmrClr; Ст. байт текущего значения меньше
; В случае равенства сравниваем младшие байты
TmrLowB:
clr C
mov A, TL0
subb A, T_EAL
jc TmrClr ; Мл. байт текущего значения меньше
TmrWrt:
aforestman
Nov 28 2005, 12:03
Начнем с того, что 100.000 надо еще умудриться втиснуть в два байта!
В свое время я делал так.
; Сравнение старшего байта
clr C
mov A, TH0
subb A, T_EAH
jz TmrLowB ; Ст. байт текущего значения равен
jnc TmrWrt ; Ст. байт текущего значения больше
jmp TmrClr ; Ст. байт текущего значения меньше
; В случае равенства сравниваем младшие байты
TmrLowB:
clr C
mov A, TL0
subb A, T_EAL
jc TmrClr ; Мл. байт текущего значения меньше
TmrWrt:
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.