Свежие обсуждения
Микроконтроллеры

MSSP(IIC) и USART

1 5 13

Вот, выкладываю.

117858.asm

 

AHTOXA:
Вот
Уже вижу некоторые ошибочки синтаксиса, плюс, регистры не определены.
МПЛАБа страчна ругася будит аднака.
Займуся чуть попозже.

 

AHTOXA, подредактировал Ваш текст (в основном вставил недастающие указатели размещения результата - W/F). Проверьте, плиз.

118207.asm

 

Так вроде когда W, можно не писать, не?
Всё вроде нормально, только rx_flag - это не байт, а бит.

Ну и осталось вживить в основной код

 

AHTOXA:
не байт, а бит
Гы! Тогда надо регистр указывать.

когда W, можно не писать
Не-а. МПЛАБа по умолчанию везде старается F подставить. Кстати, я тоже, в основном, его везде расставил. Вы точно всё хорошо проверили?

осталось вживить
А разве не заметили, что я это уже сделал. Осталось только маленько согласовать.

 

Gregory: Гы! Тогда надо регистр указывать.

Что это за дурацкий ассемблер? А может, можно написать


#define rx_flag WORKST,4

?

Gregory: МПЛАБа по умолчанию везде старается F подставить.

Ну мало ли что он там старается? Если не поставить, то что, ругается?

Gregory: Вы точно всё хорошо проверили?

Логику я проверил ещё перед загрузкой, несколько раз. Синтаксис я проверить не могу, у меня нет компилятора.

Gregory: А разве не заметили, что я это уже сделал. ;)

Нет Я вижу, что Вы вставили код прерывания в основной файл, но не вижу обращения к ф-ии putch, или чего-то наподобие

 

AHTOXA:
дурацкий ассемблер
Ну, почему же, сразу дурацкий? Вы же флаг в каком-то регистре поднимаете.

#define
Чёй-то не припоминаю такой директивы. Да и пишутся они по другому. Можно, конечно, макрос состряпать, но не вижу смысла.

ругается?
Не правильно выразился. Он не "пытается", а "подставляет". А нам только сообщает об этом.

Логику я проверил ещё перед загрузкой
Так перед загрузкой ещё не были расставлены указатели результата. Синтаксис-то я проверю, не проблема. А вот логику могу напутать. У Вас, там, даже в одном месте не проставлено, куда сдвиг осуществлять.

не вижу обращения
Так я же и говорю:
Осталось только маленько согласовать.

 

Gregory: Ну, почему же, сразу дурацкий? ;)

Дурацкий - дурацкий Это одна из причин моей нелюбви к пикам. И ведь есть же нормальный ассемблер, от параллакса, с человеческими мнемониками! Нет, надо выпендриться

Там всё было, и

rx_pin       equ     PORTB.7,

и

	decsz   t0
	jmp     :syncloop0
	setb    video_tris
	mov     W,#4
	mov     t0,W
:syncloop1
	decsz   t0
	jmp     :syncloop1
	decsz   vsync_count

Ну разве не красота?

Gregory: Не правильно выразился. Он не "пытается", а "подставляет".

То есть, можно не писать? Я помню, что можно!
movwf PORTB - это то же, что и movwf PORTB,F ;
incf TXCOM - это то же, что и incf TXCOM,F

Gregory: У Вас, там, даже в одном месте не проставлено, куда сдвиг осуществлять.

Если не поставлено, то по умолчанию! (Видимо как раз то, что мпасм пытается подставить)

 

AHTOXA:
можно не писать
Оно, конечно, да. Но я там, в одном (а может и не в одном) месте, W поставил, а не F.

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

 

AHTOXA: Что это за дурацкий ассемблер? А может, можно написать

#define rx_flag WORKST,4

Конечно можно! Постоянно пользуюсь.
А ассемблер нормальный.