WMmail.ru - сервис почтовых рассылок

среда, 14 декабря 2011 г.

RFpro.ru: Ассемблер? Это просто! Учимся программировать

 
Если выпуск не отображается, вы можете прочесть его на сайте Отказаться от рекламы
  
  
Время покупать подарки! Скидки до 70%!
  
  
  

  Мои подписки      Мои группы      Мои новости     
        Автор 
Калашников О.А.
      
  
Компьютеры и интернет   →   Софт   →   Программирование   →   RFpro.ru: Ассемблер? Это просто! Учимся программировать
  
RFpro.ru: Ассемблер? Это просто! Учимся программировать
 
 

Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Коцюрбенко Алексей aka Жерар
Статус: Профессор
Рейтинг: 3192
• повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 2596
• повысить рейтинг »
Абаянцев Юрий Леонидович aka Ayl
Статус: Профессионал
Рейтинг: 2076
• повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Assembler (Ассемблер)

Номер выпуска:1497
Дата выхода:14.12.2011, 23:00
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:184 / 63
Вопросов / ответов:1 / 2

Консультация # 184724: Здравствуйте! Прошу помощи в следующем вопросе:Здравствуйте! У меня возникли сложности с таким вопросом:Нужно написать программу для учебного лабораторного комплекса SDK-1.1, 5. Написать программу, обеспечивающую поочередное «гашение» светодиодов, расположенных на учебном макете,от середины к краям. Вторя половина линейки должны быть ин...


Консультация # 184724:

Здравствуйте! Прошу помощи в следующем вопросе:Здравствуйте! У меня возникли сложности с таким вопросом:Нужно написать программу для учебного лабораторного комплекса SDK-1.1, 5. Написать программу, обеспечивающую поочередное «гашение» светодиодов, расположенных на учебном макете,от середины к краям. Вторя половина линейки должны быть инверсией первой. Интервал «гашения» 1сек. Процессор 8051.Буду очень вам благодарен,если вы сумеете мне помочь.

Дата отправки: 09.12.2011, 11:25
Вопрос задал: Дмитрий (Посетитель)
Всего ответов: 2
Страница онлайн-консультации »


Консультирует Лысков Игорь Витальевич (Старший модератор):

Здравствуйте, Дмитрий!
Вот наглядное преимущество табличного задания выводимых значений!
Подправил таблицу из вопроса № 184719 и готово решение для данного вопроса!
Программа постоянно сначала засвечивает светодиоды от центра к краям, потом их гасит.
Вот такая получается "красота". smile

Код :
#include	<ADuC812.h> NAME	Primer_5 SV	EQU	7h	; адрес порта светодиодов в ПЛИС PROG_WM	SEGMENT CODE PROG_T0	SEGMENT CODE BITVAR	SEGMENT BIT STACK	SEGMENT IDATA  RSEG	STACK 	DS	10H	; 16 Bytes Stack  ; Обработчик прерывания при перезагрузки МК CSEG	AT	0h 	jmp	START  ; Вектор прерывания от таймера 0 CSEG	AT	0Bh 	jmp	Timer0  ; Вектор прерывания от таймера 0 в пользовательской таблице SDK CSEG	AT	200Bh 	jmp	Timer0  ; Подпрограмма обработчика прерывания от таймера 0 RSEG	PROG_T0 Timer0: push	PSW 	djnz	r4,Timer0ret		;20*50мс = 1сек 	mov	r4,#20			;заряжаем на отсчет следующей 1 сек 	setb	IRQ_T0			;взводим флаг Timer0ret: 	clr	tr0			;остановим таймер 	mov	th0,#high(0ffffh-50000)	;заряжаем таймер на 50000 мкс 	mov	tl0,#low(0ffffh-50000) 	setb	tr0			;запускаем таймер 	pop	PSW 	RETI  ; Основная программа CSEG	AT	2100h 	USING	0 START:	mov	SP,#STACK-1	; инициализация стека ; Настройка таймера 0 как 16-разрядного в режиме автоперезагруз-ки 	mov	tmod,#00000001b		;таймер 0 - 16-битный счетчик 	mov	th0,#high(0ffffh-50000)	;заряжаем таймер на 50000 мкс 	mov	tl0,#low(0ffffh-50000) 	mov	r4, #20			;счетчик прерываний таймера 20*50 = 1 сек 	setb	tr0			;запускаем таймер 	setb	ea			;разрешаем все прерывания 	setb	et0			;разрешаем прерывание от таймера 0  	mov	R1,#SV			;адрес регистра светодиодов 	mov	R7,#07h			;индекс в таблице, после +1 и and 07h будет 0 	mov	dptr,#table		;адрес таблицы 	 wait:	jnb	IRQ_T0,wait		;ждем бит 	clr	IRQ_T0			;сбросим его 	 	mov	a,r7			;индекс 	inc	a			;на следующий 	anl	a,#07h			;оставим 3 мл бита (0-07h), у нас 8 значений 	mov	r7,a			;сохраним 	 	movc	a,@a+dptr		;читаем из таблицы значение 	call	Wr_Max			;и на светодиоды!  	jmp	wait			;ждем 1 секунду  ;данные для индикации на светодиодах table:	db	00011000b, 00111100b, 01111110b, 11111111b 	db	11100111b, 11000011b, 10000001b, 00000000b 	  ; Подпрограмма работы с регистрами ПЛИС (Запись в рег. ПЛИС) RSEG	PROG_WM ; R1 - адрес регистра ПЛИС, ACC - записываемое значение Wr_Max: mov	R3,DPP			;сохраним старое значение 	mov	DPP,#8h			;перейдем в банк 8 	movx	@R1,A			;пишем в регистр 	mov	DPP,R3			;восстановим банк 	RET  ; Переменные в битовой области RSEG	BITVAR IRQ_T0:	DBIT	1			;бит для отработки в основном цикле  	END

Консультировал: Лысков Игорь Витальевич (Старший модератор)
Дата отправки: 09.12.2011, 11:53
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Andriana (1-й класс):

Здравствуйте, Дмитрий!

Ниже представлена программа - адресация памяти 2000H до 7FFFH.
зажигание светодиодов через 1 секунду
.equ locat, 0x2000 ;Точка входа



;82C55 адресация портов - если необходимо
.equ port_a, 0xF800 ;port A
.equ port_b, 0xF801 ;port B
.equ port_c, 0xF802 ;port C
.equ port_abc_pgm, 0xF803 ;конфигурация in/out для 3 портов выше
.equ port_d, 0xF900 ;port D
.equ port_e, 0xF901 ;port E
.equ port_f, 0xF902 ;port F
.equ port_def_pgm, 0xF903 ;конфигурация in/out для 3 портов выше


.equ cout, 0x0030
.equ cin, 0x0032
.equ phex, 0x0034
.equ phex16, 0x0036
.equ pstr, 0x0038
.equ esc, 0x003E
.equ newline, 0x0048
.equ pint8u, 0x004D
.equ pint16u, 0x0053


.org locat
.db 0xA5,0xE5,0xE0,0xA5
.db 35,255,0,0
.db 0,0,0,0
.db 0,0,0,0
.db 0,0,0,0
.db 0,0,0,0
.db 0,0,0,0
.db 255,255,255,255
.db "Blink LEDs",0
.org locat+64



startup:
mov dptr, #port_def_pgm
mov a, #128
movx @dptr, a
begin:
mov dptr, #table

loop:
clr a
movc a, @a+dptr
acall update
inc dptr
lcall esc
jc exit
clr a
movc a, @a+dptr
jz begin
acall delay
inc dptr
sjmp loop
exit: ljmp 0





update:
push dph
push dpl
mov dptr, #port_e
movx @dptr, a
pop dpl
pop dph
ret




delay:
mov r0, a
dly2: mov r1, #250
dly3: nop
nop
nop ;6 NOPs + DJNZ is 4.34 us
nop ;при условии что используется 22.1184 MHz кристалл
nop
nop
djnz r1, dly3
djnz r0, dly2
ret



;здесь при необходимо сти можно менять последовательность зажигания светодиодов.
table: .db 01111111b, 90
.db 00111111b, 70
.db 00011111b, 50
.db 10001111b, 40
.db 11000111b, 40
.db 11100011b, 40
.db 11110001b, 40
.db 11111000b, 50
.db 11111100b, 70
.db 11111110b, 90
.db 11111100b, 70
.db 11111000b, 50
.db 11110001b, 40
.db 11100011b, 40
.db 11000111b, 40
.db 10001111b, 40
.db 00011111b, 50
.db 00111111b, 70
.db 255,0


вот в принципе и все вы можете использовать эту программу универсально
только измените последовательность в таблице
УДАЧИ


Консультировал: Andriana (1-й класс)
Дата отправки: 10.12.2011, 04:21
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


 
 
Комментировать выпуск
     В избранное

Прошлые выпуски
RFpro.ru: Ассемблер? Это просто! Учимся программировать    13 декабря 2011, 22:36
RFpro.ru: Ассемблер? Это просто! Учимся программировать    10 декабря 2011, 21:34
RFpro.ru: Ассемблер? Это просто! Учимся программировать    08 декабря 2011, 22:03

Все выпуски рассылки

15 декабря 2011 отмечают:
Международный день чая
День работников суда Украины
День памяти журналистов, погибших при исполнении профессиональных обязанностей
День памяти жертв &laquo;Греческой операции&raquo; НКВД

Именины: Андрей, Мирра, Николай, Сергей, Степан, Тамара, Афанасий, Борис, Владимир, Иван, Кирилл, Маргарита, Мария, Матвей
 
 
  
Блаженство для двоих! Блаженство для двоих!
Скидка до 90% на спа-программу для двоих!

  Хотите идеальный маникюр? Хотите идеальный маникюр?
Наращивание ногтей со скидками до 90%!

  Курсы английского в ЕШКО. Курсы английского в ЕШКО.
Дистанционно.Все уровни. Новогодние цены от 397 руб. в месяц. Пробный урок бесплатно!

 
  

Subscribe рекомендует
 
Компьютеры и интернет  →   рассылки   и   группы
  
Обучающая, техническая, научно-популярная литература
В рассылке даны ссылки на скачивание электронных книг по тематике: "Обучающая, техническая, научно-популярная литература"
Подписчиков: 403
  Искусство Web-Мастеринга
На нашем сайте собраны разнообразные статьи по веб-дизайну, веб-программированию, раскрутке сайтов и всему, что связано с планированием, созданием и продвижением сайтов.
Подписчиков: 228
  Pro-Delphi - доступные видео уроки про Delphi
В доступной форме, используя наглядные видео ролики, двигаясь от простого к сложному, я буду делиться собственным многолетним опытом разработки приложений в среде Delphi
Подписчиков: 132
 
 
 
Подписан адрес: admin10383.deep@blogger.com
Код этой рассылки: comp.prog.assembler
Архив рассылки
Отписаться:  На сайте  Почтой
Поддержка подписчиков
Убрать рекламу
Другие рассылки этой тематики
Другие рассылки этого автора
 
Рассылка производится: Subscribe.Ru / ЗАО «Интернет-Проекты» / О компании / Политика конфиденциальности

Комментариев нет:

Отправить комментарий