PIC16F676, konfigurace A/D převodníku
Moderátor: Moderátoři
PIC16F676, konfigurace A/D převodníku
list p=16f676 ; list directive to define processor
#include <p16F676.inc> ; processor specific variable definitions
ORG 0x2007 ; processor reset vector
__CONFIG _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_ON & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT
;
;***** VARIABLE DEFINITIONS
;-----nastavení pro inicializaci a zobrazení na displeji-------------------------
RAM equ 0x20
d1 equ 0x21
d2 equ 0x22
; -------------------------------------------------------------------------------
org 0x000 ; zacatek programu
;-----------------------
INIT CLRF PORTA
CLRF PORTC
BSF STATUS,RP0
MOVLW b'00000001'
MOVWF ANSEL
MOVWF TRISA
CLRF TRISC
;
MOVLW b'11010000'
MOVWF OPTION_REG
;
BSF PIE1,ADIE
BSF INTCON,PEIE
MOVLW b'00010000'
MOVWF ADCON1
BCF STATUS,RP0
MOVLW b'10000001'
MOVWF ADCON0
;-------------------------
MAIN BSF ADCON0,GO
BTFSC ADCON0,GO
GOTO $-1
MOVF ADRESL,W
BCF STATUS,RP0
MOVWF PORTC
CALL DELAY
GOTO MAIN
;------------------------
DELAY MOVLW 0x25
MOVWF d2
DELAY1 DECFSZ d1,f
GOTO DELAY1
DECFSZ d2,f
GOTO DELAY1
RETURN
;------------------------
END
Ešte pred MAIN by som dal CALL DELAY (stačí 20us)
"Podle seriálu v Praktické elektronice" nepoznám. Ak sa jedná o kontrolery fy Microchip, tak info čerpám z ich stránok a najmä z dokumentácie ku konkrétnemu typu a info k prekladaču. V tomto prípade MPASM.
Spravidla je to postačujúce.
Poznámka:
použi "code" a "code*" ...potom je zdrojový text čitateľný ako v bežnom editore
Kód: Vybrat vše
;--------------
MAIN:
CALL DELAY
;..........
RETURN
;--------
ADC-W0001: Tad time is less than 1.60us
ADC-W0008: No stimulus file attached to ADRESL for A/D.
Nevíte co je příčinou hlášky ADC-W0008? Jak by měla vypadat časová procedura pro zpoždění, když používám krystal 4MHz a případně i nastavení ADCON1 a ADCON1?
Mám to takto:
MOVLW b'10100000'
MOVWF ADCON1
MOVLW b'01000001'
MOVWF ADCON0
Děkuji za radu.
Ak sú dobre nastavené ADCON0 a 1 treba v SIMe nastaviť frekvenciu. Asi bude nastavená oveľa vyššia (môže byť aj 20 000kHz).
Niektoré periférie sa zložitejšie simulujú. Niektoré cykly sú otravne dlhé.
V takýchto prípadoch v programe použijem "podmienený preklad" pri ladení.
Kód: Vybrat vše
if LADENIE == 1
; časť programu pre ladenie
...
...
endif
alebo konštrukciu if.....else....endif