AD ile Timer değişkenini karşılaştırabilir miyim?

Başlatan sezgin05, 05 Mayıs 2004, 10:04:12

sezgin05

Arkadaşlar ben 877 ile yaptığım LCD bir devrede potansiyometre ile belirlediğim bir değer ile arka planda çalışan  dakika eşitlendiğinde portlardan birinden çıkış almak istiyorum. Bir çeşit alarm devresi gibi fakat pot ile set edilecek.Teşekkürler....


sezgin05

İlginize teşekkürler Libertador usta,bu boardla tanışmadan önce tek uğrak yerim antrak idi.Bu yazıyı okumuştum.Benim asembly bilgim çok az,basic kodlarıda istediğim bilgiyi karşılamıyor.
Kısaca Pot ile ayarladığım değer ile süre değişkeni eşitlenince bana çıkış verecek bir kod istiyorum.Ben Picbasicte TMR0'ı ve AD dönüştürücüyü aynı anda kullanamıyorum.
Kolay gelsin...

Libertador

Asagida TMR0 kesmesi kullanarak yaptigim motor kontrol kodunu gonderiyorum. Umarim isini gorur. Finallerim yuzunden kodun calismasi hakkinda fazla bir sey yazamiyorum. Daha sonra daha ayrintili bilgi verebilirim.

Iyi calismalar.

Not: Picbasic'i hic kullanmadim. Acikcasi bu tarz basit islemler icin yuksek seviye bir dil kullanmanin sadece yavaslamaya ve fazla yer kaplamaya yol acacagini dusunuyorum. Ayrica Assembler diline tam olarak hakim olmadan Picbasic ile ugrasmak karsilasilan cesitli sorunlarin cozumunu bulmayi zorlastiracagini dusunuyorum.

Not2: Usta olmak icin daha cok yolum var. :)

;RB1 VE RB2 CIKIS, RA0 POTANSİYOMETRE BAGLI HIZ KONTROLU, RA1 BRAKE
;RADIX DEC 			;proteus simulasyonu sirasinda bu iki satiri kullanma normalde kullan.
; __IDLOCS H'0100' 
	LIST	P=16F877 
	INCLUDE	"P16F877a.INC" 
 	ORG		H'000'
	GOTO	ANA
	ORG		H'004'
	GOTO	HBRIDGE

ANA
SAYAC1	EQU	h'21'
SAYAC2	EQU	h'22'
SECIM	EQU	H'23'
TDARBE	EQU	H'24'
SAYAC3	equ	h'25'  
 MOVLW B'10100000' 
 MOVWF INTCON 
 MOVLW B'00000000' 
 MOVWF PORTA 
 MOVLW B'00000000' 
 MOVWF PORTB 
  MOVLW B'00000000' 
 MOVWF PORTC 
 MOVLW B'00000000' 
 MOVWF PORTD 
 MOVLW B'00000000' 
 MOVWF PORTE 
 movlw B'01000001' ;Konum/8, A/D enabled 
 movwf ADCON0 

 BSF STATUS,RP0 ; Bank 1  
 BCF STATUS,RP1 ; Bank 1 
 MOVLW B'10000111' ;TMR0 prescaler, 1:256 Bölme palsı 
 MOVWF OPTION_REG 
 MOVLW B'00001110' ;Left seçme,1 analog channel  
 MOVWF ADCON1 
 MOVLW B'00000001' 
 MOVWF TRISA 
 MOVLW B'10000000' 
 MOVWF TRISB 
 MOVLW B'00000000' 
 MOVWF TRISC 
 MOVLW B'00000000' 
 MOVWF TRISD 
  MOVLW B'00000000' 
 MOVWF TRISE 
 BCF STATUS,RP0 ; Bank 0 
 BCF STATUS,RP1 ; Bank 0 

;-------------------------------------program baslangıcı------------------------------------- 
BASLA
DONGU
 BTFSC	SECIM, 0
 GOTO	ILERI
 BTFSS	SECIM, 0
 GOTO	GERI
ILERI
	BSF	PORTB,2
	COMF	TDARBE, W
	MOVWF	SAYAC1
	BSF	PORTB,1
	CALL	GCKME2
	MOVF	TDARBE, W
	MOVWF	SAYAC1
	BCF	PORTB,1
	CALL	GCKME2
	GOTO	DONGU
GERI
	BSF	PORTB,1
	MOVF	TDARBE, W
	MOVWF	SAYAC1
	BSF	PORTB,2
	CALL	GCKME2	
	COMF	TDARBE, W
	MOVWF	SAYAC1
	BCF	PORTB,2
	CALL	GCKME2
	GOTO	DONGU

HBRIDGE
	BTFSS	PORTB,7
	CALL	BRAKE
	
	BCF	INTCON,T0IF
	BSF	ADCON0,GO ;basla A/D cevirmeye 
WAIT 
	BTFSS	PIR1,ADIF ;islem bitene kadar bekle 
	GOTO	WAIT 
	BTFSC	ADRESH,7 
	BSF	SECIM, 0
	BTFSS	ADRESH,7
	BCF	SECIM,0
	RLF	ADRESH,W
	MOVWF	TDARBE
	
	MOVLW	H'FF'
	SUBWF	TDARBE, W
	BTFSC	STATUS, 2
	DECF	TDARBE, F
	
	MOVLW	H'00'
	SUBWF	TDARBE, W
	BTFSC	STATUS, 2
	INCF	TDARBE, F
	RETFIE
BRAKE
	BCF	PORTB,1
	BSF	PORTB,2
	MOVLW	D'125'
	MOVWF	SAYAC1
	CALL	GCKME2
	
	BSF	PORTB,1
	BCF	PORTB,2
	MOVLW	D'125'
	MOVWF	SAYAC1
	CALL	GCKME2
	DECFSZ	SAYAC3
	GOTO	BRAKE
	MOVLW	D'10'
	MOVWF	SAYAC3
	RETURN
GCKME2
D4
	MOVLW	D'10'
	MOVWF	SAYAC2
D5
	DECFSZ	SAYAC2
	GOTO	D5
	DECFSZ	SAYAC1
	GOTO	D4
	RETURN
	END
[/code]

sezgin05

Libertador ustaya (bir usta gibi mütavazi)  teşekkürler.Fakat ben Pbasic kodlarıyla bir yardım bekliyorum. Paylaşmak isteyen diğer DİĞER ustalara duyurulur...