Главная страница

UA4CMB цифровая шкала 20MHz 01. Device 18F4520


Скачать 14.32 Kb.
НазваниеDevice 18F4520
Дата30.03.2022
Размер14.32 Kb.
Формат файлаrtf
Имя файлаUA4CMB цифровая шкала 20MHz 01.rtf
ТипДокументы
#427497


'****************************************************************

'* Name : UNTITLED.BAS *

'* Author : [select VIEW...EDITOR OPTIONS] *

'* Notice : Copyright (c) 2019 [select VIEW...EDITOR OPTIONS] *

'* : All Rights Reserved *

'* Date : 05.04.2019 *

'* Version : 1.0 *

'* Notes : UA4CMB для UA4CME *

'* : *

'****************************************************************

' : UA4CMB *

'* :

' Ц.шкала до 5.6MHz шаг 100Гц с кварцем 20.00мГц

' ПЧ - 500кГц делитель 1:8

'' Задержка ASM выполнена с помощъю PIC_Delay-1.8 , 40000 мКс

'****************************************************************

'****************************************************************

Device = 18F4520 '16F628A !_

' PIC16F873A - -РАБОТАЕТ C этими установками

XTAL = 20.000'Declare XTAL 4 '8! -

'--------------Настройки подключения ЖКИ--------------------------

Declare LCD_TYPE ALPHA 'Тип ЖКИ - буквенно-цифровой

Declare LCD_DTPIN PORTB.0 'Порт данных ЖКИ

Declare LCD_ENPIN PORTB.5 'Управление линией E

Declare LCD_RSPIN PORTB.4 'Управление линией RS

Declare LCD_INTERFACE 4 'Разрядность шины данных

Declare LCD_COMMANDUS 2000 'Задержка перед посылкой команды

Declare LCD_DATAUS 50 'Задержка перед посылкой данных

Declare LCD_LINES 2 'Количество строк ЖКИ

; Регистр T1CON

Symbol TMR1ON = T1CON.0 ' Таймер1 выкл

Symbol TMR1CS = T1CON.1 ' Таймер1 включить

Symbol NOT_T1SYNC = T1CON.2 ' Внешнее Управление Входной Синхронизации TIMER1

Symbol T1INSYNC = T1CON.2 ' Внешнее Управление Входной Синхронизации TIMER1

Symbol T1SYNC = T1CON.2 ' Внешнее Управление Входной Синхронизации TIMER1

Symbol T1OSCEN = T1CON.3 ' Timer1 Oscillator Enable Control

Symbol T1CKPS0 = T1CON.4 ' Допустимое Управление Генератора TIMER1

Symbol T1CKPS1 = T1CON.5 ' Допустимое Управление Генератора TIMER1

Symbol GIE = INTCON.7 ' Бит глобального разрешения прерываний

Symbol TMR1IF = PIR1.0 ' Флаг прерывания по переполнению TMR1
'= %00110110 ' :1/10 делитель

T1CON = %00100110 ' :1/8 делитель

'= %00010110 ' :1/4 делитель

'T1CON ' 76543210 (- - :1/4 - НЕ.С ВН.ИСТ -)

'T1CON = %00100110 ; (7,6 НЕ ИСП.(5,4 ДЕЛИТЕЛЬ ТМР1).(3 ВКЛ ТАКТОВОГ ГЕНЕРАТОРА ТМР1).(2 СИНХР.ВНЕШ.ТОКТОВОГО СИГН). (1 ВЫБОР ИСТОЧ.ТАКТОВОГО СИГНАЛА).(0 РАЗРЕШЕНИЕ РАБОТЫ ТМР1)
TRISB = %11111111 ' Все PORTA на вход

TRISC = %11111111
'""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

Symbol KN1 = PORTB.7 ' Присвоить символ pin выводу PORTC.7
; переменные

Dim TIMER1 As TMR1L.Word

Dim i As Word ; =65535

Dim j As DWord ' = -2147483648 до 2147483647

Dim a As DWord

Dim b As Float ; с плавающей запятой -2147483646.999 … +2147483646.999

Dim x As Word

Dim n As DWord ; = 256 DWord Byte

Dim Reg_1 As Byte

Dim Reg_2 As Byte

Dim Reg_3 As Byte

Dim ii As Byte ;;
Print At 1, 1," UA4CMB " '$20,$20,$20,$20,$AB,$61,$63,$BF,$6F,$BF,$61 '" Частота"

Print At 2, 1,$20,$20,$2D,$C1,$BA,$61,$BB,$61,$2D,$20,$76,$30,$2E,$33 ' " Шкала" " --METER-- v 0.3"

DelayMS 800 'задержка для отображении заставки

'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Main:

'TMR1L = 0 ; Значение младшего регистра TMR1

; TMR1H = 0 ; Значение старшего регистра TMR1
TIMER1 = 0 ' TMR1L.Word младший

TMR1ON=1 ' T1CON.0 включен

TMR1ON=0 ' T1CON.0 выключен

a = TIMER1 ; измеряем за 400 миллисек пишем в а

a=a*1000 ' столько имп.ожидаем за 1 сек

a=a/65535 ' а должен переполниться а раз a=a/65535

TIMER1 = 0

TMR1ON=1 ' T1CON.0 включен


ASM ; вставка задержки на ассемблере

; Задержка 400 000 машинных циклов

; Длительность задержки 400 миллисекунд

; Частота задающего генератора 4 МГц

;---------------------------------------------------------------------------------------

;'Время 40000 мКс

'Машинных циклов 200000

'Кварц 20мГц

'88888888888888888888888888888888888888888888888888888888888888888888888888888888888

movlw .99

movwf Reg_1

movlw .4

movwf Reg_2

movlw .2

movwf Reg_3

decfsz Reg_1

bra $-2

clrwdt

decfsz Reg_2

bra $-8

decfsz Reg_3

bra $-.12

nop

nop

'

nop

nop

nop

nop

'&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

ENDASM ;конец вставки

TMR1ON=0 ' T1CON.0 выключен

'"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
j=65536*a ; J - сколько насчитал таймер за а раз

j=j+TIMER1 ; J = J и + что осталось в таймере1
''If KN1 = 1 Then Print At 1, 1,$20,$A8,$AB,$31,$3A,$2D,$35,$30,$30,$20,"UA4CME " 'ПЧ1-500 UA4CME ; " frequency:" UA4CME "

''If KN1 = 0 Then Print At 1, 1,$20,$20,$20,$AB,$61,$63,$BF,$6F,$BF,$6F,$BC,$65,$70,$20,$20,$20,$20 ' Частотомер

'--------------------------------------первый вариант 1.654.321 Hz -------------------------------
''b=j/10000'*2'/10'0'00'*2 ' b=j/10000

''If KN1 = 1 Then b=b - 0.500 ; d = ПЧ1 -0,500 или + пч от частоты
''Print At 2, 1, " F=",Dec b,".",DEC1 J*0.1'*100,"KHz " ' Dec b это килогерцы ,Dec3 J*100 это герцы (Dec1 J * 0.1 = 1654.3 KHz)

''Print At 2, 1, " F=:", DEC3 b*0.001,".",DEC3 n*1 , " Hz " 'Dec n/100 отображать 2 последних знака n/1000 -1 знака....

'-------------------------------------- второй вариант 1654.3 [181.3M ]-----------------------------------

If KN1 = 0 Then Print At 1, 1,$20,$20,$20,$AB,$61,$63,$BF,$6F,$BF,$6F,$BC,$65,$70,$20,$20,$20,$20 ' Частотомер

If KN1 = 0 Then PORTB.7 =0

b=j/10000 ' частота в килогерцах
If KN1 = 1 Then j=j -5000 ; ПЧ1 d =d -5000 в кГц или + пч от частоты

n=30000000/ j'*0.1 ' частота в метрах

If KN1 = 1 Then Print At 1, 2,"UA4CME-",DEC1 n*0.1," m." ' Ц. шкала в метрах

Print At 2, 2, " F= ",DEC1 j * 0.1," KHz " 'Ц.шкала в КГц ' Dec b это килогерцы ,Dec3 J*100 это герцы (Dec1 J * 0.1 = 1654.3 KHz)
DelayMS 500

GoTo Main ' Повторить процесс измерения


'''''


написать администратору сайта