![]() |
Модераторы: PILOT, ManiaK, Mazzi |
![]() ![]() ![]() |
|
БОЕК1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 29.6.2019 Репутация: нет Всего: нет |
помогите кто-нибудь переписать код ассемблера на си, микроконтроллер pic12f629
![]() ![]() list p = 12f629 __config 01FC4h ;*** Переменные ****************************************** CBLOCK 0x20 ; Начальный адрес блока пользовательской памяти T1 T2 ENDC ;**** Константы / Адреса регистров ************************ Status equ 03h ; выбор банка Cmcon equ 19h ; компаратор (банк 0) OSCCAL equ 10h ; хранение калибровочной константы (банк 1) INTCON equ 0Bh ; разрешение(1)/запрет(0) прерываний (любой банк) IOCB equ 16h ; регистр разрешения прерываний по GP0...GP5 INDF equ 0h ; регистр косвенной адресации FSR equ 04h ; регистр адреса при косвенной адресации GPIO equ 05h ; управление защелками порта (банк 0) TrisIO equ 05h ; выбор направления работы выводов порта (банк 1) ;********************************************************* org 0 goto start org 4 ;********************************************************* ;-— Смотрим, откуда прерывание —- btfss GPIO,3 ; если кнопка нажата - проп.следующ.команду goto priem ;-— Инвертировать светодиод —- knopka movlw .16 ; 00010000 - маска для инверсии сост-я светодиода xorwf GPIO,1 ; инвертируем состояние светодиода goto exit ;-— Если сигнал с приёмника —- priem btfsc GPIO,2 ; если на входе ILMS ноль - пришёл сигнал goto exit ;-— Проверяем, не помеха ли это —- movlw .4 movwf T1 ; кол-во циклов проверки timer movlw .25 movwf T2 ; таймер на каждую проверку time_cikl nop decfsz T2,1 goto time_cikl btfsc GPIO,2 ; если на входе 0 - подтвержд-ся сигнал и проп.выход goto exit decfsz T1,1 goto timer ;-— Если разрешено, то инвертировать состояние оптрона —- btfsc GPIO,4 ; если светодиод вкл. - пропустить следующ.команду goto exit movlw .1 ; 00000001 xorwf GPIO,1 ; после этого выход оптрона инвертируется exit call pause ; пауза bcf INTCON,0 ; сбросить флаг прерываний retfie ;********************************************************* ;*** КОНФИГУРИРОВАНИЕ КОНТРОЛЛЕРА ************************ ;****** Калибровка Генератора **************************** start bsf Status,5 Call 3FFh ; Загрузить калибровочную константу в w movwf OSCCAL ;*** Установка направления работы ног ******************** bcf Status,5 ; перейти в банк 0 clrf GPIO ; инициализация защелок (все выходы равны нулю) movlw .7 ; биты 0..2 поднять movwf Cmcon ; компарат.выключен, GP0,GP1,GP2 - цифров.вх/вых bsf Status,5 ; Перейти в 1-й банк movlw b'00101100' ; настройка входов/выходов movwf TrisIO bcf Status,5 ; перейти в нулевой банк ;*** Включить оптрон и погасить светодиод **************** bsf GPIO,0 ; поднять нулевой бит (включить свет) nop bsf GPIO,4 ; поднять 4-й бит (выключить светодиод) ;*** Разрешить прерывания на входах GP2, GP3 ************* bsf Status,5 ; перейти в первый банк movlw .12 ; .12 = 00001100 movwf IOCB ; разрешить прерыв.на GP2, GP3, на остальных - нет bcf Status,5 ; Перейти в 0-й банк movlw .8 ; .8 = 00001000 movwf INTCON ; разрешить прерывание от GPIO bsf INTCON,7 ; разрешить немаскированные прерывания ;------------------— work nop ; ждём прерывание goto work ;------------------— pause movlw .100 movwf T1 cikl1 movlw .255 movwf T2 cikl2 nop nop decfsz T2,1 goto cikl2 decfsz T1,1 goto cikl1 return end ;---------------------------------------------------------
Это сообщение отредактировал(а) БОЕК1 - 29.6.2019, 22:41 |
|||
|
||||
vol4ek |
|
||||
![]() конь в пальто ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 1.5.2011 Где: Минск Репутация: нет Всего: 0 |
коряво конечно но тебе пойдет.
компилятор xc8 v2.05 Это сообщение отредактировал(а) vol4ek - 3.7.2019, 20:34 |
||||
|
|||||
vol4ek |
|
|||
![]() конь в пальто ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 1.5.2011 Где: Минск Репутация: нет Всего: 0 |
было поздно я забыл одну проверку. функция прерываний должна быть такая
Это сообщение отредактировал(а) vol4ek - 3.7.2019, 20:35 Присоединённый файл ( Кол-во скачиваний: 3 ) ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)" | |
|
На данный раздел помимо Правил форума распространяются текже следующие правила:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |