|
Как написать код на ассемблере AVR-на "С"-понятно. |
|
|
|
Sep 20 2013, 07:18
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 25-01-13
Из: Брянск
Пользователь №: 75 345

|
Здравствуйте.Подскажите пожалуйста.Вот код на Си -здесь всё понятно. if (u > 256) // 1.25V PORTD = 0b00000011; if (u > 384) // 1.875V PORTD = 0b00000111 А вот как реализовать на ассемблере,дело в том ,что переменная-"u"-это двухбайтное число(10 разрядов) у меня это регистры АЦП-ADCL , ADCH. И если не трудно подскажите ,что сделал автор в 23 строке своей программы u = (ADCL|ADCH << 8);-взято отсюда http://radioparty.ru/index.php/prog-avr/pr...adc-avr?start=1Если можно то подробнее.Спасибо.
|
|
|
|
|
 |
Ответов
|
Sep 20 2013, 07:32
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(serj32 @ Sep 20 2013, 10:18)  И если не трудно подскажите ,что сделал автор в 23 строке своей программы u = (ADCL|ADCH << 8);-взято отсюда Код u = (ADCL|ADCH << 8); // Считываем ADC Считал два 8-разрядных регистра и составил из них 16р слово
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Sep 20 2013, 08:23
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 25-01-13
Из: Брянск
Пользователь №: 75 345

|
Цитата(MrYuran @ Sep 20 2013, 11:32)  Код u = (ADCL|ADCH << 8); // Считываем ADC Считал два 8-разрядных регистра и составил из них 16р слово Вот два регистра ADCL и ADCH они восьмиразрядные ну произведём над этими регистрами операцию побитового ИЛИ и получим результат -восьмиразрядное число,а ещё сдвинем влево на 8 разрядов результат-ну вообще все нули получатся-совсем я запутался.
|
|
|
|
|
Sep 20 2013, 09:42
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(serj32 @ Sep 20 2013, 11:23)  Вот два регистра ADCL и ADCH они восьмиразрядные ну произведём над этими регистрами операцию побитового ИЛИ и получим результат -восьмиразрядное число,а ещё сдвинем влево на 8 разрядов результат-ну вообще все нули получатся-совсем я запутался. Вы не учитываете приоритет операций. У сдвига он выше. Итого, старший регистр сдвинется на 8 влево, сложится с младшим и результат запишется в результирующую переменную.
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
Сообщений в этой теме
serj32 Как написать код на ассемблере AVR-на "С"-понятно. Sep 20 2013, 07:18  adnega Цитата(serj32 @ Sep 20 2013, 12:23) Вот д... Sep 20 2013, 08:47   serj32 Цитата(adnega @ Sep 20 2013, 12:47) Подра... Sep 20 2013, 10:02 V_G Вероятно, можно поступить проще, если повнимательн... Sep 20 2013, 10:29 serj32 Цитата(V_G @ Sep 20 2013, 14:29) Вероятно... Sep 20 2013, 10:51  V_G Это старшие байты Ваших порогов, сдвинутых влево н... Sep 20 2013, 11:15 serj32 Очевидно чтобы реализовать Си код
if (u > 256)... Sep 20 2013, 16:58 _Pasha Цитата(serj32 @ Sep 20 2013, 19:58) Очеви... Sep 20 2013, 18:14 zombi Цитата(serj32 @ Sep 20 2013, 19:58) необх... Sep 20 2013, 18:56  serj32 Цитата(zombi @ Sep 20 2013, 22:56) Сравни... Sep 20 2013, 19:56 zombi Ход примерно правильный.
Но!!!
Я же уж... Sep 20 2013, 20:15 _Pasha Цитата(zombi @ Sep 20 2013, 23:15) Ход пр... Sep 21 2013, 15:56  serj32 Цитата(_Pasha @ Sep 21 2013, 19:56) Не уч... Sep 21 2013, 18:31   ae_ Если я правильно понял о чём речь, то в итоге долж... Sep 22 2013, 04:31 _Pasha Посмотрел.
1. out PORTD,0b00000011; - такой команд... Sep 22 2013, 04:18 zombi Цитата(_Pasha @ Sep 22 2013, 07:18) потом... Sep 22 2013, 08:15 serj32 Считаю,что тема была бы не законченной не приведя ... Oct 10 2013, 17:59 kolobok0 Цитата(serj32 @ Oct 10 2013, 21:59) Код..... Oct 10 2013, 20:46  Сергей Борщ QUOTE (kolobok0 @ Oct 10 2013, 23:46) 3) ... Oct 10 2013, 21:04 ILYAUL Кодcbi ADCSRA,ADIE ;Запрет прерывания от АЦП... Oct 10 2013, 19:04
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|