Детский вопрос по PIC Assembler

Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить
Аватара пользователя
Coldheart
Прорезались зубы
Сообщения: 244
Зарегистрирован: Пт сен 10, 2010 20:39:32
Откуда: Украина Луганская обл.

Детский вопрос по PIC Assembler

Сообщение Coldheart »

Подскажите пожалуйсто...
По команде сдвига RLF
Имеем код бегущего огонька для PIC16F84

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

            LIST        P=PIC16F84A
            __CONFIG    0x3FF1

STATUS      EQU         0x03
PORTB       EQU         0x06
TRISB       EQU         0x06
Reg_1       EQU         0x0C
Reg_2       EQU         0x0D
Reg_3       EQU         0x0E

            org         0           ; начало программы            
; подготовительные моменты
            bsf         STATUS,5    ; переход в Банк 1
            clrf        TRISB
            bcf         STATUS,5    ; переход назад в Банк 0
            clrf        PORTB       ; очистка порта
            bsf         STATUS,0    ; установка нулевого бита в единицу

; установка сигналов на порту B
m1          rlf         PORTB,1     ; <<< сдвиг в регистре PORTB
            call        Pause       ; <<<
            goto        m1          ; <<< переход на метку (зацикливание)


;delay = 500000 machine cycles
Pause  задержка..
           
            return

            end                 
Подскажите, почему такая-же фишка не работает с 16f676(на секунду появляется высокий уровень на PC0, а дальше - тишина), возможно из-за неполноценного PortС?? И почему в строчке RLF PORTC,1, стоит именно единица?

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

            LIST        P=PIC16F676
            __CONFIG    0x03115

STATUS      EQU         0x03
PORTC       EQU         0x07
TRISC       EQU         0x07
Reg_1       EQU         0x20
Reg_2       EQU         0x21
Reg_3       EQU         0x22

            org         0           ; начало программы            
; подготовительные моменты
            bsf         STATUS,5    ; переход в Банк 1
            clrf        TRISC
            bcf         STATUS,5    ; переход назад в Банк 0
            clrf        PORTC       ; очистка порта
            bsf         STATUS,0    ; установка нулевого бита в единицу

; установка сигналов на порту B
m1          rlf         PORTC,1     ; <<< сдвиг в регистре PORTC
            call        Pause       ; <<<
            goto        m1          ; <<< переход на метку (зацикливание)

;delay = 500000 machine cycles
Pause    задержка
           
            return


            end             
Реклама
Аватара пользователя
botchin
Поставщик валерьянки для Кота
Сообщения: 2029
Зарегистрирован: Чт дек 27, 2012 20:46:09
Откуда: Болгария, г. Лом

Re: Детский вопрос по PIC Assembler

Сообщение botchin »

Coldheart писал(а):возможно из-за неполноценного PortС??
Прочитайте документацию на 16f676. PortС по умолчанию является входом ADC. Eго надо определить как цифровой вход/въход.
Coldheart писал(а):почему в строчке RLF PORTC,1, стоит именно единица?
Прочитайте документацию на 16f676. Раздел Instruction set summary там (объчно) есть табличка OPCODE FIELD DESCRIPTION там и указано как работает ета единица (или ноль). 1- запис в регистре, 0 в акумуляторе
Лом - ето город в Болгарии, а не инструмент юстировки електроники.
Реклама
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: Детский вопрос по PIC Assembler

Сообщение Zhuk72 »

Для начала откройте это.
Coldheart писал(а): Подскажите, почему такая-же фишка не работает с 16f676(на секунду появляется высокий уровень на PC0, а дальше - тишина), возможно из-за неполноценного PortС??
Стр. 28-29
Coldheart писал(а): И почему в строчке RLF PORTC,1, стоит именно единица?
Стр. 73-74

P.S. Уже опередили ))
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Ответить

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