Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
0 / 0 / 3
Регистрация: 10.11.2015
Сообщений: 35

Светофор на микроконтроллере 8051

15.06.2018, 12:21. Показов 2462. Ответов 2

Студворк — интернет-сервис помощи студентам
Написал программу на ассемблере, которая реализует светофор, однако при переключении светофора с красного цвета к зеленому красный и желтый должны одновременно загораться и гаснуть, а я сделал так, что загорается красный, гаснет, загорается желтый, гаснет, загорается зеленый.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
org 0000h
jmp main
 
org 000bh                       ;обработчик прерывания таймера 0 расположен по адресу 0x0b
clr tr0                         ;останавливаем таймер
jnb ACC.1, oth                  ;проверяем горит ли желтый 
    jnb F0, rg1                 ;если да, то проверяем в какую сторону двигается светофор
        RR A                    ;если к красному, то сдвигаем вправа
        clr F0                  ;меняем направление
        jmp proc_int0           ;переходим к настройке таймера
rg1:RL A                        ;если к зеленому, то сдвигаем влево
    setb F0                     ;меняем направление
    jmp proc_int0               ;переходим к настройке таймера
    ;если желтый не горит, то делаем все тоже самое, но без смены направления
oth:jnb F0, rg2
        RR A
        jmp proc_int0
rg2:RL A
    jmp proc_int0
proc_int0:mov TMOD,#00000001b   ;
     mov TH0, #HIGH(-1000)      ;настройка таймера
     mov TL0, #LOW(-1000)       ;
mov TCON,#00010000b             ;
mov P0, A                       ;передача значения на порт
reti
 
org 40h
main:       
setb ea                     ;разрешаем прерывания
setb et0                    ;разрешаем прерывания от таймера
clr F0                      ;бит F0 показывает в какую сторону движется светофор, 1 - от зеленого к красному, 0 - наоборот
mov A, #00000001b           ;заносим в аккумулятор начальное значение(красный цвет)
mov P0, A                   ;передаем на порт Р0
mov TMOD,#00000001b         ;устанавливаем таймер в 16 битный режим
    mov TH0, #HIGH(-1000)   ;устанавливаем на 1 мс
    mov TL0, #LOW(-1000)    ;столько будет гореть каждый цвет
mov TCON,#00010000b         ;запускаем таймер
 
jmp $                       
end
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.06.2018, 12:21
Ответы с готовыми решениями:

Светофор: прямоугольник и три окружности. При нажатии нужной клавиши светофор должен загораться нужным светом
Ребят, подскажите пожалуйста, что не так в программе. Условие: Нарисуйте светофор: прямоугольник и три окружности. При нажатии нужной...

Светофор/Светофор с таймером/Сигнализация на дверь
Нужна помощь по написанию кодов (Светофор/Светофор с таймером/Сигнализация на дверь) в программе AVR Assembler. В AVR Assembler ничего...

Освещение на микроконтроллере
Добрый день, уважаемые! Мне необходимо сделать аварийное освещение на микроконтроллере со следующим функционалом: Питание от...

2
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,609
18.06.2018, 02:12
Цитата Сообщение от genreator Посмотреть сообщение
Написал программу на ассемблере, которая реализует светофор, однако при переключении светофора с красного цвета к зеленому красный и желтый должны одновременно загораться и гаснуть
. Странное желание. Но увы код, который вы где-то нарыли делает совсем другое. Он реализует алгоритм нормального светофора.
0
1184 / 670 / 113
Регистрация: 15.05.2012
Сообщений: 4,078
18.06.2018, 10:15
Цитата Сообщение от genreator Посмотреть сообщение
Написал
В чём проблема написать так, как надо?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.06.2018, 10:15
Помогаю со студенческими работами здесь

Компьютер на микроконтроллере
Иногда хочется чего-то простого и своего, путь примитивное как ZX, но на базе современных чипов. То есть чтобы купить дешёвую платку МК к...

Диммер на микроконтроллере
Доброго времени суток! Надеюсь на вашу помощь. Собрал диммер по схеме с сайта http://www.mcuprojects.narod.ru/dymmerSIR/DimmerSIR.html ...

Будильник на микроконтроллере
Помогите пожалуйста, хочу сделать систему напоминания на микроконтроллере. Работаю на ATmega8. В систему должно входить несколько...

Таймер на микроконтроллере
помогите пожалуйста составить схему электрическую структурную таймера

Радиоуправление на микроконтроллере
Привет, хочу собрать передатчик с приемником на микроконтроллере, нашел схемку http://www.radio-magic.ru/transmitters/257-radiooupravlenie....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru