Вопросы начинающих PIC ASM

Поклонники продукции Microchip Technology Inc тусуются тут.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25259
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Вопросы начинающих PIC ASM

Сообщение КРАМ »

Вообще то, в папке MPASM Suite/Template есть примеры.

Код: Выделить всё

;**********************************************************************
;  1 - Vdd - 5 вольт
;  2 - OSC1 - 20 MHz
;  3 - OSC2 - 20 MHz
;  4 - MCLR
;  5 - RC5/CCP1 - выход ШИМ
;  6 - RC4 - Band 1
;  7 - RC3 - Band 0
;  8 - RC2 - Freq 2
;  9 - RC1 - Freq 1
; 10 - RC0 - Freq 0
; 11 - RA2 - включение девиации
; 12 - RA1/ICSPCLK
; 13 - RA0/ICSPDAT
; 14 - Vss - общий
;**********************************************************************
	list		p=16f1824
	#include	<p16f1824.inc>
	errorlevel	-302
;**********************************************************************	
	__CONFIG_CONFIG1,_CP_ON&_CPD_ON&_BOREN_OFF&_PWRTE_ON&_WDTE_OFF&_FOSC_HS&_MCLRE_ON
	__CONFIG _CONFIG2, _STVREN_ON&_BORV_HI&_LVP_OFF&_PLLEN_OFF
;**********************************************************************
arg			EQU	0x70
load_T0		EQU	0x79
aaa			EQU	0x7B
temp			EQU	0x7C
temp1		EQU	0x7D
;**********************************************************************
	ORG		0x000
		nop
		goto		main
	ORG		0x004
		movf		load_T0,w		; предустановку
		movwf	TMR0			; грузим в таймер
		incf		arg,f			; инкрементируем аргумент
		movf		arg,w
		andlw		0x7F
		btfsc		PORTC, 4
		goto		no_test
		btfss		PORTC, 3
 		goto		test
no_test	call		sin
		movwf	aaa
load_PWM	swapf	aaa,w
		andlw	b'00110000'
		iorlw		b'00001111'
		movlb	.5
		movwf	CCP1CON
		rrf		aaa,f
		rrf		aaa,w
		andlw	b'00111111'
		movwf	CCPR1L
		movlb	.0
		bcf		INTCON,T0IF
		retfie
test		movwf	aaa
		addwf	aaa, f
		comf		aaa, f
		goto		load_PWM
;----------------------------------------------------------------------
;----------------------------------------------------------------------
main		movlb	.0
		movlw	b'00100000'			; T0IE = 1
		movwf	INTCON
		clrf		PIR1
		clrf		T1CON
........
........
	END
Последний раз редактировалось КРАМ Вс июн 19, 2016 05:51:30, всего редактировалось 1 раз.
Реклама
Аватара пользователя
xterro
Опытный кот
Сообщения: 873
Зарегистрирован: Чт апр 12, 2012 07:19:59
Откуда: Тюмень

Re: Вопросы начинающих PIC ASM

Сообщение xterro »

Точно есть, даже под разные камни, я этого и не знал, спасибо :)
Реклама
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Re: Вопросы начинающих PIC ASM

Сообщение Albert_V »

Не самый лучший вариант спрашивать шаблоны....
По себе знаю: Когда сам "прошертишь" pdf на предмет регистров конкретного контроллера с привязкой к схеме - знаешь что к чему.
Если, даже, брать из "заготовок" - один фиг, документацию перечитывать надо.
----
P.S.
Кстати, в MPLAB-е есть достаточно "вменяемый" HELP по ASM (и не только).
Пока_без_кота
Потрогал лапой паяльник
Сообщения: 359
Зарегистрирован: Чт авг 08, 2013 01:06:54

Re: Вопросы начинающих PIC ASM

Сообщение Пока_без_кота »

Доброго времени суток. Подскажите пожалуйста, как в MPLAB 8.92 просто создать проект, состоящий из нескольких ассемблерных файлов. Какого типа должны подключаемые файлы, если в них есть исполняемый код, *.asm, или *.lib ? Прошу прощения, но из вменяемого материала в поиске, нашел только 186 страничный талмут (http://www.abiks1.narod.ru/files/mplab_ide.pdf) и в нем не могу этого найти.
Реклама
Эиком - электронные компоненты и радиодетали
yor
Говорящий с текстолитом
Сообщения: 1679
Зарегистрирован: Сб янв 19, 2008 23:57:27

Re: Вопросы начинающих PIC ASM

Сообщение yor »

Бедолага, как же без кота-то жить? А у меня есть :)) Изображение
А по теме, это уже не по теме. По MPLAB есть другая тема, или создайте, пож-ста.
Реклама
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Re: Вопросы начинающих PIC ASM

Сообщение Albert_V »

Создать проект - Project > Project Wizard. Далее по пунктам.
Далее, Cofigure > Select Device и выбрать тот же самый контроллер.
"Шапка файла" такого вида (прверить контроллер и путь к *.inc):

Код: Выделить всё

	include	<C:\Program Files (x86)\Microchip\MPASM Suite\P16LF1823.INC>
	LIST	P=PIC16LF1823
Начало исполняемого кода:

Код: Выделить всё

	ORG	0000
START
Окончание программы: Все файлы *.asm необходимо добавить в окне проекта в Source Files.
Рекомендую избегать кириллицы в названиях папки проекта, названиях файлов и т.д..
Реклама
Пока_без_кота
Потрогал лапой паяльник
Сообщения: 359
Зарегистрирован: Чт авг 08, 2013 01:06:54

Re: Вопросы начинающих PIC ASM

Сообщение Пока_без_кота »

Я вроде все делаю как вы объяснили, даже прочитал вот тут (http://www.microchip.su/showthread.php?t=10503) кое-что, и попробовал объявить свою процедуру с помощью директив extern и global (в прикрепленном скриншоте этого не видно, но я так пробовал), но к сожалению у меня ничего не получается.
Изображение
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Re: Вопросы начинающих PIC ASM

Сообщение Albert_V »

Ответил в ЛС.
Пока_без_кота
Потрогал лапой паяльник
Сообщения: 359
Зарегистрирован: Чт авг 08, 2013 01:06:54

Re: Вопросы начинающих PIC ASM

Сообщение Пока_без_кота »

Вроде разобрался. Во включаемом файле, в начале секции кода пишем магическое слово CODE, и все ассемблируется без ошибок. Спасибо всем помогавшим в личке :beer:
П.С. Теперь надо выяснить, как заменить конструкцию вида

Код: Выделить всё

	cblock	0Ch
Temp_1
Temp_2
Temp_3
	endc
на

Код: Выделить всё

	udata
Temp_1 res 1
Temp_2 res 1
Temp_3 res 1
При прямой замене линкер не матюгается, но HEX формировать не хочет :(
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15571
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Вопросы начинающих PIC ASM

Сообщение BOB51 »

Смотри замечания, выданные на вкладке Build окна Output - там причину обычно указывает.
8)
Пока_без_кота
Потрогал лапой паяльник
Сообщения: 359
Зарегистрирован: Чт авг 08, 2013 01:06:54

Re: Вопросы начинающих PIC ASM

Сообщение Пока_без_кота »

Есть PIC12F629, который имеет 2 таймера. Хочу делать программный UART, и хотелось бы использовать для него один из таймеров. Какой оптимальнее использовать для моих целей ? Хотелось бы более гибко конфигурируемый оставить на будущие неопределенные задачи, а более ущербный пустить на это дело.
Последний раз редактировалось Пока_без_кота Чт авг 11, 2016 21:50:30, всего редактировалось 1 раз.
Аватара пользователя
abc
Друг Кота
Сообщения: 3685
Зарегистрирован: Чт мар 20, 2008 01:06:40
Откуда: Севастополь

Re: Вопросы начинающих PIC ASM

Сообщение abc »

TMR0
Но, вообще, программный UART там делается тупо на задержках.
>(*.*)<
Котище огромно, ушасто, пушисто, глазасто, зубасто, колючелапо и мявай. (c)
Пока_без_кота
Потрогал лапой паяльник
Сообщения: 359
Зарегистрирован: Чт авг 08, 2013 01:06:54

Re: Вопросы начинающих PIC ASM

Сообщение Пока_без_кота »

abc писал(а):TMR0
Но, вообще, программный UART там делается тупо на задержках.
Спасибо за высказанное мнение. UART на задержках я уже сделал, теперь хочется нормальный, чтобы байтик принимался в прерывании, пока я в основном цикле своими делами занимаюсь.
Аватара пользователя
abc
Друг Кота
Сообщения: 3685
Зарегистрирован: Чт мар 20, 2008 01:06:40
Откуда: Севастополь

Re: Вопросы начинающих PIC ASM

Сообщение abc »

Байт на 9600bps принимается примерно 1 мСек.
Что такого важного и неотложного успеет сделать PIC12F629 за это время ?
>(*.*)<
Котище огромно, ушасто, пушисто, глазасто, зубасто, колючелапо и мявай. (c)
Пока_без_кота
Потрогал лапой паяльник
Сообщения: 359
Зарегистрирован: Чт авг 08, 2013 01:06:54

Re: Вопросы начинающих PIC ASM

Сообщение Пока_без_кота »

abc писал(а):...
Просто будет спать, проснется по прерыванию на ноге INT (начало старт-бита) и пойдет заранее опрашивать датчики, и готовить данные к отправке, а по окончания приема сразу выстрелит в ответ, и опять спать :)))
Аватара пользователя
abc
Друг Кота
Сообщения: 3685
Зарегистрирован: Чт мар 20, 2008 01:06:40
Откуда: Севастополь

Re: Вопросы начинающих PIC ASM

Сообщение abc »

Мне, в общем-то, все равно, но если МК будет спать, логично же и датчики перевести в слип-режим ? Нет ?
А коли так, то зачастую им надо гораздо больше времени, чем 1 мс, чтобы раздуплиться после сна. И еще больше времени, чтобы измерить то, что они там измеряют и выдать результат.
Отсюда - алгоритм : принять посылку (один ? два байта ?), разбудить датчики (а это могут быть и десятки мс), прочитать их, послать ответ. Все линейно и без лишней мозготни.
Но если хочется непременно с мозготней - Б-га ради, это не криминал :)
>(*.*)<
Котище огромно, ушасто, пушисто, глазасто, зубасто, колючелапо и мявай. (c)
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Вопросы начинающих PIC ASM

Сообщение Аlex »

abc писал(а):Но, вообще, программный UART там делается тупо на задержках.
Ага, а во время задержки прилетело прерывание от чего-либо и по УАРТу принялась лажа, из-за покалеченного тайминга :facepalm:
Правильно чел мыслит.
По сабжу. Таймер - любой удобный. Не такой уж и большой выбор...
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15571
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Вопросы начинающих PIC ASM

Сообщение BOB51 »

Пока_без_кота писал(а):Есть PIC12F629...
У "малых 8-лапок" больше двух задач одновременно запустить есть великий садомазохизм...
Концепция среднемладших ПИКовых, с учетом системы обработки прерываний, с самого начала тяготеет к периферийной поддержке системы - разработке с их помощью собственной СБИС под конкретную прикладную задачку для разгрузки основного МК.
Т.е. порт-расширитель, преобразователь интерфейса, преобразователь протокола, умный ЦАП/АЦП... и подобные устройства.
Основной упор при разработке делается на наличие в МК необходимых аппаратных модулей (благо из тех же соображений микрочип наштамповал кучу разнообразных модификаций с весьма удобными "стандартными" вариантами соотношениями начинки).
Посему уж если чего серьезного от приемопередатчика выжать надо то предпочтительно взять МК с соответствующим аппаратным модулем "на борту".
К примеру pic16f688 и/или pic16f628.
Есть и 8-лапые с EUSART - pic12f1822 - но в доступном для покупки пространстве их пока не наблюдается (да и это не совсем среднемладший - Enhanced Mid-range).
Кстати... правота такого подхода подтверждается и поисковиком на сайте микрочипа :
http://www.microchip.com/ParamChartSear ... &pageId=74
выбираешь искомые параметры в колонках и далее смотришь предлагаемый вариант для приобретения...(глотая слюнки)...
:cry:
:beer:
Пока_без_кота
Потрогал лапой паяльник
Сообщения: 359
Зарегистрирован: Чт авг 08, 2013 01:06:54

Re: Вопросы начинающих PIC ASM

Сообщение Пока_без_кота »

Ну, я смог недорого достать именно эти (хотя искал 12F675), так что приходится лепить из того, что есть. Тем более, что это просто хобби для самообучения, поэтому "чего-то серьезного" выжать, целью не ставится. Просто получить максимум, из того что имеется, попутно приобретая опыт :tea:
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15571
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Вопросы начинающих PIC ASM

Сообщение BOB51 »

Тогда обрати внимание на еще одну особенность - в обращении к РСФ у ПИКовых (и у АВР чуток) в отличии от mcs51 есть понятие "видимости" регистров данных/управления аппаратными модулями из определенных банков памяти.
Посему дабы не загромождать код излишними префиксами смены банков сразу приучись для программы обслуживания соответствующего аппаратного модуля использовать или "сопутствующий" регистровый банк или область udata_shr.
Предпочтение записи прожек управления в виде автономных библиотек (как делал ранее для 51-й).
:beer:
Ответить

Вернуться в «PIC»