Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2011, 16:45   #1
port8080
Новичок
Джуниор
 
Регистрация: 23.12.2011
Сообщений: 2
По умолчанию Работа со светодиодами

Кароче задача следующая.

Нам (подгруппе из 3 человек) на учёбе дали задание написать код для работы со светодиодами (7 штук) и кнопкой.А именно необходимо чтобы диоды загорались один за другим в одну сторону с 1 по 7 ,и так всё время,а по нажатию кнопки меняли направление загорания.
Вот примерный код, здесь просто диоды горят один за другим по очереди с небольшой задержкой,в всё время в одну сторону,ну как я понял.

list p=16f887
#include p16f887.inc

x EQU 020h
y EQU 021h
z EQU 022h

ORG 0000h
GOTO INIT

ORG 0100h
INIT

BSF STATUS,RP0 ;переключиться в первый банк памяти
CLRF TRISD ;все разряды порт D работают на выход
BCF STATUS,RP0 ;переключиться обратно в нулевой банк памяти
CLRF PORTD ;очистить порт Д

MAINLOOP

LOOP1
BSF PORTD,7 ;установить 0 разряд в порт D
CALL DELAY
BCF PORTD,7 ;сбросить 0 разряд в порт D
CALL DELAY2
INCFSZ y,F
GOTO LOOP1

LOOP2
BSF PORTD,7
BCF PORTD,6
CALL DELAY
BCF PORTD,7
BSF PORTD,6
CALL DELAY2
DECFSZ y,F
GOTO LOOP2


LOOP3
BSF PORTD,6
BCF PORTD,5
CALL DELAY
BCF PORTD,6
BSF PORTD,5
CALL DELAY2
DECFSZ y,F
GOTO LOOP3

LOOP4
BSF PORTD,5
BCF PORTD,4
CALL DELAY
BCF PORTD,5
BSF PORTD,4
CALL DELAY2
DECFSZ y,F
GOTO LOOP4

LOOP5
BSF PORTD,4
BCF PORTD,3
CALL DELAY
BCF PORTD,4
BSF PORTD,3
CALL DELAY2
DECFSZ y,F
GOTO LOOP5

LOOP6
BSF PORTD,3
BCF PORTD,2
CALL DELAY
BCF PORTD,3
BSF PORTD,2
CALL DELAY2
DECFSZ y,F
GOTO LOOP6

LOOP7
BSF PORTD,2
BCF PORTD,1
CALL DELAY
BCF PORTD,2
BSF PORTD,1
CALL DELAY2
DECFSZ y,F
GOTO LOOP7

LOOP8
BSF PORTD,1
BCF PORTD,0
CALL DELAY
BCF PORTD,1
BSF PORTD,0
CALL DELAY2
DECFSZ y,F
GOTO LOOP8

LOOP9
BSF PORTD,0
BCF PORTD,7
CALL DELAY
BCF PORTD,0
BSF PORTD,7
CALL DELAY2
DECFSZ y,F
GOTO LOOP2


DELAY
MOVF y,W
MOVWF x
DELAY_LOOP
MOVLW .128
MOVWF z
DECFSZ z,F
GOTO $-1
DECFSZ x,F
GOTO DELAY_LOOP
RETURN

DELAY2
COMF y,W
MOVWF x
DECFSZ x,F
GOTO $-1
RETURN

END


Помогите решить данную проблему,да именно проблему поскольку я практически ничего не смыслю в ассемблере, а изучать его уже нет времени.

И по возможности объясните каждый шаг, может я тогда наконец-то пойму хотя бы приблизительно как всё это работает.
port8080 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с матрицами (норма матрицы, работа со строками) Neitrosha Помощь студентам 1 26.11.2010 20:19
Задача. Работа с псевдослучайными последовательностями (ПСП). Работа с цветом. 0101 Помощь студентам 3 17.12.2009 23:57
Работа с webbrowser - Фреймы, работа с конкретным феймом в фрейме NewDelphi Фриланс 2 08.10.2009 11:00