www.electrik.org
сайт Электрик - электрика и энергетика
Главная Статьи по электричеству Вопросы и ответы по электричеству Нормативные документы, файлы, электроные книги для электриков Форум Каталог товаров и услуг Электротехника - тендеры Реклама на сайте Новости предприятий  Реклама на этом сайте и контакты  
 
 
  Добро пожаловать !  
Вторник, 25 июня 2019 г.
 
 


РАЗМЕЩЕНИЕ ИНФОРМАЦИИ И РЕКЛАМЫ НА ЭТОМ САЙТЕ



СВАЛКА СХЕМ
(более 1000 схем)

Поиск на электросайтах

Поиск на сайте

Поиск на сайте


Навигация

· Главная

Разделы
· Новости
· Документы по энергетике и электричеству
· Статьи для электриков и энергетиков
· История исследования электричества
· Теория электротехники
· Ссылки

Контакт
· Форумы - электрикам - электричество и сварка
· FAQ
· Задать вопрос
· Гостевая книга

· Поиск
· Спонсорам, рекламодателям, обмен кнопками
· Все статьи для электриков и энергетиков
· Все файлы для электриков
· Все элекрические и электронные схемы
· Все электронные книги
· Электротехнический словарь
· Новости энергетики

Популярные статьи

  • Как воруют электроэнергию
  • Электронные электросчетчики
  • Осциллятор для сварочного аппарата от Nexor
  • ОСЦИЛЛЯТОР С НЕПРЕРЫВНЫМ ПИТАНИЕМ
  • Метод испытания трансформаторного железа для изготовления сварочного трансформатора
  • Сварочный трансформатор с падающей характеристикой
  • Способ определения начала и конца обмотки трансформатора и электродвигателя
  • КАК ПОДКЛЮЧИТЬ ТРЕХФАЗНЫЙ ЭЛЕКТРОДВИГАТЕЛЬ К ОДНОФАЗНОЙ СЕТИ
  • История электротехники
  • Энергетика

    Если ваше предприятие выпускает элекрооборудование или оборудование для энергетических хозяйств и вы хотите что бы о вашем предприятии узнали посетители нашего сайта - напишите нам. Если вам интересны проблемы атомной энергетики, энергетики в промышленности, вопросы и проблемы развития альтернативной энергетики в России - всех, от главного энергетика промышленного предприятия до электрика или просто интересующегося вопросами и проблемами развития электрики и энергетики принять участие в создании и развитии этого сайта. Будем рады услышать ваши предложения.

    Не можете найти схему? Лучшая поисковая система RadioNet

    HARDW.net - Все о компьютерном "железе": статьи, документация, форум по ремонту "железа"



    Free Service Manuals

    Сейчас на сайте

    На сайте сейчас 34 посетителей.
     
    ПОДОЛЬСККАБЕЛЬ – розничный магазин
    Содержание
    Тип: Text
    Print version...

    ;=============================================
    ;Синтезатор 145 мгц
    ;А.Ю. Денисов <alldn@yahoo.com> Тамбов 1999 г.
    ;ПЧ=10700.    WDT OFF.	 F_RC_osc=1.2 мГц.
    ;
    ;=============================================
    ;порты
    ;
    indf	equ	00  ;указатель косвенной адресации
    tmr0	equ	01  ;таймер
    pcl	equ	02  ;счетчик команд
    stat	equ	03  ;регистр состояния status
    fsr	equ	04  ;регистр косвенной адресации
    ;
    port_a	equ	05  ;порт А
    port_b	equ	06  ;порт В
    ;
    ;=============================================
    ;регистры
    ;
    step	equ	0E  ;шаг перестройки
    count	equ	0F  ;счетчик
    count1	equ	10  ;счетчик
    rotate	equ	11  ;ротация DATA
    cross	equ	12  ;признак ретранслятора
    ;
    H_mulplr  equ	13  ;Старший байт 16-битного множимого
    L_mulplr  equ	14  ;Младший байт 16-битного множимого
    mulcnd	 equ	15  ;8-битный множитель
    ;
    R0	equ	16  ;
    R1	equ	17  ;на
    R2	equ	18  ;индикаторе
    ;
    H_byte	equ	19  ; буфер
    M_byte	equ	1A  ; преобразования
    L_byte	equ	1B  ;
    ;
    rxhi	equ	1C  ;делитель
    rxlo	equ	1D  ;приема
    ;
    txhi	equ	1E  ;делитель
    txlo	equ	1F  ;передачи
    ;
    ;=============================================
    ;Макросы
    ;
    jnz	macro	metka
    	btfss	stat,2
    	goto	metka
    	endm
    ;
    jz	macro	metka
    	btfsc	stat,2
    	goto	metka
    	endm
    ;
    jnc	macro	metka
    	btfss	stat,0
    	goto	metka
    	endm
    ;
    jc	macro	metka
    	btfsc	stat,0
    	goto	metka
    	endm
    ;
    ;=============================================
    	list p=16F84
           __CONFIG 03FF3H
    ;=============================================
    ;************ SUBROUTINES ********************
    ;=============================================
    ;
    	org	0
    	goto	start
    ;
    ;Начальная инициализация
    init
    	movlw	10	 ;задержка
    	movwf	count1	 ;для
    init2			 ;инициализации
    	movlw	0xFF	 ;индикатора
    	movwf	count	 ;HT1610
    init1			 ;
    	decfsz	count,f  ;
    	goto	init1	 ;
    			 ;
    	decfsz	count1,f ;
    	goto	init2	 ;
    init3
    	movlw	0fh	 ;
    	movwf	fsr	 ;
    clear			 ;начальное
    	clrf	indf	 ;обнуление
    	incf	fsr,f	 ;служебных
    	btfss	fsr,5	 ;ячеек
    	goto	clear	 ;
    ;
    	clrf	fsr	 ;выбор 0 банка
    ;
    	movlw	0x71	 ;
    	movwf	txhi	 ;передача
    	movlw	0x84	 ;145.300/5
    	movwf	txlo	 ;
    ;
    	movlw	0x69	 ;
    	movwf	rxhi	 ;прием
    	movlw	0x28	 ;(145.300-10.7)/5
    	movwf	rxlo	 ;
    ;
    	retlw	0	 ;выход из п\программы.
    ;
    ;=============================================
    ;Выдать байт на индикатор
    displ
    	movwf	rotate	  ;байт из W в файл rotate
    	clrf	count	  ;загрузить 8
    	bsf	count,3   ;	в счетчик бит.
    	bcf	stat,0	  ;сброс cary
    displ1
    	clrf	stat
    	rlf	rotate,f  ;сдвиг rotate влево через C
    	btfsc	stat,0	     ;если Cary=0 skip
    	bsf	port_b,5  ;установить DATA=1
    	btfss	stat,0	     ;если Сary=1 skip
    	bcf	port_b,5  ;уст. DATA=0
    	nop
    	bsf	port_b,4  ;CLK=1 _-
    	nop
    	bcf	port_b,4  ;   =0   -_ тактовый импульс
    	decfsz	count,f   ;проверить счетчик бит.
    	goto	displ1	  ;не равен 0. Следующий бит.
    ;
    	retlw	0	  ;выход из п\программы.
    ;
    ;=============================================
    ;Вкл/откл режима ретранслятора
    retrans
    	movf	cross,f ;ретранслятор включен?
    	jnz	init3	;да, нужно выключить
    	movlw	0xE0	;иначе нужно
    	movwf	cross	;включить
    ;
    	movlw	0x71  ;
    	movwf	txhi  ;передача
    	movlw	0x6B  ;145.175/5
    	movwf	txlo  ;
    ;
    	movlw	0x69  ;
    	movwf	rxhi  ;прием
    	movlw	0x87  ;(145.775-10.7)/5
    	movwf	rxlo  ;
    ;
    	retlw	0	  ;выход из п\программы.
    ;
    ;=============================================
    ;Плюс 25 килогерц
    plus25
    	movf	step,w
    	addwf	rxlo,f
    	jnc	pl1
    	incf	rxhi,f
    pl1
    	movf	step,w
    	addwf	txlo,f
    	jnc	pl2
    	incf	txhi,f
    pl2
    	retlw	0	  ;выход из п\программы.
    ;
    ;=============================================
    ;Минус 25 килогерц
    minus25
    	movf	step,w
    	subwf	rxlo,f
    	jc	min1
    	decf	rxhi,f
    min1
    	movf	step,w
    	subwf	txlo,f
    	jc	min2
    	decf	txhi,f
    min2
    	retlw	0	  ;выход из п\программы.
    ;
    ;=============================================
    ;Плюс 100 килогерц
    plus100
    	movf	step,w
    	movwf	count
    	bcf	stat,0
    	rlf	count,f
    	rlf	count,w
    	addwf	rxlo,f
    	jnc	pl21
    	incf	rxhi,f
    pl21
    	movf	step,w
    	movwf	count
    	bcf	stat,0
    	rlf	count,f
    	rlf	count,w
    	addwf	txlo,f
    	jnc	pl22
    	incf	txhi,f
    pl22
    	retlw	0	  ;выход из п\программы.
    ;
    ;=============================================
    ;Минус 100 килогерц
    minus100
    	movf	step,w
    	movwf	count
    	bcf	stat,0
    	rlf	count,f
    	rlf	count,w
    	subwf	rxlo,f
    	jc	min21
    	decf	rxhi,f
    min21
    	movf	step,w
    	movwf	count
    	bcf	stat,0
    	rlf	count,f
    	rlf	count,w
    	subwf	txlo,f
    	jc	min22
    	decf	txhi,f
    min22
    	retlw	0	  ;выход из п\программы.
    ;
    ;=============================================
    ;Подтверждение нажатия клавиши
    sound
    	movlw	.50
    	movwf	count
    sound2
    	bsf	port_b,6  ;_i-
    ;
    ;задержка --------------------------------
    	movlw	.10
    	movwf	count1
    sound1
    	decfsz	count1,1    ;задержка ~2ms
    	goto	sound1
    ;
    	bcf	port_b,6  ; -i_
    ;
    ;задержка --------------------------------
    	movlw	.10
    	movwf	count1
    sound11
    	decfsz	count1,1    ;задержка ~2ms
    	goto	sound11
    ;
    	decfsz	count,1
    	goto	sound2
    ;
    	retlw	0	  ;выход из п\программы.
    ;=============================================
    ;Установить частоту в 1508PL1
    setfreq
    	movlw	4	   ;выдать в 1508ПЛ1
    	call	send	   ;1й байт=4 (делитель на 2000)
    	movfw	count1
    	movwf	fsr
    	movfw	0
    	call	send	   ;
    	incf	count1,f
    	movfw	count1
    	movwf	fsr
    	movfw	0
    	call	send	   ;
    strob
    	bsf	port_a,2   ;1 _-
    	nop
    	bcf	port_a,2   ;0	-_
    ;
    	retlw	0	  ;выход из п\программы.
    ;
    ;=============================================
    ;Выдать байт из rotate последовательно в 1508PL1
    send
    	movwf	rotate	  ;байт из W в файл rotate
    	clrf	count	  ;загрузить 8
    	bsf	count,3   ;	в счетчик бит.
    	bcf	3,0	  ;сброс cary
    next
    	rlf	rotate,f  ;сдвиг rotate влево через C
    	btfsc	3,0	  ;если Cary=0 skip
    	bsf	port_a,0  ;установить DATA=1
    	btfss	3,0	  ;если Сary=1 skip
    	bcf	port_a,0  ;уст. DATA=0
    	nop
    	bsf	port_a,1  ;CLK=1 _-
    	nop
    	bcf	port_a,1  ;   =0   -_ тактовый импульс
    	decfsz	count,1   ;проверить счетчик бит.
    	goto	next	  ;не равен 0. Следующий бит.
    	retlw	0	  ;выход из п\программы.
    ;
    ;=============================================
    ;Преобразование bin to BCD
    ;
    b2_bcd
    	bcf	stat,0	  ; clear the carry bit
    	movlw	.24
    	movwf	count
    	clrf	R0
    	clrf	R1
    	clrf	R2
    loop16	rlf	L_byte,f
    	rlf	M_byte,f
    	rlf	H_byte,f
    	rlf	R2,f
    	rlf	R1,f
    	rlf	R0,f
    ;
    	decfsz	count,f
    	goto	adjDEC
    ;
    ; заменяем нули на 0xA для LCD индикатора
    	movlw	0x0F
    	andwf	R2,0
    	jnz	next1
    	movlw	0x0A
    	iorwf	R2,f
    next1
    	movlw	0xF0
    	andwf	R2,0
    	jnz	next2
    	movlw	0xA0
    	iorwf	R2,f
    next2
    	movlw	0x0F
    	andwf	R1,0
    	jnz	next3
    	movlw	0x0A
    	iorwf	R1,f
    next3
    	retlw	0
    ;
    adjDEC
    	movlw	R2
    	movwf	fsr
    	call	adjBCD
    ;
    	movlw	R1
    	movwf	fsr
    	call	adjBCD
    ;
    	movlw	R0
    	movwf	fsr
    	call	adjBCD
    ;
    	goto	loop16
    ;
    adjBCD	movlw	3
    	addwf	0,W
    	movwf	count1
    	btfsc	count1,3  ; test if result > 7
    	movwf	0
    	movlw	30
    	addwf	0,W
    	movwf	count1
    	btfsc	count1,7  ; test if result > 7
    	movwf	0	  ; save as MSD
    ;
    	retlw	0
    ;
    ;=============================================
    ; Умножение 16-битного числа на 8-битное
    ;
    m16x8
    	clrf	H_byte
    	clrf	M_byte
    	clrf	L_byte
    	movlw	.16
    	movwf	count
    	movf	mulcnd,w
    	bcf	stat,0	  ; Clear the carry bit in the
    loop			  ; status Reg.
    	rrf	H_mulplr,f
    	rrf	L_mulplr,f
    	btfsc	stat,0
    	addwf	H_byte,f
    	rrf	H_byte,f
    	rrf	M_byte,f
    	rrf	L_byte,f
    	decfsz	count,f
    	goto	loop
    ;
    	retlw	0
    ;
    ;=============================================
    ; Изменение шага перестройки 5 <-> 25 килогерц
    ;
    newstep
    	movlw	4
    	xorwf	step,f
    	goto	hotstart
    ;
    ;=============================================
    ;************ MAIN PROGRAM *******************
    ;=============================================
    start
    	bsf	stat,5	 ;для 16F84
    	movlw	0
    	movwf	01h
    	movlw	8
    	movwf	port_a
    	movlw	08Fh
    	movwf	port_b
    	bcf	stat,5
    
    	call	init	   ;инициализация
    	movlw	5
    	movwf	step
    ;
    	goto	hotstart
    ;
    ;опрос клавиш
    begin
    	movf	port_b,w   ;из port_b в W
    	andlw	8f	   ;маскируем выходные порты
    	xorlw	0f	   ;есть нажатая клавиша?
    	btfsc	stat,2	   ;
    	goto	begin
    
    	movlw	10	   ;
    	movwf	count1	   ;
    loop2			   ;
    	movlw	0xFF	   ;
    	movwf	count	   ;
    loop1			   ;
    	decfsz	count,f    ;задержка (антидребезг)
    	goto	loop1	   ;
    			   ;
    	decfsz	count1,f   ;
    	goto	loop2	   ;
    ;
    ;	     еще раз смотрим нажатие клавиши
    	movf	port_b,w   ;из port_b в W
    	andlw	8f	   ;маскируем выходные порты
    	xorlw	0f	   ;есть нажатая клавиша?
    	btfsc	stat,2	   ;
    	goto	begin
    ;
    ; обработка нажатия клавиши ----------------------
    	movf	port_b,w   ;читаем из port_b в W
    	movwf	rotate	   ;запоминаем в rotate
    	andlw	0x03
    	jz	retrans1
    
    	movf	rotate,w
    	andlw	0x0C
    	jz	newstep
    
    	rlf	rotate,w
    	jc	transmit
    
    	rrf	rotate,f
    	jnc	pl25
    
    	rrf	rotate,f
    	jnc	mn25
    
    	rrf	rotate,f
    	jnc	pl100
    
    	call	minus100   ;минус 100 кгц
    hotstart
    	call	sound	   ;писк
    	movlw	rxhi	   ;установка относительной
    	movwf	count1	   ;адресации
    	call	setfreq    ;установка частоты
    ; прибавим ПЧ для вывода на индикатор
    ;
    	movlw	0x5C	   ;загружаем первое слагаемое
    	movwf	L_mulplr   ;равное 10700/5
    	movlw	0x08
    	movwf	H_mulplr
    ;
    	movf	rxlo,w	   ;второе слагаемое равное
    	addwf	L_mulplr,f ;(частота - ПЧ)/5
    	jnc	hot1
    	incf	H_mulplr,f
    hot1
    	movf	rxhi,w
    	addwf	H_mulplr,f
    hot2
    	movlw	.5	       ;умножаем на 25
    	movwf	mulcnd
    	call	m16x8
    	call b2_bcd   ;переводим в дв.-десятичный вид
    ;	с исправлениями для индикатора HT1610
    ;
    ;			 и выводим на индикатор
    	movf	cross,w ;признак ретранслятора
    	call	displ	;
    	movlw	0	; пробел
    	call	displ	;
    	movf	R0,w	; частота
    	call	displ	;
    	movf	R1,w	;
    	call	displ	;
    	movf	R2,w	;
    	call	displ	;
    ;
    keyoff			   ;ждем отжатие клавиши
    	movf	port_b,w   ;из port_b в W
    	andlw	8f	   ;маскируем выходные порты
    	xorlw	0f	   ;есть нажатая клавиша?
    	jnz	keyoff
    ;
    	movlw	10
    	movf	count1,f
    koff2
    	movlw	0xFF
    	movf	count,f
    koff1
    	decfsz	count,f
    	goto	koff1
    
    	decfsz	count1,f
    	goto	koff2
    
    	goto	begin
    ;
    retrans1		   ;ретранслятор on/off
    	call	retrans
    	goto	hotstart
    ;
    pl25			   ;плюс 25 кгц
    	call	plus25
    	goto	hotstart
    ;
    mn25			   ;минус 25 кгц
    	call	minus25
    	goto	hotstart
    ;
    pl100			   ;плюс 100 кгц
    	call	plus100
    	goto	hotstart
    ;
    transmit
    	movlw	txhi	   ;установка относительной
    	movwf	count1	   ;адресации
    	call	setfreq    ;установка частоты
    ;
    	movf	txlo,w	   ;переносим множимое
    	movwf	L_mulplr
    	movf	txhi,w
    	movwf	H_mulplr
    ;
    	movlw	.5	       ;умножаем на 25
    	movwf	mulcnd
    	call	m16x8
    	call b2_bcd  ;переводим в дв.-десятичный вид
    ;	с исправлениями для индикатора HT1610
    ;	и выводим на индикатор
    	movf	cross,w ;признак ретранслятора
    	call	displ
    ;
    	movlw	0	; пробел
    	call	displ
    ;
    	movf	R0,w	; частота
    	call	displ
    	movf	R1,w
    	call	displ
    	movf	R2,w
    	call	displ
    ;
    keyoff1     ;ждем отжатие клавиши
    	movf	port_b,w   ;из port_b в W
    	andlw	8f	   ;маскируем выходные порты
    	xorlw	0f	   ;есть нажатая клавиша?
    	btfss	stat,2	   ;
    	goto	keyoff1
    
    	movlw	10
    	movf	count1,f
    koff12
    	movlw	0xFF
    	movf	count,f
    koff11
    	decfsz	count,f
    	goto	koff11
    
    	decfsz	count1,f
    	goto	koff12
    ;
    	goto	hotstart
    	end
    



        
     
     
         
     
     Copyright © 2002-2006 by Koutsnetsov Oleg