Хостинг портала RFpro.ru: Московский хостер Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64 РАССЫЛКИ ПОРТАЛА RFPRO.RU Лучшие эксперты по данной тематике Номер выпуска: | 1535 | Дата выхода: | 08.02.2013, 10:00 | Администратор рассылки: | Лысков Игорь Витальевич (Старший модератор) | Подписчиков / экспертов: | 65 / 22 | Вопросов / ответов: | 1 / 1 | Консультация # 187148: Здравствуйте! У меня возникли сложности с таким вопросом: Можете мне помочь написать прогу Microsoft Visual C++ 6? Блок схема есть Нужно типа написать программные коды .Мне это очень интересно.Поможете? ... Консультация # 187148: Здравствуйте! У меня возникли сложности с таким вопросом: Можете мне помочь написать прогу Microsoft Visual C++ 6?
Блок схема есть

Нужно типа написать программные коды .Мне это очень интересно.Поможете? Дата отправки: 05.02.2013, 09:27 Вопрос задал: Питулин Александр Михайлович (Посетитель) Всего ответов: 1 Страница онлайн-консультации » Консультирует Лысков Игорь Витальевич (Старший модератор): Здравствуйте, Питулин Александр Михайлович! В связи с пожеланиями, программа на ассемблере 86, под tasm, формат com
PinD = rab изменено на rab = PinD. Так будет правильнее...
Если что непонятно, спрашивайте, отвечу на все Ваши вопросы...
Код : .model tiny ;Будем считать, что PORTD - это порт 400h, а PORTB - 500h PORTD equ 400h PORTB equ 500h .code .286 .startup ;инициализация mov cl, 0 ;Ugol = 0 mov dx, PORTD ;начинаем работать с портом D wait_pd5_0: in al, dx ;считываем состояние КН3 test al, 00100000b ;PD.5 = 0? jnz wait_pd5_0 ;ждем 0 mov dx, PORTB in al, dx ;считываем PB test al, 00000001b ;проверяем бит 0 jz get_rab ;=0 - считываем rab mov dx, PORTD ;!=0 wait_pd1_0: in al, dx ;считываем PD test al, 00000010b ;проверяем PD.1 jnz wait_pd1_0 ;ждем 0 in al, dx and al, 11100111b ;PD.3=0, PD.4=0 out dx, al jmp get_pb0 ;на считывание PB.0 get_rab: ;считываем rab mov dx, PORTD ;с порта PD wait_rab: in al, dx ;rab = PORTD shr al, 2 ;rab = rab >> 2 test al, al ;rab == 0 ? jz wait_rab ;ждем не 0 mov ah, al ;сохраним ah=rab wait_pd0_0: in al, dx ;считываем PD test al, 00000001b ;проверяем PD.0 jnz wait_pd0_0 ;ждем 0 in al, dx and al, 11101011b ;PD.2=0, PD.4=0 out dx, al mov dx, PORTB ;PB wait_pb1_0: in al, dx ;считываем PB.1 test al, 00000010b ;ждем 0 jnz wait_pb1_0 inc cl ;Ugol = Ugol + 1 cmp cl, ah ;Ugol < rab jae pd2_off ;нет - на выключение pd.2 wait_pb1_1: in al, dx ;считываем PB.1 test al, 00000010b ;ждем 1 jz wait_pb1_1 jmp wait_pb1_0 ;на ожидание PB.1 = 0 pd2_off: ;выключение PD.2 mov dx, PORTD in al, dx ;считываем PD or al, 00000100b ;PD.2 = 1 out dx, al wait_pd1_0_2: in al, dx ;считываем PD.1 test al, 00000010b ;ждем 0 jnz wait_pd1_0_2 and al, 11110111b ;включаем PD.3 = 0 out dx, al get_pb0: mov dx, PORTB wait_pb0_0: in al, dx ;считываем PB.0 test al, 00000001b ;ждем 0 jnz wait_pb0_0 mov dx, PORTD ;включаем PD.3 = 1, PD.4 = 1 in al, dx or al, 00001100b out dx, al jmp wait_pd5_0 ;на основной цикл (считывание состояния КН3, т.е. PD.5) end Версия программы, когда порты AVR отображаются на ячейки памяти. Так удобнее отлаживать алгоритм работы...
Код : .model tiny .data PORTD db ? PORTB db ? .code .286 .startup ;инициализация mov cl, 0 ;Ugol = 0 wait_pd5_0: mov al, PORTD ;считываем состояние КН3 test al, 00100000b ;PD.5 = 0? jnz wait_pd5_0 ;ждем 0 mov al, PORTB ;считываем PB test al, 00000001b ;проверяем бит 0 jz get_rab ;=0 - считываем rab ;!=0 wait_pd1_0: mov al, PORTD ;считываем PD test al, 00000010b ;проверяем PD.1 jnz wait_pd1_0 ;ждем 0 mov al, PORTD and al, 11100111b ;PD.3=0, PD.4=0 mov PORTD, al jmp get_pb0 ;на считывание PB.0 get_rab: ;считываем rab mov al, PORTD ;rab = PORTD shr al, 2 ;rab = rab >> 2 test al, al ;rab == 0 ? jz get_rab ;ждем не 0 mov ah, al ;сохраним ah=rab wait_pd0_0: mov al, PORTD ;считываем PD test al, 00000001b ;проверяем PD.0 jnz wait_pd0_0 ;ждем 0 mov al, PORTD and al, 11101011b ;PD.2=0, PD.4=0 mov PORTD, al wait_pb1_0: mov al, PORTB ;считываем PB.1 test al, 00000010b ;ждем 0 jnz wait_pb1_0 inc cl ;Ugol = Ugol + 1 cmp cl, ah ;Ugol < rab jae pd2_off ;нет - на выключение pd.2 wait_pb1_1: mov al, PORTB ;считываем PB.1 test al, 00000010b ;ждем 1 jz wait_pb1_1 jmp wait_pb1_0 ;на ожидание PB.1 = 0 pd2_off: ;выключение PD.2 mov al, PORTD ;считываем PD or al, 00000100b ;PD.2 = 1 mov PORTD, al wait_pd1_0_2: mov al, PORTD ;считываем PD.1 test al, 00000010b ;ждем 0 jnz wait_pd1_0_2 and al, 11110111b ;включаем PD.3 = 0 mov PORTD, al get_pb0: mov al, PORTB ;считываем PB.0 test al, 00000001b ;ждем 0 jnz get_pb0 mov al, PORTD or al, 00001100b ;включаем PD.3 = 1, PD.4 = 1 mov PORTD, al jmp wait_pd5_0 ;на основной цикл (считывание состояния КН3, т.е. PD.5) end
Оценить выпуск | Задать вопрос экспертам главная страница | стать участником | получить консультацию техническая поддержка | восстановить логин/пароль Дорогой читатель! Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно! МЫ РАБОТАЕМ ДЛЯ ВАС! |
Комментариев нет:
Отправить комментарий