Микроконтроллеры, LCD и все, что с ними связано.

  Вход на форум   логин       пароль   Забыли пароль? Регистрация
On-line:  

Раздел: 
Gauss2k - gauss gun у тебя дома / Электроника и Электротехника / Микроконтроллеры, LCD и все, что с ними связано.

Страницы: << Prev 1 2 3 4 5 6 Next>> новая тема

Автор Сообщение


Группа: Участники
Сообщений: 2
Добавлено: 08-07-2009 18:46
Добрый день.
Собрал хроноограф, работает нормально.
Оптопары скорость более 400 уже не засекают.
самое максимальное зафиксированое значение 373 м/с.
Правда я даже не знаю какие ИК приемники поставил.
Выдрал из старого дисковода.
Спасибо за конструкцию.

магистр
Группа: Модераторы
Сообщений: 4243
Добавлено: 08-07-2009 21:57
Правда я даже не знаю какие ИК приемники поставил.

С этого надо было начинать. Документацию почитать, выбрать что побыстрее из того, что есть в продаже...


Группа: Участники
Сообщений: 2
Добавлено: 09-07-2009 06:48
руки сильно чесались, хотелось попробовать.
Сейчас неторопясь доделаю. Ну и в продаже встретил в основном фотодиоды и фоторезисторы, фототранзисторов нет в наличии, а с пересылкой долго заморачиватся, ну и воткнул, что было под рукой.

частый гость
Группа: Участники
Сообщений: 29
Добавлено: 29-07-2009 15:28
на аиргане появился хронолайт с ЖКИ есть и прошивка и плата,себе уже сделал все ОК,сохраняет вроде 60замеров в прошивке можно менять базу
ссылка
http://airgun.org.ru/forum/viewtopic.php?f=35&t=14100&start=950

магистр
Группа: Модераторы
Сообщений: 4243
Добавлено: 31-07-2009 20:51
Качнул прошивку ту. Исходников нет я так понял, хотя не читал все 40 страниц.. не осилил пока, начал с конца т.к. времени нет и до компа еле добираюсь. Кстати, эту прошивочку могу дизасемблировать в читабельный вариант для дальнейшего переделывания и компилирования мплабом. Лан, спасиб за ссылку, ещё почитаю там. А вообще я смотрю на аиргане эта тема весьма популярна, только непонятно почему там сразу не пошли путем LCD а заморочались на лидах...

З.Ы. Чтобы кинуть комменты, спецом регится на том форуме не буду. Прокомментирую пару постов тут, а вам, уважаемые читатели, самим делать выводы!

kimad
Исходник последней прошивки автор не выкладывал, но писал о значительных изменениях, только в чем они выражаются. Исходник кот. лежит у него на странице от 06.07.2005, а последнее ПО от 23.03.2008, но исходника уже нету. Чего там менялось. Компаратор внешний.

Не в исходниках дело! Эти исходники легко получить из готовой прошивки, но могу вам несколько облегчить жисть и выложу их в конце поста. Дрочите наздоровье на них Без обид только. Проект не комерческий, в отличии от некоторых я не пытаюсь на этом сколотить состояние. Так вот, я просто раньше уже эту тему поднимал на форуме (я насчет исходников) и никто ничего не предложил конкретного по усовершенствованию кода и заморачивался самостоятельно читая книжки. Короче та тема так и похерилась... кажись была на старом форуме. Вот в новой теме я не стал заморачиваться особо текстами т.к. вижу, что народ не испытал интерес.

julbu
попробуй из шайтан трубы стрельнуть под 300мс, есть подозрение, что может и не "схватить".
Тут проблема в том, что все "халявные" вещи обычно косячные, потому как вещь хорошая обычно делается долго, долго тестится........а на "халяву" и так прокатит.


Уважаемый, извините, но по ходу это все панты без аргументов. Схватывание в данном случае будет напрямую зависить от ваших оптодатчиков, а программа хватает нормально, что подтвердилось протеусом и полевыми испытаниями из разных пуколок (правда больше 600 м/с я не стрелял т.к. то уже жесткий огнертрел и требует определенной конструкции датчиков). Так вот эти комменты я считаю просто очередным пиаром хронолойта! Не стоит обсирать то, чего не пробовал. Хотите помочь, указывайте на ошибки и варианты их исправления т.к. проект народный, а хотите денег, то оставте свои комменты при себе.


Прошифко:
;; Хронограф с выводом результата на LCD дисплей (8х2 в одну строку) и COM порт.
;; Распиновка микросхемы
;; PIN I/O FROM TO
;;----------------------------------------------------------------------
;; A0 O E LCD E
;; A1 O RS LCD RS
;; A2 I BIT 2 SENSOR_1
;; A3 I BIT 3 SENSOR_2
;; A4 O
;; A5 O
;; A6 O
;; A7 O
;;
;; B0 0
;; B1 I RS232 RX PC RX
;; B2 O RS232 TX PC TX
;; B3 O
;; B4 O BIT 4 LCD BIT 4
;; B5 O BIT 5 LCD BIT 5
;; B6 O BIT 6 LCD BIT 6
;; B7 O BIT 7 LCD BIT 7
;;----------------------------------------------------------------------

list p=16F628A
#include <P16F628A.INC>
#include <shorts.inc>

__CONFIG _LVP_OFF & _MCLRE_OFF & _XT_OSC & _BODEN_OFF & _CP_OFF & _WDT_OFF & _PWRTE_ON
ERRORLEVEL -302

#DEFINE E PORTA, 0 ;; OUTPUT TO LCD
#DEFINE RS PORTA, 1 ;; OUTPUT TO LCD
#DEFINE SENSOR_1 PORTA, 2 ;; INPUT
#DEFINE SENSOR_2 PORTA, 3 ;; INPUT

CBLOCK 0X20
CNTJ ;; FOR MS_DELAY
; BIT8, CNT1, CNT2, TEMP_MUL, HI16, LO16 ;; FOR MUL_BY_1000
MS_TIME, MS_TIME_TEMP
LO_BYTE, HI_BYTE ;; FOR LCD DRIVER
CHAR ;; FOR DATA CONVERTION
TEN_K, THOU, HUND, TENS, ONES
DIVIDEND1, DIVIDEND2, DIVIDEND3, DIVISOR1, DIVISOR2
DVDEND_HI, DVDEND_LO
TIME_HI, TIME_LO, NUMH, NUML
IF_ERROR ;; Признак ошибки
ENDC

ACC EQU 0x5C ; Most significant Byte
SIGN EQU 0x62 ; save location for sign in MSB
TEMP EQU 0x68 ; temporary storage
DIVIDEND EQU 0x5C ; Most significant Byte
DIVISOR EQU 0x65 ; Most significant Byte
REMAIN EQU 0x60 ; Most significant Byte
LOOPCOUNT EQU 0x63 ; loop counter

ORG 0x000
CALL init_pic
GOTO MAIN

ORG 0x004
GOTO int_t

init_pic
;----------------------------PORT I/O CONFIGURATION/SETUP-------------------------------
BANK0
MOVLW 0X07
MOVWF CMCON ;; DISABLE CAPTURE/COMPARE MODULES.

BANK1
LOADF TRISA, B'00101100'
LOADF TRISB, B'00000110' ;; SET BITS 1, 2 FOR USART.
BSF OPTION_REG, NOT_RBPU ;; BCF/BSF = ENABLE/DISABLE PULL-UP.

;------------------POWER ON RESET CONFIGURATION/SETUP--------------------------
BSF PCON, OSCF ;BCF/BSF = 37KHZ/4MHZ INTRC OR ER OSCILLATOR SPEED.

;--------------------------INTERRUPT CONFIGURATION/SETUP-------------------------------
; BANK1
; BCF INTCON, GIE ;BCF/BSF = DIS/ENABLE GLOBAL INTERRUPT.
; BCF INTCON, PEIE ;BCF/BSF = DIS/ENABLE Разрешение прерываний от переферийных модулей
; BCF INTCON, T0IE ;BCF/BSF = DIS/ENABLE Разрешение прерывания по переполнению TMR0
; BCF INTCON, INTE ;BCF/BSF = DIS/ENABLE RB0 INTERRUPT.
; BCF INTCON, RBIE ;BCF/BSF = DIS/ENABLE RB7-4 INTERRUPT.
BSF PIE1, TMR1IE ;BCF/BSF = DIS/ENABLE Разрешение прерывания по переполнению TMR1
;--------------------------------------------------------------------------------------

;-------------------------USART CONFIGURATION/SETUP------------------------------------
BANK1
BCF PIE1, TXIE ;BCF/BSF = DIS/ENABLE TX INTERRUPT.
BSF TXSTA, CSRC ;BCF/BSF = EXT/INTERNAL GENERATOR.
BCF TXSTA, TX9 ;BCF/BSF = 8-BIT/9-BIT TRANSMISSION.
BSF TXSTA, TXEN ;BCF/BSF = DIS/ENABLE TRANSMISSION.
BCF TXSTA, SYNC ;BCF/BSF = A/SYNCHRONOUS MODE.
BSF TXSTA, BRGH ;BCF/BSF = LO/HI SPEED BAUD RATE SELECT.
LOADF SPBRG, .12 ;SET BAUD RATE TO 19.2 KBPS.
BANK0
BSF RCSTA, SPEN ;BCF/BSF = DIS/ENABLE SERIAL PORT.
BCF RCSTA, RX9 ;BCF/BSF = 8-BIT/9-BIT TRANSMISSION.
BSF RCSTA, SREN ;BCF/BSF = DIS/ENABLE SINGLE RECEIVE.
BCF RCSTA, CREN ;BCF/BSF = DIS/ENABLE CONTINUOS RECEIVE.
BSF RCSTA, SPEN ;BCF/BSF = DIS/ENABLE SERIAL PORT.
;--------------------------------------------------------------------------------------
RETURN

;*********************MAIN***********************
MAIN:
CALL INIT_LCD

ERR_TEST:
CALL CLEAR
CALL GET_ERROR
BTFSC IF_ERROR, 7
GOTO ERR_TEST
CALL CLEAR
CALL LCD_1

GET:
CALL GET_VELOCITY
CALL SEND_USART
CALL LCD_UPDATE
GOTO GET

;*****************END 0F MAIN******************

int_t
BCF T1CON, TMR1ON ;BCF/BSF = DISABLE/ENABLE TIMER1 ON.
BCF PIE1, TMR1IF ;BCF/BSF = DISABLE/ENABLE Разрешение прерывания по переполнению TMR1

CLRF TMR1L ;; THEN, START TIMING.
CLRF TMR1H

MOVF_F TMR1L, TIME_LO ;; FINALY, COPY TIMER1 INTO LO/HI BYTES.
MOVF_F TMR1H, TIME_HI

GOTO ERR_TEST

;Проверяем датчики
GET_ERROR: ;; DUAL SENSOR DETECTION.
BCF IF_ERROR, 7

LOADF CHAR, 0X00
CALL SET_ADDRESS

BTFSS SENSOR_1
GOTO $ + 3
CALL D1_ER
GOTO $ + 2
CALL D1_OK

LOADF CHAR, 0X40
CALL SET_ADDRESS

BTFSS SENSOR_2
GOTO $ + 3
CALL D2_ER
GOTO $ + 2
CALL D2_OK


LOADF MS_TIME, .250 ;; 1.5 SEC DELAY.
CALL MS_DELAY
CALL MS_DELAY
CALL MS_DELAY
CALL MS_DELAY
CALL MS_DELAY
CALL MS_DELAY
RETURN

D1_OK:
CHR_LCD_OUT 'D'
CHR_LCD_OUT '1'
CHR_LCD_OUT '-'
CHR_LCD_OUT 'O'
CHR_LCD_OUT 'K'
CHR_LCD_OUT ' '
CHR_LCD_OUT ' '
CHR_LCD_OUT ' '
RETURN

D1_ER:
CHR_LCD_OUT 'D'
CHR_LCD_OUT '1'
CHR_LCD_OUT '-'
CHR_LCD_OUT 'E'
CHR_LCD_OUT 'R'
CHR_LCD_OUT ' '
CHR_LCD_OUT ' '
CHR_LCD_OUT ' '
BSF IF_ERROR, 7
RETURN

D2_OK:
CHR_LCD_OUT 'D'
CHR_LCD_OUT '2'
CHR_LCD_OUT '-'
CHR_LCD_OUT 'O'
CHR_LCD_OUT 'K'
CHR_LCD_OUT ' '
CHR_LCD_OUT ' '
CHR_LCD_OUT ' '
RETURN

D2_ER:
CHR_LCD_OUT 'D'
CHR_LCD_OUT '2'
CHR_LCD_OUT '-'
CHR_LCD_OUT 'E'
CHR_LCD_OUT 'R'
CHR_LCD_OUT ' '
CHR_LCD_OUT ' '
CHR_LCD_OUT ' '
BSF IF_ERROR, 7
RETURN
;---------------------------------------

;Первоначальная надпись на LCD
LCD_1:
LOADF CHAR, 0X00
CALL SET_ADDRESS

CHR_LCD_OUT 'A'
CHR_LCD_OUT 'W'
CHR_LCD_OUT 'A'
CHR_LCD_OUT 'I'
CHR_LCD_OUT 'T'
CHR_LCD_OUT ' '
CHR_LCD_OUT '-'
CHR_LCD_OUT ' '

LOADF CHAR, 0X40
CALL SET_ADDRESS

CHR_LCD_OUT 'S'
CHR_LCD_OUT 'H'
CHR_LCD_OUT 'O'
CHR_LCD_OUT 'O'
CHR_LCD_OUT 'T'
CHR_LCD_OUT '!'
CHR_LCD_OUT '!'
CHR_LCD_OUT '!'
RETURN
;---------------------------------------

;DETECTION AND TIMING OF PROJECTILE
GET_VELOCITY: ;; DUAL SENSOR DETECTION.
CLRF TMR1L ;; THEN, START TIMING.
CLRF TMR1H

BSF INTCON, GIE ;BCF/BSF = DISABLE/ENABLE Глобальное разрешение прерываний
BSF INTCON, PEIE ;BCF/BSF = DIS/ENABLE Разрешение прерываний от переферийных модулей

BTFSS SENSOR_1 ;; AWAIT DETECTION: ACTIVE HI.
GOTO $ - 1

BSF T1CON, TMR1ON ;BCF/BSF = DISABLE/ENABLE TIMER1 ON.

BTFSS SENSOR_2 ;; NEXT, AWAIT DETECTION: ACTIVE HI.
GOTO $ - 1

BCF T1CON, TMR1ON ;BCF/BSF = DISABLE/ENABLE TIMER1 ON.

BCF INTCON, GIE ;BCF/BSF = DISABLE/ENABLE Глобальное разрешение прерываний
BCF INTCON, PEIE ;BCF/BSF = DIS/ENABLE Разрешение прерываний от переферийных модулей

MOVF_F TMR1L, TIME_LO ;; FINALY, COPY TIMER1 INTO LO/HI BYTES.
MOVF_F TMR1H, TIME_HI

LOADF MS_TIME, .250 ;; 1 SEC DELAY BEFORE NEXT MEASUREMENT.
CALL MS_DELAY
CALL MS_DELAY
CALL MS_DELAY
CALL MS_DELAY
RETURN
;---------------------------------------

;Отсылаем данные в RS232
SEND_USART:
CALL TXWAIT
MOVF_F TIME_HI, TXREG
CALL TXWAIT
MOVF_F TIME_LO, TXREG
CALL TXWAIT
RETURN
;---------------------------------------

;Использовать эту задержку перед отправкой данных TXREG.
TXWAIT:
BANK1
BTFSS TXSTA, TRMT ;; IF TX IS COMPLETED,
GOTO $ - 1 ;; ELSE, WAIT
BANK0 ;; THEN, CONTINUE.
LOADF MS_TIME, .1
CALL MS_DELAY
RETURN
;--------------------------------------

;Вычисление скорости и вывод на LCD
LCD_UPDATE:
CALL CLEAR
MOVF_F TIME_HI, HI_BYTE
MOVF_F TIME_LO, LO_BYTE
CALL HEX16_TO_DEC5 ;; CONVERT HEX TO DECIMAL,
CALL DEC_TO_LCD ;; THEN DECIMAL TO LCD DISPLAY.

MEM_LCD_OUT TEN_K
MEM_LCD_OUT THOU
CHR_LCD_OUT '.'
MEM_LCD_OUT HUND
MEM_LCD_OUT TENS
MEM_LCD_OUT ONES
CHR_LCD_OUT 'm'
CHR_LCD_OUT 's'

; CALL LCD_TO_DEC
;; CALCULATIONS TO METERS PER SECOND.
; LOADF BIT8, .40 ;; DETECTOR DISTANCE = 40 MILLI-METERS
; CALL MUL_BY_1000 ;; MULTIPLY DISTANCE MILLI-METERS BY 1000
;
; MOVF_F HI16, DIVIDEND1 ;; DIVIDE MILLI-METERS BY TIMING
; MOVF_F LO16, DIVIDEND2 ;; 40,000 / TIME_HI:TIME_LO

LOADF DIVIDEND1, 0x9C ;; Для дистанции 40мм
LOADF DIVIDEND2, 0x40 ;; 40,000 / TIME_HI:TIME_LO

MOVF_F TIME_HI, DIVISOR1
MOVF_F TIME_LO, DIVISOR2
CALL DIVIDE_16_16 ;; RETURNS DIVIDEND+0:DIVIDEND+1

MOVF_F DIVIDEND+0, HI_BYTE ;; VELOCITY RESULT COPY
MOVF_F DIVIDEND+1, LO_BYTE ;; VELOCITY RESULT COPY
CALL HEX16_TO_DEC5
CALL DEC_TO_LCD

LOADF CHAR, 0X40 ;; GOTO LCD SECOND LINE.
CALL SET_ADDRESS

CHR_LCD_OUT ' '
MEM_LCD_OUT THOU ;; DISPLAY "XXXXX M/S"
MEM_LCD_OUT HUND
MEM_LCD_OUT TENS
MEM_LCD_OUT ONES
CHR_LCD_OUT 'm'
CHR_LCD_OUT '/'
CHR_LCD_OUT 's'

; CALL LCD_TO_DEC
RETURN
;---------------------------------------

;BORROWED FROM MICROCHIP APP NOTES. EXTENSIVELY
;MODIFIED TO SUPPORT 16F628.
;DIVIDE 16BIT BY 16BIT
;INPUT : DVDEND_HI, DVDEND_LO, DVSOR_HI, DVSOR_LO
;OUTPUT: DIVIDEND+0, DIVIDEND+1
;----Define divide register variables---
; ACC EQU 0x5C ; Most significant Byte
; SIGN EQU 0x62 ; save location for sign in MSB
; TEMP EQU 0x68 ; temporary storage
; DIVIDEND EQU 0x5C ; Most significant Byte
; DIVISOR EQU 0x65 ; Most significant Byte
; REMAIN EQU 0x60 ; Most significant Byte
; LOOPCOUNT EQU 0x63 ; loop counter
;---------------------------------------
DIVIDE_16_16:
MOVF_F DIVIDEND1, DIVIDEND+0
MOVF_F DIVIDEND2, DIVIDEND+1
MOVF_F DIVISOR1, DIVISOR+0
MOVF_F DIVISOR2, DIVISOR+1
CLRF REMAIN+0
CLRF REMAIN+1
MOVLW .16
MOVWF LOOPCOUNT
LOOP1616:
RLF ACC+0, W
RLF REMAIN+1, F
RLF REMAIN+0, F
MOVF DIVISOR+1, W
SUBWF REMAIN+1, F
MOVF DIVISOR+0, W
BTFSS STATUS, C
INCFSZ DIVISOR+0, W
SUBWF REMAIN+0, F
BTFSC STATUS, C
GOTO CONT1616
MOVF DIVISOR+1, W
ADDWF REMAIN+1, F
MOVF DIVISOR+0, W
BTFSC STATUS, C
INCFSZ DIVISOR+0, W
ADDWF REMAIN+0, F
BCF STATUS, C
CONT1616:
RLF ACC+1, F
RLF ACC+0, F
DECFSZ LOOPCOUNT, F
GOTO LOOP1616
RETURN
;---------------------------------------

;MULTIPY 8-BIT BY 1000
;INPUT = BIT8, ;OUTPUT = HI16, LO16
;MUL_BY_1000:
; CLRF HI16
; CLRF LO16
; MOVF_F BIT8, TEMP_MUL
; LOADF CNT1, .100
; LOADF CNT2, .10
;MUL1
; MOVF TEMP_MUL, W
; ADDWF LO16, F
; BTFSS STATUS, C ;; IF CARRY IS SET,
; GOTO $ + 2 ;; ELSE: SKIP
; INCF HI16, F ;; THEN: PROCESS
;
; DECFSZ CNT1, F
; GOTO MUL1
; LOADF CNT1, .100
; DECFSZ CNT2, F
; GOTO MUL1
; RETURN
;---------------------------------------

;CONVER 16BIT HEX INTO 5 DIGIT BCD
;INPUT : HI_BYTE, LO_BYTE
;OUTPUTS: TEN_K, THOU, HUND, TENS, ONES
HEX16_TO_DEC5:
MOVF_F HI_BYTE, NUMH ;; MOVF f,d Пересылка регистра F
MOVF_F LO_BYTE, NUML

SWAPF NUMH,W ;; SWAPF f,d Обмен местами тетрад в f
ANDLW 0X0F ;; ANDLW k Логическое "И" константы и W
ADDLW 0XF0 ;; ADDLW k Сложение константы с W
MOVWF THOU ;; MOVWF f Пересылка W в F
ADDWF THOU,F ;; ADDWF f,d Сложение W с f
ADDLW .226 ;; ADDLW k Сложение константы с W
MOVWF HUND ;; MOVWF f Пересылка W в F
ADDLW .50 ;; ADDLW k Сложение константы с W
MOVWF ONES ;; MOVWF f Пересылка W в F
MOVF NUMH,W ;; MOVF f,d Пересылка регистра F
ANDLW 0X0F ;; ANDLW k Логическое "И" константы и W
ADDWF HUND,F ;; ADDWF f,d Сложение W с f
ADDWF HUND,F ;; ADDWF f,d Сложение W с f
ADDWF ONES,F ;; ADDWF f,d Сложение W с f
ADDLW .233 ;; ADDLW k Сложение константы с W
MOVWF TENS ;; MOVWF f Пересылка W в F
ADDWF TENS,F ;; ADDWF f,d Сложение W с f
ADDWF TENS,F ;; ADDWF f,d Сложение W с f
SWAPF NUML,W ;; SWAPF f,d Обмен местами тетрад в f
ANDLW 0X0F ;; ANDLW k Логическое "И" константы и W
ADDWF TENS,F ;; ADDWF f,d Сложение W с f
ADDWF ONES,F ;; ADDWF f,d Сложение W с f
RLF TENS,F ;; RLF f,d Вращение f влево через перенос
RLF ONES,F ;; RLF f,d Вращение f влево через перенос
COMF ONES,F ;; COMF f,d Инверсия регистра f
RLF ONES,F ;; RLF f,d Вращение f влево через перенос
MOVF NUML,W ;; MOVF f,d Пересылка регистра F
ANDLW 0X0F ;; ANDLW k Логическое "И" константы и W
ADDWF ONES,F ;; ADDWF f,d Сложение W с f
RLF THOU,F ;; RLF f,d Вращение f влево через перенос
MOVLW 0X07 ;; MOVLW k Пересылка константы в W
MOVWF TEN_K ;; MOVWF f Пересылка W в F
MOVLW .10 ;; MOVLW k Пересылка константы в W
HD1:
ADDWF ONES,F ;; ADDWF f,d Сложение W с f
DECF TENS,F ;; DECF f,d Декремент регистра f
BTFSS 3,0 ;; BTFSS f,b Пропустить команду, если бит b=1
GOTO HD1 ;; GOTO k Переход по адресу
HD2:
ADDWF TENS,F ;; ADDWF f,d Сложение W с f
DECF HUND,F ;; DECF f,d Декремент регистра f
BTFSS 3,0 ;; BTFSS f,b Пропустить команду, если бит b=1
GOTO HD2 ;; GOTO k Переход по адресу
HD3:
ADDWF HUND,F ;; ADDWF f,d Сложение W с f
DECF THOU,F ;; DECF f,d Декремент регистра f
BTFSS 3,0 ;; BTFSS f,b Пропустить команду, если бит b=1
GOTO HD3 ;; GOTO k Переход по адресу
HD4:
ADDWF THOU,F ;; ADDWF f,d Сложение W с f
DECF TEN_K,F ;; DECF f,d Декремент регистра f
BTFSS 3,0 ;; BTFSS f,b Пропустить команду, если бит b=1
GOTO HD4 ;; GOTO k Переход по адресу
RETURN
;---------------------------------------

;PREREQUISITE: LOAD THOU, HUND, TENS, ONES
;
;LCD_TO_DEC:
; MOVLW 0X30
; SUBWF TEN_K, F
; SUBWF THOU, F
; SUBWF HUND, F
; SUBWF TENS, F
; SUBWF ONES, F
; RETURN
;---------------------------------------

;PREREQUISITE: LOAD TEN_K, THOU, HUND, TENS, ONES
;
DEC_TO_LCD:
MOVLW 0X30
ADDWF TEN_K, F
ADDWF THOU, F
ADDWF HUND, F
ADDWF TENS, F
ADDWF ONES, F
RETURN
;-----------------------------------------------

; LCD DRIVER AND COMMANDS FOR 4-BIT INTERFACE
;-----------------------------------------------
;PREREQUISITES: E, RS - OUTPUT
; PORTB 4-7 - OUTPUT
; MS_DELAY - SUBROUTINE
INIT_LCD:
LOADF MS_TIME, .40
CALL MS_DELAY ;; FUNCTION SET
BCF RS ;; SET LCD TO COMMAND MODE
LOADF PORTB, B'00100000'
CALL PULSE_E
LOADF PORTB, B'00100000'
CALL PULSE_E
LOADF PORTB, B'10000000'
CALL PULSE_E
LOADF MS_TIME, .1 ;; DISPLAY CONTROL
CALL MS_DELAY
LOADF PORTB, B'00000000'
CALL PULSE_E
LOADF PORTB, B'11110000'
CALL PULSE_E
LOADF MS_TIME, .1 ;; CLEAR DISPLAY
CALL MS_DELAY
LOADF PORTB, B'00000000'
CALL PULSE_E
LOADF PORTB, B'00010000'
CALL PULSE_E
LOADF MS_TIME, .1 ;; ENTRY MODE SET, .2
CALL MS_DELAY
LOADF PORTB, B'00000000'
CALL PULSE_E
LOADF PORTB, B'01100000'
CALL PULSE_E

LOADF MS_TIME, .2
CALL MS_DELAY

CALL BLINK_OFF
CALL CURSOR_OFF
RETURN

PULSE_E:
BSF E
GOTO $ + 1
GOTO $ + 1
GOTO $ + 1
BCF E
LOADF MS_TIME, .1
CALL MS_DELAY
RETURN
;-------------------------------------------

;INPUT : CHAR, 'X'
;OUTPUT: SENDS THE CHARACTER TO THE LCD
;SEND_CHAR:
; BSF RS ;; SET LCD TO CHARACTOR MODE
; MOVF CHAR, W
; MOVWF PORTB
; CALL PULSE_E
; SWAPF CHAR, W
; MOVWF PORTB
; CALL PULSE_E
; RETURN
;---------------------------------------

;INPUT : CHAR, 'X'
;OUTPUT: SENDS THE COMMAND TO THE LCD
SEND_CHAR:
BSF RS ;; SET LCD TO CHARACTOR MODE
GOTO $ + 2
SEND_COMM:
BCF RS ;; SET LCD TO COMMAND MODE
MOVF CHAR, W
MOVWF PORTB
CALL PULSE_E
SWAPF CHAR, W
MOVWF PORTB
CALL PULSE_E
RETURN
;---------------------------------------

CLEAR:
LOADF CHAR, B'00000001'
CALL SEND_COMM
LOADF MS_TIME, .2
CALL MS_DELAY
RETURN

;HOME:
; LOADF CHAR, B'00000010'
; CALL SEND_COMM
; LOADF MS_TIME, .2
; CALL MS_DELAY
; RETURN

SET_ADDRESS:
BSF CHAR, 7
CALL SEND_COMM
RETURN

BLINK_OFF:
LOADF CHAR, B'00001110'
CALL SEND_COMM
RETURN

CURSOR_OFF:
LOADF CHAR, B'00001100'
CALL SEND_COMM
RETURN
;---------------------------

магистр
Группа: Модераторы
Сообщений: 4243
Добавлено: 01-08-2009 10:42
shorts.inc
#DEFINE BANK0 BCF STATUS, RP0
#DEFINE BANK1 BSF STATUS, RP0
;~~~~~~~~~~~~~MACROS~~~~~~~~~~~~~~~
LOADF MACRO F_VAR, LIT_NUM
MOVLW LIT_NUM
MOVWF F_VAR
ENDM
MOVF_F MACRO F_FROM, F_TO
MOVF F_FROM, W
MOVWF F_TO
ENDM
CHR_LCD_OUT MACRO LIT_NUM
MOVLW LIT_NUM
MOVWF CHAR
CALL SEND_CHAR
ENDM
MEM_LCD_OUT MACRO LIT_NUM
MOVF LIT_NUM, W
MOVWF CHAR
CALL SEND_CHAR
ENDM
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

частый гость
Группа: Участники
Сообщений: 11
Добавлено: 01-08-2009 22:38
Исходник для хронолайта есть, правда не для версии с ЖКИ находится здесь, альтернативный софт для хронолайта, написанный одним из эирганеров. Версия на ЖКИ хоть и намного проще в изготовлении, но и дороже. В этом видимо одна из причин отсутствия долое время варианта с ЖКИ. Тем более что автором проекта исходники были утеряны. Мне кажется никто хронолайт не пиарит, просто разработка представленная здесь практически не известна огромному сообществу любителей пневматики и отзывы о gauss-хронографе не такие уж и плохие(пример приведенный выше не в счет). Я сам собрал этот хрон (gauss) и конструкцией доволен (со своей задачей изделие справляется на все 100), тем более что еще совсем недавно версии хронолайта на ЖКИ не существовало. Хотелось-бы и для вашей(jab) конструкции увидеть обновленное ПО и новые возможности.

....Вот в новой теме я не стал заморачиваться особо текстами т.к. вижу, что народ не испытал интерес.

Направленность данного форума несколько иная, может поэтому конструкция не вызвала интереса?

магистр
Группа: Модераторы
Сообщений: 4243
Добавлено: 01-08-2009 22:48
Версия на ЖКИ хоть и намного проще в изготовлении, но и дороже.

Мне было проще найти б/у ЖКИ чем нужных размеров и конфигурации лиды. Да и не сильно оно там дороже... разница выйдет как раз на пару бутылок пива + таранька. Думаю можно себе позволить. А вот на заводской рамочник я так и не раскашелился... не знаю сколько сейчас, но несколько лет назад было по 60-100$.


Группа: Участники
Сообщений: 2
Добавлено: 01-08-2009 22:54
а подцепить этот дисплей можно к борт компу???

частый гость
Группа: Участники
Сообщений: 11
Добавлено: 01-08-2009 22:55
Для хронолайта выкладывали варианты рамочных датчиков. Один из вариантов здесь. Так что как ни-крути, а лишние 60-100$ (если они конечно лишние) всегда можно куда-нибудь пристроить

магистр
Группа: Модераторы
Сообщений: 4243
Добавлено: 01-08-2009 23:00
а подцепить этот дисплей можно к борт компу???

Странный вопрос... Даже и не знаю что сказать. Дисплей можно "подцепить" на саморезы куда угодно, хоть на заборе во дворе. А зачем спрашивается?

Для хронолайта выкладывали варианты рамочных датчиков.

Я вот что подумал. Подобный вариант надо настраивать чтобы вот вот и срабатывал. Т.е. от внешней засветки много зависит однако. А если изначально понизить чувствительность, то может и не сработать потом на стандартный колпачек свинцовый (паинтбольные шарики не всчет). Как вариант, можно переменные резисторы вынести на боковую панель или ещё куда для подстройки, а можно встроить туда микроконтроллер, который сам будет регулировать уровень срабатывания (на грани фолла так сказать) на максимальную чувствительность подстраиваясь под внешнюю засветку. А вообще наверно более интересен рогатый вариант рамки!?


Группа: Участники
Сообщений: 2
Добавлено: 01-08-2009 23:19
а подцепить этот дисплей можно к борт компу???

Странный вопрос... Даже и не знаю что сказать. Дисплей можно "подцепить" на саморезы куда угодно, хоть на заборе во дворе. А зачем спрашивается?


неее я не про само резы и забор
сейчас на БК стоит 2х строчный дисплей думал заменить на дисп3110

магистр
Группа: Модераторы
Сообщений: 4243
Добавлено: 01-08-2009 23:27
сейчас на БК стоит 2х строчный дисплей думал заменить на дисп3110

Я так понял, речь про графический дисплей от мобильника? Если да, то бля БК придется писать новую прошивку или мудрить переходник на другом МК с выводом на графический ЖКИ. Связано это с тем, что обычные строчные знакогенераторы имеют в своей памяти таблицу знаков и конроллер, который получает внешние команды отобразить нужный знак из таблицы в нужном месте дисплея, а графический отображает все как есть, т.е. затемняет нужную точку по счету. И для генерации букв или рисунков надо самостоятельно послать какие точки затемнить на дисплее.

частый гость
Группа: Участники
Сообщений: 11
Добавлено: 02-08-2009 13:44
А смысл цеплять дисплей от мобильника на данную конструкцию?

гроссмейстер
Группа: Участники
Сообщений: 197
Добавлено: 03-08-2009 17:16
Можно мне объяснить в двух словах, в чем сложность сборки хронографа, и какие подводные камни меня ожидают? Ато я тут тоже собираю

магистр
Группа: Модераторы
Сообщений: 4243
Добавлено: 03-08-2009 17:59
Можно мне

На микроконтроллере? Тебе обьяснить или ты хочешь обьяснить?

to Llevellyn
Куда пропал? И фото пропало.

гроссмейстер
Группа: Участники
Сообщений: 197
Добавлено: 06-08-2009 14:09
jab, это МНЕ надо объяснить :) . На фото ничего интересного
Никуда я не пропадал, я на gauss.getbb.ru обитаю

магистр
Группа: Модераторы
Сообщений: 4243
Добавлено: 06-08-2009 14:40
Собственно сложностей нет. Если все собранно и запрограммировано нормально, то запускается без настройки. Единственное, что может потребоваться, это настройка оптопар. Можно собрать хоть на макетке прикрученной скотчем к трубке с датчиками.

частый гость
Группа: Участники
Сообщений: 29
Добавлено: 06-08-2009 23:01
выкладываю разводку рамки совмещенной с хроном
http://ifolder.ru/13434121
и разводку для рамки совмещенной с ЖКИ хронолайтом(после сборки необходимо задать базу-60ММ)
http://ifolder.ru/13433169
за основу взята схема миронова с аиргуна
http://airgun.org.ru/forum/viewtopic.php?f=35&t=26407&sid=762c27e877e2e53b8eaaeacce8cc49e7
номиналы деталей указаны на платах
D1 - PIC
D2 - lm393n
D3 - lm358n
платы приемников необходимо защитить от боковых засветок

магистр
Группа: Модераторы
Сообщений: 4243
Добавлено: 18-08-2009 23:16
Зачетное кино про станок 3Д. Эх.. свою поделку забросил что-то. Надо побороть лень и доделать.

магистр
Группа: Участники
Сообщений: 340
Добавлено: 18-08-2009 23:44
Хм... хороший аппарат))

частый гость
Группа: Участники
Сообщений: 29
Добавлено: 21-08-2009 20:27
В прошивке ЖКИ хронолайта был обнаружен баг не сливались данные из памяти в комп, вот пофиксеная версия прошивки
http://airgun.org.ru/forum/download/file.php?id=41201

магистр
Группа: Модераторы
Сообщений: 4243
Добавлено: 03-09-2009 17:14
Лазил недавно в нэте и наткнулся на интересный сайт. На котором есть не менее интересный форум. Ребята весьма приуспели в конструировании поделок на микроконтроллерах. Интересные штучки попадаются! Если не смущает английский язык, то советую посетить.

магистр
Группа: Модераторы
Сообщений: 4243
Добавлено: 11-09-2009 23:01
Чтот не врубился, что от меня хочет протеус:

Мож кто поможет? В общем сообщение то высвечивает, но тем не менее на работу оно вроде как не влияет.

магистр
Группа: Модераторы
Сообщений: 857
Добавлено: 12-09-2009 01:37
это на счёт осциллографа хня


Группа: Участники
Сообщений: 2
Добавлено: 11-10-2009 00:06
jab; имеется вопрос на тему прошлых лет, на основе хрона можно-ли изготовить некое устроество, для измерения скорости футбольного мяча, пишитн пожалуйста на почту.

магистр
Группа: Модераторы
Сообщений: 4243
Добавлено: 16-10-2009 23:28
Ну если ты будешь посылать этот мяч точно между датчиков, то запросто.


Группа: Участники
Сообщений: 2
Добавлено: 18-10-2009 11:31
Я предпологаю, что посылать мяч необходимо именно между датчиками, только зона дейчтвия датчиков должна охватывать
1,2в высоту, 1,5в ширину, максимум, и соблысти расстояние мнжду ними по Вашим схемам 100,150,мм. что за датчики можно так настроить? может охранный датчик обьема можно както использовать?


магистр
Группа: Модераторы
Сообщений: 4243
Добавлено: 18-10-2009 14:26
Да любой оптодатчик. Скажем ложиш фототранзисторы на землю линзами в верх на определенном растоянии друг от друга и пинаешь мячик так, чтобы летел над датчиками и создавал на них тень есно. Лучше в полдень это делать или в комнате с лампочками сверху. Если одного датчика мало т.к. не проффесиональный футболист, то можно линейку датчиков положить подключенных последовательно.


Группа: Участники
Сообщений: 3
Добавлено: 05-12-2009 18:28
Если кто в курсе, помогите распознать принтер из которого «это» было снято.
Знаю только что это роботрон.






Извеяюсь за фотки, других ненашлось.

магистр
Группа: Модераторы
Сообщений: 4243
Добавлено: 04-02-2010 09:58
В общем решил я замутить простецкий частотомер. Нужен он мне для индукционной печки. Думал, гадал, что выводить на дисплейчик печки и пока пусть будет частота ГУНа. Думаю так будет удобней отлаживаться и проводить разные эксперименты. Мультиметр каждый раз харит вынимать + у него какая-то лажа с питанием... жрет много почему-то. Видно отремонтировал не доконца с прошлого раза и где-то поджирает лишние миллиамперы. Так вот! Полез в нэт в поисках готовых велосипедов т.е. частотомеров, чтоб не изобретать свой. Нашел сразу стопицот разных ссылок. Половина из них содрана друг у друга и с ошибками и не работает толком. Другая половина мне не понравилась по разным причинам. В общем нужно что-то написать свое. Вариантов алгоритмов реализации не очень много, но все же нужно выбрать один приемлемый. Самое тупое, это считать входящие импульсы "в лоб". Значит, это если процик нам больше не нужен не для чего, то так проканает. Смысл в том, что процик должен ждать изменения уровня сигнала на одном из входов и подсчитывать их за какой-то период времени. Т.е. понадобится ещё таймер и по прерыванию от него мы будем выводить сумму импульсов на экранчик. В общем мне не нравится такой вариант! Другой вариант, это когда импульсы будут приходить на специальный вход прерывания микроконтроллера и вызывать подпрограмму прерывания в которой будут накапливаться входные импульсы. В этом случае процик может заниматься своими вопросами и периодически прерываться, чтоб посмотреть сколько там импульсов набежало и выводить их на экранчик. В общем тоже не очень мне этот алгоритм. Очень много частотомеров реализовано на подсчете входных импульсов с помощью таймера. Некоторые используют нулевой таймер, а некоторые первый. В общем нулевой пока оставлю в покое и взял за основу первый таймер т.к. там проще считать данные из него и насчитать можно до FF FF. Ну а далее по прерыванию можно и дальше считать. В общем тут тоже ряд алгоритмов можно напридумывать. Значит все же надо начемто остановится. Набросал макетку в протеусе и занялся моделирование и кодописанием. Прародителем кода взял программку частотомера с радиокота. Она у меня не хотела работать в упор (может в железе у кого-то запускалось, но судя по коду это вряд ли) и я её несколько переписал. Правда ещё далеко не конечный вариант. Для генерации временных задержек используется внутренняя частота процика, а надо бы наверно запустить таймер от внешнего кварцевого генератора. В общем-то, кто разбирается, то поймет что и где правит, если что.



Предварительно озвучу код:
LIST P=16F628
INCLUDE "p16f628.inc"

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC & _LVP_OFF & _BODEN_OFF & _MCLRE_OFF

; Define Information
#DEFINE RS PORTA, 0
#DEFINE E PORTA, 1

;~~~~~~~~~~~~~MACROS~~~~~~~~~~~~~~~
LOADF MACRO F_VAR, LIT_NUM
MOVLW LIT_NUM
MOVWF F_VAR
ENDM
MOVF_F MACRO F_FROM, F_TO
MOVF F_FROM, W
MOVWF F_TO
ENDM

CBLOCK 0x20
TTt
Time1
Dlay ; 8 Bit Delay Variable
Temp ; a temporary variable
cntmsec
LED1
LED2
LED3
LED4
LED5
NumH
NumL
Tens
Ones
Thou
TenK
Hund
Temp1
Temp2
Temp3
Temp4
SelFr
FrLow
FrHig
CNTJ, MS_TIME, MS_TIME_TEMP
ENDC

ORG 0x000
goto main

; ORG 0x004
; goto int_up


;int_up:
; clrf TMR1H
; clrf TMR1L
; bcf PIR1,0
; bsf T1CON,0
; return

ClearVar
clrf LED1
clrf LED2
clrf LED3
clrf LED4
clrf LED5
clrf NumH
clrf NumL
clrf Tens
clrf Ones
clrf Thou
clrf TenK
clrf Hund
clrf SelFr
return

;----------------------------------------------------------------------;
; Initialize the ports and timer1 an ADC ;
;----------------------------------------------------------------------;
init:
clrf PORTA
movlw 0x07
movwf CMCON
bsf STATUS,RP0
movlw 0x00 ;порт А все выходы
movwf TRISA
movlw 0x40 ;порт В все выходы
movwf TRISB
bcf STATUS,RP0
clrf PORTA
clrf PORTB
movlw B'00000110'
movwf T1CON
bcf T1CON,0
return

;----------------------------------------------------------------------;
; Initialize the LCD ;
;----------------------------------------------------------------------;
INIT_LCD:
LOADF MS_TIME, .40
CALL MS_DELAY
BCF RS
LOADF PORTB, B'00000010'
CALL PULSE_E
LOADF PORTB, B'00000010'
CALL PULSE_E
LOADF PORTB, B'00001000'
CALL PULSE_E
LOADF MS_TIME, .1 ;; DISPLAY CONTROL
CALL MS_DELAY
LOADF PORTB, B'00000000'
CALL PULSE_E
LOADF PORTB, B'00001111'
CALL PULSE_E
LOADF MS_TIME, .1 ;; CLEAR DISPLAY
CALL MS_DELAY
LOADF PORTB, B'00000000'
CALL PULSE_E
LOADF PORTB, B'00000001'
CALL PULSE_E
LOADF MS_TIME, .1 ;; ENTRY MODE SET, .2
CALL MS_DELAY
LOADF PORTB, B'00000000'
CALL PULSE_E
LOADF PORTB, B'00000110'
CALL PULSE_E

LOADF MS_TIME, .01
CALL MS_DELAY

CALL BLINK_OFF
CALL CURSOR_OFF

return

PULSE_E:
BSF E
GOTO $ + 1
GOTO $ + 1
GOTO $ + 1
BCF E
CALL USEC_100
RETURN
;-------------------------------------------

;-------------------------------------------
CLEAR:
movlw B'00000001'
call SendINS
LOADF MS_TIME, .2
CALL MS_DELAY
RETURN

HOME:
movlw B'00000010'
call SendINS
LOADF MS_TIME, .2
CALL MS_DELAY
RETURN

BLINK_ON:
movlw B'00001111'
call SendINS
LOADF MS_TIME, .2
CALL MS_DELAY
RETURN

BLINK_OFF:
movlw B'00001110'
call SendINS
LOADF MS_TIME, .2
CALL MS_DELAY
RETURN

CURSOR_ON:
movlw B'00001110'
call SendINS
LOADF MS_TIME, .2
CALL MS_DELAY
RETURN

CURSOR_OFF:
movlw B'00001100'
call SendINS
LOADF MS_TIME, .2
CALL MS_DELAY
RETURN

;SET_ADDRESS:
; BSF CHAR, 7
; CALL SEND_COMM
; RETURN
;-------------------------------------------

;INPUT : CHAR, 'X'
;OUTPUT: SENDS THE CHARACTER TO THE LCD
;SEND_CHAR:
; MOVF_F CHAR, CHAR1
; SWAPF CHAR, W
; MOVWF CHAR2
; BSF RS ;; SET LCD TO CHARACTOR MODE
; MOVF_F CHAR1, PORTB
; CALL PULSE_E
; MOVF_F CHAR2, PORTB
; CALL PULSE_E
; RETURN
;---------------------------------------

;INPUT : CHAR, 'X'
;OUTPUT: SENDS THE COMMAND TO THE LCD
;SEND_COMM:
; MOVF_F CHAR, CHAR1
; SWAPF CHAR, W
; MOVWF CHAR2
; BCF RS ;; SET LCD TO COMMAND MODE
; MOVF_F CHAR1, PORTB
; CALL PULSE_E
; MOVF_F CHAR2, PORTB
; CALL PULSE_E
; RETURN
;---------------------------------------

;----------------------------------------------------------------------;
; Send the ch aracter in W out to the LCD ;
;----------------------------------------------------------------------;
SendASCII
movwf Temp ; Save the Temporary Value
swapf Temp, w ; Send the High Nybble
bsf RS ; RS = 1
call NybbleOut
movf Temp, w ; Send the Low Nybble
bsf RS
call NybbleOut
return

;----------------------------------------------------------------------;
; Send an instruction in W out to the LCD ;
;----------------------------------------------------------------------;
SendINS ; Send the Instruction to the LCD
movwf Temp ; Save the Temporary Value
swapf Temp, w ; Send the High Nybble
bcf RS ; RS = 0
call NybbleOut
movf Temp, w ; Send the Low Nybble
bcf RS
call NybbleOut
return

;----------------------------------------------------------------------;
; Send the nibble in W out to the LCD ;
;----------------------------------------------------------------------;
NybbleOut ; Send a Nybble to the LCD
andlw B'00001111'
movwf PORTB
CALL PULSE_E
return

;MILLI SECOND DELAY ROUTINE
;DELAY = X MILLI-SECOND (4MHZ CLOCK).
MS_DELAY:
MOVF_F MS_TIME, MS_TIME_TEMP

MS_LOOP:
MOVLW 0XA4
MOVWF CNTJ
DECFSZ CNTJ, F
GOTO $ - 1
MOVLW 0XA4
MOVWF CNTJ
DECFSZ CNTJ, F
GOTO $ - 1

DECFSZ MS_TIME_TEMP, F ;; IF COUNTER ENDS,
GOTO MS_LOOP ;; ELSE- REPEAT
RETURN ;; THEN- EXIT LOOP

USEC_10:
GOTO $ + 1
GOTO $ + 1
GOTO $ + 1
RETURN

USEC_20:
GOTO $ + 1
GOTO $ + 1
GOTO $ + 1
GOTO $ + 1
GOTO $ + 1
GOTO $ + 1
GOTO $ + 1
NOP
NOP
RETURN

USEC_100:
CALL USEC_20
CALL USEC_20
CALL USEC_20
CALL USEC_20
GOTO $ + 1
GOTO $ + 1
GOTO $ + 1;
GOTO $ + 1
GOTO $ + 1
GOTO $ + 1
GOTO $ + 1
NOP
NOP
RETURN

;-----------------------------------------------------------------------;
; Out to LCD frequence xxxxx Hz ;
;-----------------------------------------------------------------------;
FreqHz
movf LED1,0
addlw "0"
call SendASCII
movf LED2,0
addlw "0"
call SendASCII
movf LED3,0
addlw "0"
call SendASCII
movf LED4,0
addlw "0"
call SendASCII
movf LED5,0
addlw "0"
call SendASCII
movlw " "
call SendASCII

movlw " "
call SendASCII
movlw "H"
call SendASCII
movlw "z"
call SendASCII
movlw " "
call SendASCII
return

;-----------------------------------------------------------------------;
; Out to LCD frequence xxx.xx kHz ;
;-----------------------------------------------------------------------;
FreqkHz
movf LED1,0
addlw "0"
call SendASCII
movf LED2,0
addlw "0"
call SendASCII
movf LED3,0
addlw "0"
call SendASCII
movlw "."
call SendASCII
movf LED4,0
addlw "0"
call SendASCII
movf LED5,0
addlw "0"
call SendASCII
movlw " "
call SendASCII

movlw "k"
call SendASCII
movlw "H"
call SendASCII
movlw "z"
call SendASCII
return

;-----------------------------------------------------------------------;
; Out to LCD frequence x.xxxx MHz ;
;-----------------------------------------------------------------------;
FreqMHz1
movf LED1,0
addlw "0"
call SendASCII
movlw "."
call SendASCII
movf LED2,0
addlw "0"
call SendASCII
movf LED3,0
addlw "0"
call SendASCII
movf LED4,0
addlw "0"
call SendASCII
movf LED5,0
addlw "0"
call SendASCII
movlw " "
call SendASCII

movlw "M"
call SendASCII
movlw "H"
call SendASCII
movlw "z"
call SendASCII
return

;-----------------------------------------------------------------------;
; Out to LCD frequence xx.xxx MHz ;
;-----------------------------------------------------------------------;
FreqMHz2
movf LED1,0
addlw "0"
call SendASCII
movf LED2,0
addlw "0"
call SendASCII
movlw "."
call SendASCII
movf LED3,0
addlw "0"
call SendASCII
movf LED4,0
addlw "0"
call SendASCII
movf LED5,0
addlw "0"
call SendASCII
movlw " "
call SendASCII

movlw "M"
call SendASCII
movlw "H"
call SendASCII
movlw "z"
call SendASCII
return

;----------------------------------------------------------------------;
; Text "Frq: " ;
;----------------------------------------------------------------------;
Text1
movlw "F"
call SendASCII
movlw "r"
call SendASCII
movlw "q"
call SendASCII
movlw ":"
call SendASCII
movlw " "
call SendASCII
return

;----------------------------------------------------------------------;
; Convert two bute to dec ;
;----------------------------------------------------------------------;
Convert
movf NumH,0
swapf NumH,w
andlw 0x0F
addlw 0xF0
movwf Thou
addwf Thou,f
addlw 0xE2
movwf Hund
addlw 0x32
movwf Ones

movf NumH,w
andlw 0x0F
addwf Hund,f
addwf Hund,f
addwf Ones,f
addlw 0xE9
movwf Tens
addwf Tens,f
addwf Tens,f

swapf NumL,w
andlw 0x0F
addwf Tens,f
addwf Ones,f

rlf Tens,f
rlf Ones,f
comf Ones,f
rlf Ones,f

movf NumL,w
andlw 0x0F
addwf Ones,f
rlf Thou,f

movlw 0x07
movwf TenK


movlw 0A
Lb1:
addwf Ones,f
decf Tens,f
btfss 3,0
goto Lb1
Lb2:
addwf Tens,f
decf Hund,f
btfss 3,0
goto Lb2
Lb3:
addwf Hund,f
decf Thou,f
btfss 3,0
goto Lb3
Lb4:
addwf Thou,f
decf TenK,f
btfss 3,0
goto Lb4
retlw 00

;----------------------------------------------------------------------;
; Get frequence to LED1...LED5 ;
;----------------------------------------------------------------------;
OutFrDis
movf FrHig,0
movwf NumH
movf FrLow,0
movwf NumL

call Convert
movf TenK,0
movwf LED1
movf Thou,0
movwf LED2
movf Hund,0
movwf LED3
movf Tens,0
movwf LED4
movf Ones,0
movwf LED5
return

;----------------------------------------------------------------------;
; Timer1 count pulse in RC0 Hz ;
;----------------------------------------------------------------------;
Count_Hz
clrf FrLow
clrf FrHig
; movlw .3 ;10
; movwf TTt
; movlw .236 ;176
; movwf Temp1
clrf TMR1H
clrf TMR1L
bcf PIR1,0
bsf T1CON,0

;DelayT100
; movlw .189
; movwf Temp2
; decfsz Temp2,1
; goto $-1
; decfsz Temp1,1
; goto DelayT100
; movlw .175
; movwf Temp1
; decfsz TTt,1
; goto DelayT100
; movlw .50
; movwf Temp3
; decfsz Temp3,1
; goto $-1

LOADF MS_TIME, .425
CALL MS_DELAY
CALL MS_DELAY

bcf T1CON,0
movf TMR1H,0
movwf FrHig
movf TMR1L,0
movwf FrLow
clrf SelFr
return

;----------------------------------------------------------------------;
; Timer1 count pulse in RC0 kHz ;
;----------------------------------------------------------------------;
Count_kHz
clrf FrLow
clrf FrHig
; movlw .174
; movwf Temp1
clrf TMR1H
clrf TMR1L
bcf PIR1,0
bsf T1CON,0

;DelayT10
; movlw .190
; movwf Temp2
; decfsz Temp2,1
; goto $-1
; decfsz Temp1,1
; goto DelayT10
; movlw .41
; movwf Temp3
; decfsz Temp3,1
; goto $-1

LOADF MS_TIME, .18
CALL MS_DELAY
CALL MS_DELAY

bcf T1CON,0
movf TMR1H,0
movwf FrHig
movf TMR1L,0
movwf FrLow
movlw .1
movwf SelFr
return

;----------------------------------------------------------------------;
; Timer1 count pulse in RC0 xMHz ;
;----------------------------------------------------------------------;
Count_MHz1
clrf FrLow
clrf FrHig
movlw .86
movwf Temp1
clrf TMR1H
clrf TMR1L
bcf PIR1,0
bsf T1CON,0

DelayT1
movlw .36
movwf Temp2
decfsz Temp2,1
goto $-1
decfsz Temp1,1
goto DelayT1
movlw .122
movwf Temp3
decfsz Temp3,1
goto $-1
nop

bcf T1CON,0
movf TMR1H,0
movwf FrHig
movf TMR1L,0
movwf FrLow
movlw .2
movwf SelFr
return

;----------------------------------------------------------------------;
; Timer1 count pulse in RC0 xMHz ;
;----------------------------------------------------------------------;
Count_MHz2
movlw B'00010110'
movwf T1CON
clrf FrLow
clrf FrHig
bcf PIR1,0
clrf TMR1H
clrf TMR1L
bsf T1CON,0
movlw .250
movwf Temp3
decfsz Temp3,1
goto $-1
movlw .250
movwf Temp3
decfsz Temp3,1
goto $-1
movlw .164
movwf Temp3
decfsz Temp3,1
goto $-1
nop
nop
nop
nop
bcf T1CON,0
movf TMR1H,0
movwf FrHig
movf TMR1L,0
movwf FrLow
movlw B'00000110'
movwf T1CON
movlw .3
movwf SelFr
return

;----------------------------------------------------------------------;
; The Main routine ;
;----------------------------------------------------------------------;
main:
call ClearVar
call init
call INIT_LCD

Restart
call Count_Hz
btfsc PIR1,0
call Count_kHz
; btfsc PIR1,0
; call Count_MHz1
; btfsc PIR1,0
; call Count_MHz2
call OutFrDis
call CLEAR
call Text1

movlw .0
xorwf SelFr,0
btfsc STATUS,Z
call FreqHz
movlw .1
xorwf SelFr,0
btfsc STATUS,Z
call FreqkHz
; movlw .2
; xorwf SelFr,0
; btfsc STATUS,Z
; call FreqMHz1
; movlw .3
; xorwf SelFr,0
; btfsc STATUS,Z
; call FreqMHz2

goto Restart
end


В общем там с задержками ещё надо разобраться. На килогерцах, и уж темболее на мегогерцах, не смог толком отладить т.к. медленно это все моделиуется у меня. Включаю генератор килогерц эдак на 100 и иду гулять минут на 5-10 чтоб дождаться результатов. Надо в железе собрать и проверять результат в реальном времени.

З.Ы. По ходу я затупил тут... Щас только дошло. Я в протеусе процику поставил частоту 4МГц! А нужно было 12? Соответственно с старым вариантом (оно закомментировано) задержек показывал частоту в 3 раза больше. Сегодня вечером поиграю ещё с этим делом. Потом отпишусь, что вышло.

частый гость
Группа: Участники
Сообщений: 11
Добавлено: 10-02-2010 01:30
Наконец-то упаковал. Функций хоть и не много, но со своей основной задачей справляется хорошо.






магистр
Группа: Модераторы
Сообщений: 4243
Добавлено: 10-02-2010 02:56
kimad, искренне поздравляю! Хорошо получилось. Планируется модернизация или новый вариант?

частый гость
Группа: Участники
Сообщений: 11
Добавлено: 11-02-2010 00:45
Вообще-то думал об этом, но для дальнейшего шага, на мой взгляд, требуется изменение прошивки, а с этим у меня пока-что туговато.

магистр
Группа: Модераторы
Сообщений: 4243
Добавлено: 11-02-2010 11:01
kimad, прошивку особо не проблема править. Были бы идеи в какую сторону править. Типа добавить кнопок разных и меню. Чтоб был в одном флаконе хрон и частотомер + память результатов выстрелов. Ну и ещё нужно прожку дописать на ПК для получения данных из хрона. Типа такого?

частый гость
Группа: Участники
Сообщений: 11
Добавлено: 11-02-2010 23:20
Программа есть, и не плохая http://airgun.org.ru/forum/viewtopic.php?f=35&t=21286 . Можно попросить mironovа добавить поддержку гаусс-хронографа или попробовать переписать процедуру обмена данными с ПК аналогично хронолайту (исходник имеется). А насчет меню и кнопок: память, возможность изменения размера базы, наверное это для начала. На неделе займусь рамкой.

частый гость
Группа: Участники
Сообщений: 11
Добавлено: 13-02-2010 02:57
To Jab, случайно нету-ли программы для связи с ПК с http://www.anothercoilgunsite.com/ ? Оттуда скачать не получается по причине отсутствия файла.

магистр
Группа: Модераторы
Сообщений: 4243
Добавлено: 13-02-2010 14:13
случайно нету-ли программы

Есть. А накой она тебе здалась? Херня все. Написана на VBасике и особой ценности не представляет. Вам же замерять пневмострелы, а там заточка под катушки и конденсаторы. Могу почтой скинуть, если всеже любопытно. Намыль мне письмо, я в обратку кину. Я вот думаю, мож реально замутить преобразователь миниатюрный, чтоб питать от двух пальчиков...

магистр
Группа: Модераторы
Сообщений: 4243
Добавлено: 24-02-2010 10:16
Очень долго боролся ленью, но удалось её победить. Запаял до кучи тренировочный макет частотомера. В общем будет на чем отлаживаться. Поставил старые задержки, включил, работает. Както странно. В протеусе пишет одно, в железе другое. Где-то я туплю. Буду ещё дорабатывать и разбираться что и где.


В общемто частоты показывает почти как и китаец, но есть отличие некоторое. Кто и насколько врет, пока не ясно. Нужен калиброванный генератор. Хотя может и не нужен, для моих целей.

магистр
Группа: Модераторы
Сообщений: 4243
Добавлено: 26-02-2010 11:03
Частотомер несколько подпачил. Значит текущая рабочая схема + код hex прошивки к нему. По идее должен замерять до 60МГц. Проверял на 4МГц.


HEX
:020000040000FA
:10000000E529A501A601A701A801A901AA01AB0143
:10001000AC01AD01AE01AF01B001B5010800850131
:1000200007309F0083160030850040308600831221
:10003000850186010730900008002830B900922021
:100040000510023086004B20023086004B2008301D
:1000500086004B200130B9009220003086004B20F2
:100060000F3086004B200130B9009220003086000E
:100070004B20013086004B200130B9009220003027
:1000800086004B20063086004B200130B9009220BC
:1000900064207020080085144D284E284F288510B4
:1000A000AD200800013086200530B90092200800FC
:1000B000023086200530B900922008000F308620DB
:1000C0000530B900922008000E3086200530B900B6
:1000D000922008000E3086200530B90092200800DA
:1000E0000C3086200530B90092200800A300A31729
:1000F000230886200530B90092200800A300230EB3
:1001000005148E20230805148E200800A300230E5A
:1001100005108E20230805108E2008000F39860058
:100120004B2008003908BA00A430B800B80B962854
:10013000A430B800B80B9A28BA0B94280800A0285D
:10014000A128A2280800A428A528A628A728A8280E
:10015000A928AA28000000000800A320A320A320AB
:10016000A320B228B328B428B528B628B728B828C1
:100170000000000008002508303E7E202608303EA2
:100180007E202708303E7E202808303E7E20290829
:10019000303E7E2020307E2020307E2048307E2061
:1001A0007A307E2008002508303E7E202608303E2A
:1001B0007E202708303E7E202E307E202808303ECC
:1001C0007E202908303E7E2020307E206B307E202D
:1001D00048307E207A307E2008002508303E7E2080
:1001E0002E307E202608303E7E202708303E7E209E
:1001F0002808303E7E202908303E7E2020307E2098
:100200004D307E2048307E207A307E200800250840
:10021000303E7E202608303E7E202E307E2027086D
:10022000303E7E202808303E7E202908303E7E2049
:1002300020307E204D307E2048307E207A307E2057
:10024000080046307E2072307E2071307E203A30A9
:100250007E2020307E2008002A082A0E0F39F03E2A
:10026000AE00AE07E23EB000323EAD002A080F39C4
:10027000B007B007AD07E93EAC00AC07AC072B0EEA
:100280000F39AC07AD07AC0DAD0DAD09AD0D2B08A9
:100290000F39AD07AE0D0730AF000A30AD07AC0324
:1002A000031C4E29AC07B003031C5229B007AE0350
:1002B000031C5629AE07AF03031C5A290034370824
:1002C000AA003608AB002C212F08A5002E08A60096
:1002D0003008A7002C08A8002D08A9000800B601C6
:1002E000B7010A30A000B030B1008F018E010C10B0
:1002F0001014BD30B200B20B7B29B10B7929AF309D
:10030000B100A00B79293230B300B30B852910104E
:100310000F08B7000E08B600B5010800B601B70116
:10032000AE30B1008F018E010C101014BE30B2003F
:10033000B20B9829B10B96292930B300B30B9E2933
:1003400010100F08B7000E08B6000130B500080005
:10035000B601B7015630B1008F018E010C10101498
:100360002430B200B20BB229B10BB0297A30B300FD
:10037000B30BB829000010100F08B7000E08B60024
:100380000230B500080016309000B601B7010C101D
:100390008F018E011014FA30B300B30BCD29FA305F
:1003A000B300B30BD129A430B300B30BD52900009F
:1003B00000000000000010100F08B7000E08B60083
:1003C000063090000330B500080001200F201D20EA
:1003D0006F210C188E210C18A8210C18C3215F2145
:1003E00052202121003035060319BB20013035068B
:1003F0000319D320023035060319ED2003303506EA
:0604000003190721E829A1
:02400E00023F6F
:00000001FF


Входной сигнал амплитудой напряжения брал от 2В до 12В. Если планируется большее напряжение, то нужно увеличить R6, чтобы не привысить допустимый ток диодов D1, D2. Дисплей 16х1, можно 16х2, можно 16х4, главное чтоб строка была в 16символов.

поисковик затейник
Группа: Модераторы
Сообщений: 1045
Добавлено: 26-02-2010 23:48
Ну прям брат близнец!
www.cqham.ru/scllcd.htm

магистр
Группа: Модераторы
Сообщений: 4243
Добавлено: 27-02-2010 17:27
Почему близнец? Рядом не валялось. Схема другая и программа работает по другому.
Решил попробовать частотомер на более высоких частотах. Подогнали мне тут по случаю генератор с разборки. Микруха CMX-309FB питание 3.3В генерит 25МГц. По идее калибровано. Подключил запустил и глухо. Ткнул осциллом на максимальном пределе, а он бедняга не тянет такие частоты и на экране пронаблюдал не совсем что хотел.. почти синус . В общем генератор работает. Подключил напрямую к 12 ноги контроллера и пошел процесс!

Работает в общем. Значит придется доработать входной каскад. Попробовал найти на базаре пределитель... голяк! Хотел попробовать до гигагерца замерять. Потом придумаю что-то.

поисковик затейник
Группа: Модераторы
Сообщений: 1045
Добавлено: 27-02-2010 19:20
Да с близнецом это я что то сглупил.А что не уж то прескалеры даже такие как U664B;SB3500;КР193ИЕ6 не купить? http://vrtp.ru/index.php?showtopic=9629 Первые два вроде как для бытавухи.

магистр
Группа: Модераторы
Сообщений: 4243
Добавлено: 27-02-2010 20:36
Я искал SAB6456, а других не знаю высокочастотных и мелких. Надо было подготовится перед поездкой за деталькой... не ожидал, затупил. А продавцы замену не подсказали и вообще не в курсе что такое прескалер или делитель. Лан, хрен с ним. Потом найду что-то. Вообще было бы интересно и пригодилось бы для лампогрелки индукционной.

поисковик затейник
Группа: Модераторы
Сообщений: 1045
Добавлено: 27-02-2010 21:51
Есть вот такая штуковина. http://hem.passagen.se/communication/poorc.html http://www.cqham.ru/Count_LMX.htm Если память не изменяет то бывают на материнках старых и ещё у меня на платке от мобильника какого то стоит LMX2315 до 2.5Ghz.

мастер
Группа: Участники
Сообщений: 76
Добавлено: 07-03-2010 21:56
случайно нашел 16-сегментный led дисплей с драйвером uaa2022 ... не могу разобраться как им управлять ... может кто помочь?
Здесь твой пост более уместен.http


Группа: Участники
Сообщений: 7
Добавлено: 17-03-2010 16:17
-----------------------
;; Хронограф с выводом результата на LCD дисплей (8х2 в одну строку) и COM порт.
;; Распиновка микросхемы
;; PIN I/O FROM TO
;;----------------------------------------------------------------------
;; A0 O E LCD E
;; A1 O RS LCD RS
;; A2 I BIT 2 SENSOR_1
;; A3 I BIT 3 SENSOR_2
;; A4 O
;; A5 O
;; A6 O
;; A7 O
;;
;; B0 0
;; B1 I RS232 RX PC RX
;; B2 O RS232 TX PC TX
;; B3 O
;; B4 O BIT 4 LCD BIT 4
;; B5 O BIT 5 LCD BIT 5
;; B6 O BIT 6 LCD BIT 6
;; B7 O BIT 7 LCD BIT 7
;;----------------------------------------------------------------------

list p=16F628A
#include <P16F628A.INC>
#include <shorts.inc>

__CONFIG _LVP_OFF & _MCLRE_OFF & _XT_OSC & _BODEN_OFF & _CP_OFF & _WDT_OFF & _PWRTE_ON
ERRORLEVEL -302

#DEFINE E PORTA, 0 ;; OUTPUT TO LCD
#DEFINE RS PORTA, 1 ;; OUTPUT TO LCD
#DEFINE SENSOR_1 PORTA, 2 ;; INPUT
#DEFINE SENSOR_2 PORTA, 3 ;; INPUT

CBLOCK 0X20
CNTJ ;; FOR MS_DELAY
; BIT8, CNT1, CNT2, TEMP_MUL, HI16, LO16 ;; FOR MUL_BY_1000
MS_TIME, MS_TIME_TEMP
LO_BYTE, HI_BYTE ;; FOR LCD DRIVER
CHAR ;; FOR DATA CONVERTION
TEN_K, THOU, HUND, TENS, ONES
DIVIDEND1, DIVIDEND2, DIVIDEND3, DIVISOR1, DIVISOR2
DVDEND_HI, DVDEND_LO
TIME_HI, TIME_LO, NUMH, NUML
IF_ERROR ;; Признак ошибки
ENDC

ACC EQU 0x5C ; Most significant Byte
SIGN EQU 0x62 ; save location for sign in MSB
TEMP EQU 0x68 ; temporary storage
DIVIDEND EQU 0x5C ; Most significant Byte
DIVISOR EQU 0x65 ; Most significant Byte
REMAIN EQU 0x60 ; Most significant Byte
LOOPCOUNT EQU 0x63 ; loop counter

ORG 0x000
CALL init_pic
GOTO MAIN

ORG 0x004
GOTO int_t

init_pic
;----------------------------PORT I/O CONFIGURATION/SETUP-------------------------------
BANK0
MOVLW 0X07
MOVWF CMCON ;; DISABLE CAPTURE/COMPARE MODULES.

BANK1
LOADF TRISA, B'00101100'
LOADF TRISB, B'00000110' ;; SET BITS 1, 2 FOR USART.
BSF OPTION_REG, NOT_RBPU ;; BCF/BSF = ENABLE/DISABLE PULL-UP.

;------------------POWER ON RESET CONFIGURATION/SETUP--------------------------
BSF PCON, OSCF ;BCF/BSF = 37KHZ/4MHZ INTRC OR ER OSCILLATOR SPEED.

;--------------------------INTERRUPT CONFIGURATION/SETUP-------------------------------
; BANK1
; BCF INTCON, GIE ;BCF/BSF = DIS/ENABLE GLOBAL INTERRUPT.
; BCF INTCON, PEIE ;BCF/BSF = DIS/ENABLE Разрешение прерываний от переферийных модулей
; BCF INTCON, T0IE ;BCF/BSF = DIS/ENABLE Разрешение прерывания по переполнению TMR0
; BCF INTCON, INTE ;BCF/BSF = DIS/ENABLE RB0 INTERRUPT.
; BCF INTCON, RBIE ;BCF/BSF = DIS/ENABLE RB7-4 INTERRUPT.
BSF PIE1, TMR1IE ;BCF/BSF = DIS/ENABLE Разрешение прерывания по переполнению TMR1
;--------------------------------------------------------------------------------------

;-------------------------USART CONFIGURATION/SETUP------------------------------------
BANK1
BCF PIE1, TXIE ;BCF/BSF = DIS/ENABLE TX INTERRUPT.
BSF TXSTA, CSRC ;BCF/BSF = EXT/INTERNAL GENERATOR.
BCF TXSTA, TX9 ;BCF/BSF = 8-BIT/9-BIT TRANSMISSION.
BSF TXSTA, TXEN ;BCF/BSF = DIS/ENABLE TRANSMISSION.
BCF TXSTA, SYNC ;BCF/BSF = A/SYNCHRONOUS MODE.
BSF TXSTA, BRGH ;BCF/BSF = LO/HI SPEED BAUD RATE SELECT.
LOADF SPBRG, .12 ;SET BAUD RATE TO 19.2 KBPS.
BANK0
BSF RCSTA, SPEN ;BCF/BSF = DIS/ENABLE SERIAL PORT.
BCF RCSTA, RX9 ;BCF/BSF = 8-BIT/9-BIT TRANSMISSION.
BSF RCSTA, SREN ;BCF/BSF = DIS/ENABLE SINGLE RECEIVE.
BCF RCSTA, CREN ;BCF/BSF = DIS/ENABLE CONTINUOS RECEIVE.
BSF RCSTA, SPEN ;BCF/BSF = DIS/ENABLE SERIAL PORT.
;--------------------------------------------------------------------------------------
RETURN

;*********************MAIN***********************
MAIN:
CALL INIT_LCD

ERR_TEST:
CALL CLEAR
CALL GET_ERROR
BTFSC IF_ERROR, 7
GOTO ERR_TEST
CALL CLEAR
CALL LCD_1

GET:
CALL GET_VELOCITY
CALL SEND_USART
CALL LCD_UPDATE
GOTO GET

;*****************END 0F MAIN******************

int_t
BCF T1CON, TMR1ON ;BCF/BSF = DISABLE/ENABLE TIMER1 ON.
BCF PIE1, TMR1IF ;BCF/BSF = DISABLE/ENABLE Разрешение прерывания по переполнению TMR1

CLRF TMR1L ;; THEN, START TIMING.
CLRF TMR1H

MOVF_F TMR1L, TIME_LO ;; FINALY, COPY TIMER1 INTO LO/HI BYTES.
MOVF_F TMR1H, TIME_HI

GOTO ERR_TEST

;Проверяем датчики
GET_ERROR: ;; DUAL SENSOR DETECTION.
BCF IF_ERROR, 7

LOADF CHAR, 0X00
CALL SET_ADDRESS

BTFSS SENSOR_1
GOTO $ + 3
CALL D1_ER
GOTO $ + 2
CALL D1_OK

LOADF CHAR, 0X40
CALL SET_ADDRESS

BTFSS SENSOR_2
GOTO $ + 3
CALL D2_ER
GOTO $ + 2
CALL D2_OK


LOADF MS_TIME, .250 ;; 1.5 SEC DELAY.
CALL MS_DELAY
CALL MS_DELAY
CALL MS_DELAY
CALL MS_DELAY
CALL MS_DELAY
CALL MS_DELAY
RETURN

D1_OK:
CHR_LCD_OUT 'D'
CHR_LCD_OUT '1'
CHR_LCD_OUT '-'
CHR_LCD_OUT 'O'
CHR_LCD_OUT 'K'
CHR_LCD_OUT ' '
CHR_LCD_OUT ' '
CHR_LCD_OUT ' '
RETURN

D1_ER:
CHR_LCD_OUT 'D'
CHR_LCD_OUT '1'
CHR_LCD_OUT '-'
CHR_LCD_OUT 'E'
CHR_LCD_OUT 'R'
CHR_LCD_OUT ' '
CHR_LCD_OUT ' '
CHR_LCD_OUT ' '
BSF IF_ERROR, 7
RETURN

D2_OK:
CHR_LCD_OUT 'D'
CHR_LCD_OUT '2'
CHR_LCD_OUT '-'
CHR_LCD_OUT 'O'
CHR_LCD_OUT 'K'
CHR_LCD_OUT ' '
CHR_LCD_OUT ' '
CHR_LCD_OUT ' '
RETURN

D2_ER:
CHR_LCD_OUT 'D'
CHR_LCD_OUT '2'
CHR_LCD_OUT '-'
CHR_LCD_OUT 'E'
CHR_LCD_OUT 'R'
CHR_LCD_OUT ' '
CHR_LCD_OUT ' '
CHR_LCD_OUT ' '
BSF IF_ERROR, 7
RETURN
;---------------------------------------

;Первоначальная надпись на LCD
LCD_1:
LOADF CHAR, 0X00
CALL SET_ADDRESS

CHR_LCD_OUT 'A'
CHR_LCD_OUT 'W'
CHR_LCD_OUT 'A'
CHR_LCD_OUT 'I'
CHR_LCD_OUT 'T'
CHR_LCD_OUT ' '
CHR_LCD_OUT '-'
CHR_LCD_OUT ' '

LOADF CHAR, 0X40
CALL SET_ADDRESS

CHR_LCD_OUT 'S'
CHR_LCD_OUT 'H'
CHR_LCD_OUT 'O'
CHR_LCD_OUT 'O'
CHR_LCD_OUT 'T'
CHR_LCD_OUT '!'
CHR_LCD_OUT '!'
CHR_LCD_OUT '!'
RETURN
;---------------------------------------

;DETECTION AND TIMING OF PROJECTILE
GET_VELOCITY: ;; DUAL SENSOR DETECTION.
CLRF TMR1L ;; THEN, START TIMING.
CLRF TMR1H

BSF INTCON, GIE ;BCF/BSF = DISABLE/ENABLE Глобальное разрешение прерываний
BSF INTCON, PEIE ;BCF/BSF = DIS/ENABLE Разрешение прерываний от переферийных модулей

BTFSS SENSOR_1 ;; AWAIT DETECTION: ACTIVE HI.
GOTO $ - 1

BSF T1CON, TMR1ON ;BCF/BSF = DISABLE/ENABLE TIMER1 ON.

BTFSS SENSOR_2 ;; NEXT, AWAIT DETECTION: ACTIVE HI.
GOTO $ - 1

BCF T1CON, TMR1ON ;BCF/BSF = DISABLE/ENABLE TIMER1 ON.

BCF INTCON, GIE ;BCF/BSF = DISABLE/ENABLE Глобальное разрешение прерываний
BCF INTCON, PEIE ;BCF/BSF = DIS/ENABLE Разрешение прерываний от переферийных модулей

MOVF_F TMR1L, TIME_LO ;; FINALY, COPY TIMER1 INTO LO/HI BYTES.
MOVF_F TMR1H, TIME_HI

LOADF MS_TIME, .250 ;; 1 SEC DELAY BEFORE NEXT MEASUREMENT.
CALL MS_DELAY
CALL MS_DELAY
CALL MS_DELAY
CALL MS_DELAY
RETURN
;---------------------------------------

;Отсылаем данные в RS232
SEND_USART:
CALL TXWAIT
MOVF_F TIME_HI, TXREG
CALL TXWAIT
MOVF_F TIME_LO, TXREG
CALL TXWAIT
RETURN
;---------------------------------------

;Использовать эту задержку перед отправкой данных TXREG.
TXWAIT:
BANK1
BTFSS TXSTA, TRMT ;; IF TX IS COMPLETED,
GOTO $ - 1 ;; ELSE, WAIT
BANK0 ;; THEN, CONTINUE.
LOADF MS_TIME, .1
CALL MS_DELAY
RETURN
;--------------------------------------

;Вычисление скорости и вывод на LCD
LCD_UPDATE:
CALL CLEAR
MOVF_F TIME_HI, HI_BYTE
MOVF_F TIME_LO, LO_BYTE
CALL HEX16_TO_DEC5 ;; CONVERT HEX TO DECIMAL,
CALL DEC_TO_LCD ;; THEN DECIMAL TO LCD DISPLAY.

MEM_LCD_OUT TEN_K
MEM_LCD_OUT THOU
CHR_LCD_OUT '.'
MEM_LCD_OUT HUND
MEM_LCD_OUT TENS
MEM_LCD_OUT ONES
CHR_LCD_OUT 'm'
CHR_LCD_OUT 's'

; CALL LCD_TO_DEC
;; CALCULATIONS TO METERS PER SECOND.
; LOADF BIT8, .40 ;; DETECTOR DISTANCE = 40 MILLI-METERS
; CALL MUL_BY_1000 ;; MULTIPLY DISTANCE MILLI-METERS BY 1000
;
; MOVF_F HI16, DIVIDEND1 ;; DIVIDE MILLI-METERS BY TIMING
; MOVF_F LO16, DIVIDEND2 ;; 40,000 / TIME_HI:TIME_LO

LOADF DIVIDEND1, 0x9C ;; Для дистанции 40мм
LOADF DIVIDEND2, 0x40 ;; 40,000 / TIME_HI:TIME_LO

MOVF_F TIME_HI, DIVISOR1
MOVF_F TIME_LO, DIVISOR2
CALL DIVIDE_16_16 ;; RETURNS DIVIDEND+0:DIVIDEND+1

MOVF_F DIVIDEND+0, HI_BYTE ;; VELOCITY RESULT COPY
MOVF_F DIVIDEND+1, LO_BYTE ;; VELOCITY RESULT COPY
CALL HEX16_TO_DEC5
CALL DEC_TO_LCD

LOADF CHAR, 0X40 ;; GOTO LCD SECOND LINE.
CALL SET_ADDRESS

CHR_LCD_OUT ' '
MEM_LCD_OUT THOU ;; DISPLAY "XXXXX M/S"
MEM_LCD_OUT HUND
MEM_LCD_OUT TENS
MEM_LCD_OUT ONES
CHR_LCD_OUT 'm'
CHR_LCD_OUT '/'
CHR_LCD_OUT 's'

; CALL LCD_TO_DEC
RETURN
;---------------------------------------

;BORROWED FROM MICROCHIP APP NOTES. EXTENSIVELY
;MODIFIED TO SUPPORT 16F628.
;DIVIDE 16BIT BY 16BIT
;INPUT : DVDEND_HI, DVDEND_LO, DVSOR_HI, DVSOR_LO
;OUTPUT: DIVIDEND+0, DIVIDEND+1
;----Define divide register variables---
; ACC EQU 0x5C ; Most significant Byte
; SIGN EQU 0x62 ; save location for sign in MSB
; TEMP EQU 0x68 ; temporary storage
; DIVIDEND EQU 0x5C ; Most significant Byte
; DIVISOR EQU 0x65 ; Most significant Byte
; REMAIN EQU 0x60 ; Most significant Byte
; LOOPCOUNT EQU 0x63 ; loop counter
;---------------------------------------
DIVIDE_16_16:
MOVF_F DIVIDEND1, DIVIDEND+0
MOVF_F DIVIDEND2, DIVIDEND+1
MOVF_F DIVISOR1, DIVISOR+0
MOVF_F DIVISOR2, DIVISOR+1
CLRF REMAIN+0
CLRF REMAIN+1
MOVLW .16
MOVWF LOOPCOUNT
LOOP1616:
RLF ACC+0, W
RLF REMAIN+1, F
RLF REMAIN+0, F
MOVF DIVISOR+1, W
SUBWF REMAIN+1, F
MOVF DIVISOR+0, W
BTFSS STATUS, C
INCFSZ DIVISOR+0, W
SUBWF REMAIN+0, F
BTFSC STATUS, C
GOTO CONT1616
MOVF DIVISOR+1, W
ADDWF REMAIN+1, F
MOVF DIVISOR+0, W
BTFSC STATUS, C
INCFSZ DIVISOR+0, W
ADDWF REMAIN+0, F
BCF STATUS, C
CONT1616:
RLF ACC+1, F
RLF ACC+0, F
DECFSZ LOOPCOUNT, F
GOTO LOOP1616
RETURN
;---------------------------------------

;MULTIPY 8-BIT BY 1000
;INPUT = BIT8, ;OUTPUT = HI16, LO16
;MUL_BY_1000:
; CLRF HI16
; CLRF LO16
; MOVF_F BIT8, TEMP_MUL
; LOADF CNT1, .100
; LOADF CNT2, .10
;MUL1
; MOVF TEMP_MUL, W
; ADDWF LO16, F
; BTFSS STATUS, C ;; IF CARRY IS SET,
; GOTO $ + 2 ;; ELSE: SKIP
; INCF HI16, F ;; THEN: PROCESS
;
; DECFSZ CNT1, F
; GOTO MUL1
; LOADF CNT1, .100
; DECFSZ CNT2, F
; GOTO MUL1
; RETURN
;---------------------------------------

;CONVER 16BIT HEX INTO 5 DIGIT BCD
;INPUT : HI_BYTE, LO_BYTE
;OUTPUTS: TEN_K, THOU, HUND, TENS, ONES
HEX16_TO_DEC5:
MOVF_F HI_BYTE, NUMH ;; MOVF f,d Пересылка регистра F
MOVF_F LO_BYTE, NUML

SWAPF NUMH,W ;; SWAPF f,d Обмен местами тетрад в f
ANDLW 0X0F ;; ANDLW k Логическое "И" константы и W
ADDLW 0XF0 ;; ADDLW k Сложение константы с W
MOVWF THOU ;; MOVWF f Пересылка W в F
ADDWF THOU,F ;; ADDWF f,d Сложение W с f
ADDLW .226 ;; ADDLW k Сложение константы с W
MOVWF HUND ;; MOVWF f Пересылка W в F
ADDLW .50 ;; ADDLW k Сложение константы с W
MOVWF ONES ;; MOVWF f Пересылка W в F
MOVF NUMH,W ;; MOVF f,d Пересылка регистра F
ANDLW 0X0F ;; ANDLW k Логическое "И" константы и W
ADDWF HUND,F ;; ADDWF f,d Сложение W с f
ADDWF HUND,F ;; ADDWF f,d Сложение W с f
ADDWF ONES,F ;; ADDWF f,d Сложение W с f
ADDLW .233 ;; ADDLW k Сложение константы с W
MOVWF TENS ;; MOVWF f Пересылка W в F
ADDWF TENS,F ;; ADDWF f,d Сложение W с f
ADDWF TENS,F ;; ADDWF f,d Сложение W с f
SWAPF NUML,W ;; SWAPF f,d Обмен местами тетрад в f
ANDLW 0X0F ;; ANDLW k Логическое "И" константы и W
ADDWF TENS,F ;; ADDWF f,d Сложение W с f
ADDWF ONES,F ;; ADDWF f,d Сложение W с f
RLF TENS,F ;; RLF f,d Вращение f влево через перенос
RLF ONES,F ;; RLF f,d Вращение f влево через перенос
COMF ONES,F ;; COMF f,d Инверсия регистра f
RLF ONES,F ;; RLF f,d Вращение f влево через перенос
MOVF NUML,W ;; MOVF f,d Пересылка регистра F
ANDLW 0X0F ;; ANDLW k Логическое "И" константы и W
ADDWF ONES,F ;; ADDWF f,d Сложение W с f
RLF THOU,F ;; RLF f,d Вращение f влево через перенос
MOVLW 0X07 ;; MOVLW k Пересылка константы в W
MOVWF TEN_K ;; MOVWF f Пересылка W в F
MOVLW .10 ;; MOVLW k Пересылка константы в W
HD1:
ADDWF ONES,F ;; ADDWF f,d Сложение W с f
DECF TENS,F ;; DECF f,d Декремент регистра f
BTFSS 3,0 ;; BTFSS f,b Пропустить команду, если бит b=1
GOTO HD1 ;; GOTO k Переход по адресу
HD2:
ADDWF TENS,F ;; ADDWF f,d Сложение W с f
DECF HUND,F ;; DECF f,d Декремент регистра f
BTFSS 3,0 ;; BTFSS f,b Пропустить команду, если бит b=1
GOTO HD2 ;; GOTO k Переход по адресу
HD3:
ADDWF HUND,F ;; ADDWF f,d Сложение W с f
DECF THOU,F ;; DECF f,d Декремент регистра f
BTFSS 3,0 ;; BTFSS f,b Пропустить команду, если бит b=1
GOTO HD3 ;; GOTO k Переход по адресу
HD4:
ADDWF THOU,F ;; ADDWF f,d Сложение W с f
DECF TEN_K,F ;; DECF f,d Декремент регистра f
BTFSS 3,0 ;; BTFSS f,b Пропустить команду, если бит b=1
GOTO HD4 ;; GOTO k Переход по адресу
RETURN
;---------------------------------------

;PREREQUISITE: LOAD THOU, HUND, TENS, ONES
;
;LCD_TO_DEC:
; MOVLW 0X30
; SUBWF TEN_K, F
; SUBWF THOU, F
; SUBWF HUND, F
; SUBWF TENS, F
; SUBWF ONES, F
; RETURN
;---------------------------------------

;PREREQUISITE: LOAD TEN_K, THOU, HUND, TENS, ONES
;
DEC_TO_LCD:
MOVLW 0X30
ADDWF TEN_K, F
ADDWF THOU, F
ADDWF HUND, F
ADDWF TENS, F
ADDWF ONES, F
RETURN
;-----------------------------------------------

; LCD DRIVER AND COMMANDS FOR 4-BIT INTERFACE
;-----------------------------------------------
;PREREQUISITES: E, RS - OUTPUT
; PORTB 4-7 - OUTPUT
; MS_DELAY - SUBROUTINE
INIT_LCD:
LOADF MS_TIME, .40
CALL MS_DELAY ;; FUNCTION SET
BCF RS ;; SET LCD TO COMMAND MODE
LOADF PORTB, B'00100000'
CALL PULSE_E
LOADF PORTB, B'00100000'
CALL PULSE_E
LOADF PORTB, B'10000000'
CALL PULSE_E
LOADF MS_TIME, .1 ;; DISPLAY CONTROL
CALL MS_DELAY
LOADF PORTB, B'00000000'
CALL PULSE_E
LOADF PORTB, B'11110000'
CALL PULSE_E
LOADF MS_TIME, .1 ;; CLEAR DISPLAY
CALL MS_DELAY
LOADF PORTB, B'00000000'
CALL PULSE_E
LOADF PORTB, B'00010000'
CALL PULSE_E
LOADF MS_TIME, .1 ;; ENTRY MODE SET, .2
CALL MS_DELAY
LOADF PORTB, B'00000000'
CALL PULSE_E
LOADF PORTB, B'01100000'
CALL PULSE_E

LOADF MS_TIME, .2
CALL MS_DELAY

CALL BLINK_OFF
CALL CURSOR_OFF
RETURN

PULSE_E:
BSF E
GOTO $ + 1
GOTO $ + 1
GOTO $ + 1
BCF E
LOADF MS_TIME, .1
CALL MS_DELAY
RETURN
;-------------------------------------------

;INPUT : CHAR, 'X'
;OUTPUT: SENDS THE CHARACTER TO THE LCD
;SEND_CHAR:
; BSF RS ;; SET LCD TO CHARACTOR MODE
; MOVF CHAR, W
; MOVWF PORTB
; CALL PULSE_E
; SWAPF CHAR, W
; MOVWF PORTB
; CALL PULSE_E
; RETURN
;---------------------------------------

;INPUT : CHAR, 'X'
;OUTPUT: SENDS THE COMMAND TO THE LCD
SEND_CHAR:
BSF RS ;; SET LCD TO CHARACTOR MODE
GOTO $ + 2
SEND_COMM:
BCF RS ;; SET LCD TO COMMAND MODE
MOVF CHAR, W
MOVWF PORTB
CALL PULSE_E
SWAPF CHAR, W
MOVWF PORTB
CALL PULSE_E
RETURN
;---------------------------------------

CLEAR:
LOADF CHAR, B'00000001'
CALL SEND_COMM
LOADF MS_TIME, .2
CALL MS_DELAY
RETURN

;HOME:
; LOADF CHAR, B'00000010'
; CALL SEND_COMM
; LOADF MS_TIME, .2
; CALL MS_DELAY
; RETURN

SET_ADDRESS:
BSF CHAR, 7
CALL SEND_COMM
RETURN

BLINK_OFF:
LOADF CHAR, B'00001110'
CALL SEND_COMM
RETURN

CURSOR_OFF:
LOADF CHAR, B'00001100'
CALL SEND_COMM
RETURN
--------------------------------------

Hello jab
please convert this assembler in the .HEX
thank you for support :)

поисковик затейник
Группа: Модераторы
Сообщений: 1045
Добавлено: 17-03-2010 17:43
Maybe save it as txt and rename the hex?
HEX
:020000040000FA
:10000000E529A501A601A701A801A901AA01AB0143
:10001000AC01AD01AE01AF01B001B5010800850131
:1000200007309F0083160030850040308600831221
:10003000850186010730900008002830B900922021
:100040000510023086004B20023086004B2008301D
:1000500086004B200130B9009220003086004B20F2
:100060000F3086004B200130B9009220003086000E
:100070004B20013086004B200130B9009220003027
:1000800086004B20063086004B200130B9009220BC
:1000900064207020080085144D284E284F288510B4
:1000A000AD200800013086200530B90092200800FC
:1000B000023086200530B900922008000F308620DB
:1000C0000530B900922008000E3086200530B900B6
:1000D000922008000E3086200530B90092200800DA
:1000E0000C3086200530B90092200800A300A31729
:1000F000230886200530B90092200800A300230EB3
:1001000005148E20230805148E200800A300230E5A
:1001100005108E20230805108E2008000F39860058
:100120004B2008003908BA00A430B800B80B962854
:10013000A430B800B80B9A28BA0B94280800A0285D
:10014000A128A2280800A428A528A628A728A8280E
:10015000A928AA28000000000800A320A320A320AB
:10016000A320B228B328B428B528B628B728B828C1
:100170000000000008002508303E7E202608303EA2
:100180007E202708303E7E202808303E7E20290829
:10019000303E7E2020307E2020307E2048307E2061
:1001A0007A307E2008002508303E7E202608303E2A
:1001B0007E202708303E7E202E307E202808303ECC
:1001C0007E202908303E7E2020307E206B307E202D
:1001D00048307E207A307E2008002508303E7E2080
:1001E0002E307E202608303E7E202708303E7E209E
:1001F0002808303E7E202908303E7E2020307E2098
:100200004D307E2048307E207A307E200800250840
:10021000303E7E202608303E7E202E307E2027086D
:10022000303E7E202808303E7E202908303E7E2049
:1002300020307E204D307E2048307E207A307E2057
:10024000080046307E2072307E2071307E203A30A9
:100250007E2020307E2008002A082A0E0F39F03E2A
:10026000AE00AE07E23EB000323EAD002A080F39C4
:10027000B007B007AD07E93EAC00AC07AC072B0EEA
:100280000F39AC07AD07AC0DAD0DAD09AD0D2B08A9
:100290000F39AD07AE0D0730AF000A30AD07AC0324
:1002A000031C4E29AC07B003031C5229B007AE0350
:1002B000031C5629AE07AF03031C5A290034370824
:1002C000AA003608AB002C212F08A5002E08A60096
:1002D0003008A7002C08A8002D08A9000800B601C6
:1002E000B7010A30A000B030B1008F018E010C10B0
:1002F0001014BD30B200B20B7B29B10B7929AF309D
:10030000B100A00B79293230B300B30B852910104E
:100310000F08B7000E08B600B5010800B601B70116
:10032000AE30B1008F018E010C101014BE30B2003F
:10033000B20B9829B10B96292930B300B30B9E2933
:1003400010100F08B7000E08B6000130B500080005
:10035000B601B7015630B1008F018E010C10101498
:100360002430B200B20BB229B10BB0297A30B300FD
:10037000B30BB829000010100F08B7000E08B60024
:100380000230B500080016309000B601B7010C101D
:100390008F018E011014FA30B300B30BCD29FA305F
:1003A000B300B30BD129A430B300B30BD52900009F
:1003B00000000000000010100F08B7000E08B60083
:1003C000063090000330B500080001200F201D20EA
:1003D0006F210C188E210C18A8210C18C3215F2145
:1003E00052202121003035060319BB20013035068B
:1003F0000319D320023035060319ED2003303506EA
:0604000003190721E829A1
:02400E00023F6F
:00000001FF





Группа: Участники
Сообщений: 7
Добавлено: 17-03-2010 19:01
sorry not work
maybe includ and this
--------------
shorts.inc
#DEFINE BANK0 BCF STATUS, RP0
#DEFINE BANK1 BSF STATUS, RP0
;~~~~~~~~~~~~~MACROS~~~~~~~~~~~~~~~
LOADF MACRO F_VAR, LIT_NUM
MOVLW LIT_NUM
MOVWF F_VAR
ENDM
MOVF_F MACRO F_FROM, F_TO
MOVF F_FROM, W
MOVWF F_TO
ENDM
CHR_LCD_OUT MACRO LIT_NUM
MOVLW LIT_NUM
MOVWF CHAR
CALL SEND_CHAR
ENDM
MEM_LCD_OUT MACRO LIT_NUM
MOVF LIT_NUM, W
MOVWF CHAR
CALL SEND_CHAR
ENDM
;~~~~

магистр
Группа: Модераторы
Сообщений: 4243
Добавлено: 18-03-2010 09:49
HEX

:020000040000FA
:04000000052020288F
:080008002B28831207309F0032
:1000100083162C3085000630860081178E150C144F
:1000200083160C12981718139816181218150C30FE
:100030009900831298171813981618129817080029
:10004000BC21FD213420B61B2128FD21B420EB204A
:1000500002211221272810100C108E018F010E088A
:10006000B3000F08B2002128B6130030A500042207
:10007000051D3C2867203D284E204030A500042265
:10008000851D44289A2045288120FA30A1000F229E
:100090000F220F220F220F220F2208004430A5004A
:1000A000F3213130A500F3212D30A500F3214F308D
:1000B000A500F3214B30A500F3212030A500F3214A
:1000C0002030A500F3212030A500F32108004430A2
:1000D000A500F3213130A500F3212D30A500F32137
:1000E0004530A500F3215230A500F3212030A500B2
:1000F000F3212030A500F3212030A500F321B6170D
:1001000008004430A500F3213230A500F3212D3042
:10011000A500F3214F30A500F3214B30A500F321BA
:100120002030A500F3212030A500F3212030A500C8
:10013000F32108004430A500F3213230A500F3215B
:100140002D30A500F3214530A500F3215230A50044
:10015000F3212030A500F3212030A500F321203029
:10016000A500F321B61708000030A5000422413095
:10017000A500F3215730A500F3214130A500F3215C
:100180004930A500F3215430A500F3212030A5000B
:10019000F3212D30A500F3212030A500F3214030BC
:1001A000A50004225330A500F3214830A500F32117
:1001B0004F30A500F3214F30A500F3215430A500A6
:1001C000F3212130A500F3212130A500F3212130B6
:1001D000A500F32108008E018F018B170B17051D59
:1001E000EF281014851DF22810108B130B130E0826
:1001F000B3000F08B200FA30A1000F220F220F2225
:100200000F2208000A21320899000A2133089900B8
:100210000A2108008316981C0B2983120130A100C3
:100220000F220800FD213208A4003308A3007F211B
:10023000B5212608A500F3212708A500F3212E30BB
:10024000A500F3212808A500F3212908A500F32122
:100250002A08A500F3216D30A500F3217330A50015
:10026000F3219C30AB004030AC003208AE003308C4
:10027000AF005C215C08A4005D08A3007F21B521CC
:100280004030A50004222030A500F3212708A50056
:10029000F3212808A500F3212908A500F3212A0845
:1002A000A500F3216D30A500F3212F30A500F32127
:1002B0007330A500F32108002B08DC002C08DD00BA
:1002C0002E08E5002F08E600E001E1011030E30010
:1002D0005C0DE10DE00D6608E1026508031C650F89
:1002E000E00203187A296608E10765080318650F1C
:1002F000E0070310DD0DDC0DE30B6829080024087E
:10030000B4002308B500340E0F39F03EA700A7074C
:10031000E23EA800323EAA0034080F39A807A80719
:10032000AA07E93EA900A907A907350E0F39A907B1
:10033000AA07A90DAA0DAA09AA0D35080F39AA07FF
:10034000A70D0730A6000A30AA07A903031CA42999
:10035000A907A803031CA829A807A703031CAC2905
:10036000A707A603031CB02908003030A607A7077B
:10037000A807A907AA0708002830A1000F228510A6
:1003800020308600EA2120308600EA218030860075
:10039000EA210130A1000F2200308600EA21F0306E
:1003A0008600EA210130A1000F2200308600EA21F8
:1003B00010308600EA210130A1000F2200308600B3
:1003C000EA2160308600EA210230A1000F220722D4
:1003D0000B2208000514EC29ED29EE290510013047
:1003E000A1000F2208008514F62985102508860033
:1003F000EA21250E8600EA2108000130A500F5213A
:100400000230A1000F220800A517F52108000E30C8
:10041000A500F52108000C30A500F52108002108F1
:10042000A200A430A000A00B132AA430A000A00BAF
:08043000172AA20B112A080093
:02400E00013F70
:00000001FF

Страницы: << Prev 1 2 3 4 5 6 Next>> новая тема
Раздел: 
Gauss2k - gauss gun у тебя дома / Электроника и Электротехника / Микроконтроллеры, LCD и все, что с ними связано.

Отвечать на темы могут только зарегистрированные пользователи

KXK.RU