UA4CMB цифровая шкала 20MHz 01. Device 18F4520
Скачать 14.32 Kb.
|
'**************************************************************** '* 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 ' Повторить процесс измерения ''''' |