|
|
Наконец-то выкладываю обещанную программу для PIC16C(F)84.
Назначение - управление MB1501 или МВ1502.
Это простейший вариант и рассчитан всего на одну частоту 418МГц. Но при желании его легко переделать на любую другую,
изменив коэффициенты Кв и Ка, но имейте ввиду, Кв должен быть больше чем коэффициент А.
Fвч=418MHz
если Fкв=12.8MHz, Fср=50кHz, то Коп=2 56
F=Fср*Ко отсюда:
Ко=8360 - общий коэффициент (прескалер+ДПКД)
Ко=Кв*А+Ка
из них Кв=130 Ка=40 (выбираем A=64)
PORTB,0 - СТРОБ
PORTB,1 - ТАКТ
PORTB,2 - ДАННЫЕ
PORTA,4 - УПРАВЛЕНИЕ (в случае двухчастотного варианта)
Далее идёт текст собственно программы.
Частота кварцевого резонатора для микроконтроллера 32768Гц.
LIST P=PIC16F84
INCLUDE "P16F84.INC"
__FUSES _LP_OSC & _WDT_ON
OZY1 equ 0Ch
OZY2 equ 0Dh
OZY3 equ 0Eh
OZY4 equ 0Fh
OZY5 equ 10h
ORG 0
GOTO START
START BSF STATUS,RP0
MOVLW B'10000'
MOVWF PORTA
MOVLW B'00000000'
MOVWF PORTB
MOVLW B'11011111'
MOVWF TMR0
BCF STATUS,RP0
CALL ZADERZKA
CALL ZADERZKA
CLRF PORTA
CLRF PORTB
MOVLW B'10000010' ;старший разряд определяет коэффициент
MOVWF OZY1 ;деления прескаллера 1 - A=64, 0 - A=128
MOVLW B'00000001' ;загружаем в опорный делитель 256
MOVWF OZY2 ;
MOVLW D'16'
MOVWF OZY4
CALL LOOP
CALL PROG
OPROS CLRWDT
CALL CONTR ;смотрите примечание.
CALL ZADERZKA
GOTO OPROS
VETV CLRWDT
BTFSS STATUS,C
GOTO L
CLRWDT
BSF PORTB,2
RETURN
L BCF PORTB,2
RETURN
ZADERZKA MOVLW D'20'
MOVWF OZY5
ZAD CLRWDT
DECFSZ OZY5,1
GOTO ZAD
RETURN
ZAD0 CLRWDT
CLRWDT
CLRWDT
CLRWDT
CLRWDT
RETURN
PROG MOVLW B'00000000'
MOVWF OZY1
MOVLW B'10000010' ;загружаем в ДПКД 130
MOVWF OZY2
MOVLW B'01010000' ;загружаем в прескаллер 40.
MOVWF OZY3 ;Имейте ввиду, что младший разря равен 0, а отсчёт ведётся со следующего разряда.
MOVLW D'24'
MOVWF OZY4
LOOP CLRWDT
RLF OZY3,1
RLF OZY2,1
RLF OZY1,1
CALL VETV
CALL ZAD0
BSF PORTB,1
CALL ZAD0
BCF PORTB,1
CALL ZAD0
DECFSZ OZY4,1
GOTO LOOP
CALL ZAD0
BSF PORTB,0
CALL ZAD0
BCF PORTB,0
RETURN
;Эта подпрограмма вставляется пи необходимости (см. примечание).
CONTR CLRWDT
BTFSS PORTA,4
GOTO PRM
MOVLW B'F-PRD'
MOVWF OZY2
MOVLW B'F-PRD'
MOVWF OZY3
MOVLW D'24'
MOVWF OZY4
CLRF OZY1
CALL LOOP
GOTO ALF1
PRM CLRWDT
MOVLW B'F-PRM'
MOVWF OZY2
MOVLW B'F-PRM'
MOVWF OZY3
MOVLW D'24'
MOVWF OZY4
CLRF OZY1
CALL LOOP
GOTO ALF0
ALF0 CLRWDT
CALL ZADERZKA
BTFSS PORTA,4
GOTO ALF0
RETURN
ALF1 CLRWDT
CALL ZADERZKA
BTFSC PORTA,4
GOTO ALF1
RETURN
;Конец подпрограммы.
END
Примечание:
Эти строчки программы вставляются при необходимости сделать синтезатор переключаемым на две частоты (например, для радиостанции). F-PRD коэффициент соответствующий частоте передатчика. F-PRM соответственно приёмника. Вычисляются по методике в начале статьи. Если необходимости в переключении нет, то эти строки надо просто удалить из программы.
Дополнения внесены по прсьбе Дмитрия
|