далее, если включить мозг, то можно и его использовать для опроса клавы.
всего два вывода МК. обвяз - два резистора и один кондер (не считая резисторной линейки под кнопки)
Можете передавать сразу в ASCII коде Начало посылки ,либо предложенное выше либо из той же таблицы ASCII выбрать символы которые не встретятся в вашей посылке. Ну а заканчивать символами CR+LFMS24 писал(а):Ребят, подскажите пожалуйста, у меня с компа по юарту поступают числа, которые варьируются от 0 до 10 000, как мне передавать их, ведь в регистр может прийти только одно байтное число?
Стандартные подпрограммы прервода из десятич. в hex и обратноMS24 писал(а):Так, я получу по юарту 2 значения, т.е 1 байт я сохраню в один регистр. второй в другой. А как мне их снова в одно число востановить?
А где их взять эти подпрограммы? )ILYAUL писал(а):Стандартные подпрограммы прервода из десятич. в hex и обратноMS24 писал(а):Так, я получу по юарту 2 значения, т.е 1 байт я сохраню в один регистр. второй в другой. А как мне их снова в одно число востановить?
если бы я мог, я бы не задовал таких вопросо сдесь -)Леонид Иванович писал(а):Написать.
Леонид Иванович , за него это уже сделал ATMEL, как Вы знаете. Может - ПоискатьЛеонид Иванович писал(а):Написать.
Ребят, вот я принимаю данные таки макаром:ILYAUL писал(а):Леонид Иванович , за него это уже сделал ATMEL, как Вы знаете. Может - ПоискатьЛеонид Иванович писал(а):Написать.
ЗнакомтесьMS24 писал(а): .....а как цифровое значение принять от 10 до 10000 ??? ((
Код: Выделить всё
unsigned char buff[16]; //буфер приема
unsigned short int var = 0;
// далее, принимаем данные и проверяем их.
//извлекаем наши байты из пакета в двухбаййтную переменную
var = (unsigned short int)(buff[1]<<8) | (buff[0]); //пои условии, что младший байт был отправлен первым
т.е. в ней есть вектор по прерыванию компаратора. Работает правильно..org 0 ;Задание нулевого адреса старта программы
rjmp Reset ;Безусловный переход к метке reset
.org OVF0addr ;Задание адреса прерывания по переполнению таймера 0
rjmp timer0_ovf ;Безусловный переход к метке timer0_ovf
.org ACIaddr
rjmp Compare
тоже вроде все правильно. Дальше собственно сама пауза таймера:ldi r16, (1<<TOIE0) ;Загрузка в регистр r16 "1", смещенной на TOIE0
out TIMSK,r16 ;Копирование значения из R16 в регистр TIMSK0,
;разрешение прерывания таймера
А по прерыванию таймера должен уходить на счетчик циклов таймера:;формирование задержки
ldi r18,20 ; Задаем кол-во прерываний таймера
ldi r16,(1<<CS00) ;Загрузка двух "1", смещенных на CS00 и CS02
out TCCR0B,r16 ;Копирование значения из регистра r16 в регистр TCCR0B
sei
Pause:
rjmp Pause
tmr_clr: ;Прерывание по переполнению таймера 0
clr r16 ; Очистка регистра R16
out TCCR0B,r16 ; Остановка таймера
Вроде все правильно, а не работает.; Таймер===========
timer0_ovf:
dec r18
cpi r18,0
brne Pause
rjmp tmr_clr