При разборе программы, в разделе определения названия и положения регистров общего назначения встретилось подобное описание регистров: ON_FORWARD EQU (1 <<ForLoBit) | (1 <<ForHiBit) OFF_FORWARD EQU (1 <<ForHiBit) Чтобы это значило? Также интересует информация по написанию Макросов. В программах встречаются часто, напоминает VBasic, хотелось бы разобраться.
сдвиг регистров влево на один бит, причем сразу двух. Я так понимаю что эквивалент первой будет rlf ForLoBit rlf ForHiBit второй rlf ForHiBit Единицы здесь как раз и обозначают количество сдвигов. Если бы было 2 то число сдвигов увеличилось в два раза. Поправьте меня если я не прав. Кстати, у тебя есть рускоязычное руководство MPASM? там есть про макросы. Если нет, как нибудь пересечемся, привезу.
Доброго всем времени суток .Есть несколько макросов каторые можно присоеденить к тексту прог-мы #include при помощи данной строчки. Согласитесь есть смысл использовать макросы в плане удобства написания и восприятия написаного . Вот несколько примеров Пример реализации необходимой задержки по времени
;=============== Задержка в милисакундах=========== pause_ms macro const,adr bsf status,5 movlw .1 movwf option_r ;Сконфигурировали под милсек bcf status,5 movlw const movwf reg1 bcf status,2 movlw .9 movwf tmr0 ;Корекция под кварц 4мгц bcf intcon,2 btfss intcon,2 movlw .4 btfss intcon,2 subwf pcl,f decf reg1,f nop movlw .14 btfsc status,2 goto adr subwf pcl,f endm ;===============Задержка в секундах========== pause_s macro const,adr bsf status,5 movlw .7 movwf option_r bcf status,5 movlw const movwf reg1 ;Желаемая пауза movlw .16 movwf reg2 ;Для формирования 1 сек bcf status,2 movlw .11 movwf tmr0 ;Корекция bcf intcon,2 btfss intcon,2 movlw .4 btfss intcon,2 subwf pcl,f decf reg2,f nop movlw .15 btfsc status,2 ;=1 movlw .20 btfsc status,2 decf reg1,f btfsc status,2 goto adr subwf pcl,f endm ;Текст писался с учотом кварца на 4мгц но есть небольшие погрешности. Погрешности можно откоректировать movlw .11 movwf tmr0 ;Корекция даной строкой , записывая другие значения в регистр tmr0 В шапке прог-мы необходимо заранее придать регистрам неизменные значения Все выше написаное проделывается след оброзом 1)необходимо скопировать в буфер сам текст 2)открыть текстовый редактор и закатать все туда 3)сохранить и назвать все это к примеру white.pa (pa расширение неоставляйте txt на конце ) 4)скопируйте файл в папку куда сохранили сам проект Пример присоединения макроса #include white.pa ;Присоединяем фаил list p=16f84a __config 03ff1h status equ 03h trisa equ 085h trisb equ 086h porta equ 05h portb equ 06h pcl equ 02h option_r equ 81h intcon equ 0bh tmr0 equ 01h reg0 equ 020h reg1 equ 0ch reg2 equ 0dh reg3 equ 0eh reg4 equ 0fh f equ .1 w equ 0
org 0 goto start start bank1 ; send .0,trisa ; send .0,trisb ;Это тоже макросы но о них попоже bank0 ; on_off pause_ms .200,run_on ;А вот и наш макрос значит задержка 200 милисекунд ;и отпровляем туда куда нам надо <=255 run_on send .255,portb pause_s .5,run_off ;Тоже самое но пауза состовляет 5 секунд <= 255 run_off clrf portb goto on_off end
Все даты в формате GMT
3 час. Хитов сегодня: 8
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет