Что-то не получается с АЦП на 12F675

Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить
FAZAN
Родился
Сообщения: 3
Зарегистрирован: Вт июл 02, 2013 21:49:57

Что-то не получается с АЦП на 12F675

Сообщение FAZAN »

Здравствуйте! Хочу посмотреть звук через микрофон на семисегментнике. Т.е. какой звук, полученный микрофоном, в какой двоичный код преобразуется. Возможно идея нелепая, но очень интересно))) Не могу понять почему не пашет программный код? Вроде бы уже всё, что только можно прописал и проверил, но собранная модель в протеусе не работает. Кто сталкивался, подскажите, пожалуйста(уже голова опухла).... Вот код:

Код: Выделить всё

 ; Шапка 
 LIST     P=PIC12F675         
 __CONFIG   b'00000011111100'   
INTCON      equ         0Bh      
STATUS      equ         03h
GPIO        equ         05h   
WPU         equ         15h
TRISIO      equ         05h
OSCCAL      equ         10h
ANSEL       equ         1Fh
ADCON0      equ         1Fh
ADRESH      equ         1Eh
PIR1        equ         0Ch
OPTION_REG  equ         1h
CMCON       equ         19h
IOCB        equ         16h
PCL         equ         02h
first       equ         20h
R_hun       equ         21h
R_ten       equ         22h
Reg_1       equ         23h
Reg_2       equ         24h
Reg_3       equ         25h 
            org         0
            goto        Start
 ; Рабочая часть
Start       clrwdt  

            call        3FFh     
            movwf       OSCCAL        ; калибровка   
            bcf         STATUS,5
            clrf        GPIO          ; инициализация защёлок
            bsf         STATUS,5
            movlw       b'00001001'   ; направление портов в/в
            movwf       TRISIO
            clrf        INTCON        ; запрет всех прерываний
            movlw       b'00011000'   ; важный регистр
            movwf       OPTION_REG            
            clrf        WPU           ; отключение подтягивающих резисторов
            clrf        IOCB          ; запрет прерываний по изм уровня сигнала на в/в
            bcf         STATUS,5
            movlw       b'00000111'   
            movwf       CMCON         ; откл. компаратора
            bsf         STATUS,5
            movlw       b'01010001'   ; настройка АЦП:
            movwf       ANSEL 
            bcf         STATUS,5
            movlw       b'00000001'   ; выбор канала АЦП
            movwf       ADCON0
            goto        $+1           ; задержка после выбора канала АЦП
            goto        $+1 
            goto        $+1 
            goto        $+1 
            bsf         ADCON0,1      ; включение АЦП
AtDC_1      clrwdt
            btfsc       ADCON0,1      ; ожидание коца опроса
            goto        AtDC_1
            movf        ADRESH,w      ; копирование ст.разряда результата АЦП
            movwf       first
; преобразование bin-BCD
            clrf        R_hun
            clrf        R_ten    
R_100       clrwdt 
            bsf         STATUS,0      ; поднятие флага С
            movlw       .100          ; определение сотен
            subwf       first,w
            btfss       STATUS,0
            goto        LED2
            incf        R_hun,f
            movwf       first
            goto        R_100
LED2        movf        R_hun,w       ; вывод на индикацор старшего разряда
            call        Table
            movwf       GPIO
Pause_1     movlw       .254          ; задержка для разграничения показаний
            movwf       Reg_1
            movlw       .17
            movwf       Reg_2
            movlw       .6
            movwf       Reg_3
wr_1        clrwdt
            decfsz      Reg_1, F
            goto        wr_1
            decfsz      Reg_2, F
            goto        wr_1
            decfsz      Reg_3, F
            goto        wr_1
            goto        $+1
R_10        clrwdt 
            bsf         STATUS,0      ; поднятие флага С
            movlw       .10           ; определение десятков
            subwf       first,w
            btfss       STATUS,0
            goto        LED1
            incf        R_ten,f
            movwf       first
            goto        R_10
LED1        movf        R_ten,w       ; вывод на идикатор среднего разряда
            call        Table
            movwf       GPIO
Pause_2     movlw       .254          ; задержка для разграничения показаний
            movwf       Reg_1
            movlw       .17
            movwf       Reg_2
            movlw       .6
            movwf       Reg_3
wr_2        clrwdt
            decfsz      Reg_1, F
            goto        wr_2
            decfsz      Reg_2, F
            goto        wr_2
            decfsz      Reg_3, F
            goto        wr_2
            goto        $+1
LED0        movf        first,w       ; младший разряд остаётся и выводится на индикатор
            call        Table
            movwf       GPIO
Pause_3     movlw       .254          ; задержка для разграничения показаний
            movwf       Reg_1
            movlw       .17
            movwf       Reg_2
            movlw       .6
            movwf       Reg_3
wr_3        clrwdt
            decfsz      Reg_1, F
            goto        wr_3
            decfsz      Reg_2, F
            goto        wr_3
            decfsz      Reg_3, F
            goto        wr_3
            goto        $+1
            goto        Start
Table       clrwdt
            addwf       PCL,f
            retlw       b'00000000'     ; 0
            retlw       b'00100000'     ; 1                        
            retlw       b'00010000'     ; 2
            retlw       b'00110000'     ; 3
            retlw       b'00000100'     ; 4
            retlw       b'00100100'     ; 5
            retlw       b'00010100'     ; 6
            retlw       b'00110100'     ; 7
            retlw       b'00000010'     ; 8
            retlw       b'00100010'     ; 9
            end
Реклама
otest
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

Re: Что-то не получается с АЦП на 12F675

Сообщение otest »

Т.е. какой звук, полученный микрофоном, в какой двоичный код преобразуется.
Какое сделаеш преобразование ,так и преобразуется.
собранная модель в протеусе не работает.
Где она???
Реклама
FAZAN
Родился
Сообщения: 3
Зарегистрирован: Вт июл 02, 2013 21:49:57

Re: Что-то не получается с АЦП на 12F675

Сообщение FAZAN »

Доброй ночи. Спасибо что откликнулись. Может я в силу своей неопытности что-то напутал, тут Вы правы. А может из-за того, что на семёрке косяки какие-то, но это вряд ли... Прикрепляю проект и прошивку...
Вложения
Прошивка и проект.RAR
(14.97 КБ) 174 скачивания
Аватара пользователя
wws63
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Вс май 21, 2006 16:07:59
Откуда: Алтай

Re: Что-то не получается с АЦП на 12F675

Сообщение wws63 »

Попробуйте закоментировать строчку CALL 3FFH (Протеус с ней тупит) и заменить её movlw . 12 ( например)
Реклама
Эиком - электронные компоненты и радиодетали
otest
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

Re: Что-то не получается с АЦП на 12F675

Сообщение otest »

1.В проекте нет файла (асм)
2. Не нужно описывать регистры специального назначения, достаточно подключить файл (inc).
3. Модели микрофона в Proteus нет.
4. MCLR подключи к +5в.
Как советовали выше закоментируй строки
call 3FFh
movwf OSCCAL ; калибровка
Реклама
FAZAN
Родился
Сообщения: 3
Зарегистрирован: Вт июл 02, 2013 21:49:57

Re: Что-то не получается с АЦП на 12F675

Сообщение FAZAN »

Спасибо огромное за помощь!!! Всё получилось)))
Реклама
Ответить

Вернуться в «PIC»