ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
25 ноября
52891 Топик полностью
AVR (03.03.2006 22:44, просмотров: 1) ответил MDenis на Вот млин гадство...
Это бред какой-то, а не код В самом первом фрагменте все ОК, только вызывает сомнения необходимость применения CALL вместо RCALL (если код длинный - тогда ОК, иначе достаточно RCALL):
	sbi	PORTB,LE
	ldi	r16,1 ;Предположу, что этот параметр задает длительность паузы, так?
	call	PAUSE
	cbi	PORTB,LE
Второй фрагмент уже неверен - не загружен параметр паузы в r16 и не учтена задержка реакции PINx на изменение состояния PORTx (про задержку читай мануал). Да и сама необходимость проверки порта после вывода бессмысленна:
	sbi	PORTB,LE
	call	PAUSE ;А где загрузка в r16 параметра для паузы?

loopLE:
	cbi	PORTB,LE
	sbic	PINB,LE ;Для того, чтобы это работало корректно, нужен NOP после CBI
	rjmp	loopLE
Третий же вариант и вовсе чудной - зачем дублировать запись в другой порт (к тому же такой "опасный", как PORTF - с JTAG, input-only когда M103C=0) - это уже никчемная паранойя. А вот WDR, затесавшийся после этого фрагмента, может оказаться ключевым - возможно, WD тебе и портил всю картину в первом случае. Отключи WD и попробуй заново первый кусок - всё должно работать. А Мега не косит, будь уверен :)