Tanımladığımız Değişkenlerde BIT kontrolü yapılabilir mi? ve ...

Başlatan Sonoffe, 06 Nisan 2011, 18:45:27

Sonoffe

BTFSS   PORTB.3

gibi bi komut satırıyla register ve giriş-çıkış birimlerinin bitlerini kontrol edebiliyoruz.

Sorum şudur ki :

Bizim atadığımız bi değişkenin içerisindeki herhangi bir bit değerini BTFSS gibi bir komutla kontrol edebilir miyiz?

Örneğin

SAYI    EQU   H'09'

ile tanımladıgımız SAYI değişkeninde

BTFSS   SAYI,4

gibi bir komutla bit sınaması yapabilir miyiz ?


Birde 1saniyelik zaman gecikmesini sağlayabilecek bi arkadaş var mı?

Çok zaman önce iyi bir bilgim vardı bu konularda ama 5-6 yıl gectı.
Hatırlamakta ve algılamakta güçlük çekiyorum.
Yardımcı olan olursa çok sevinirim.
Sorunları aşmam daha kolay olur.

jackal183

bu şekilde tek bir kod ile olur mu bilmiyorum, şunu kullanabilirsin(alıntıdır);
;SORU:Bir baytlık bir sayı değişkenin yüzler onlar ve birler basamakları
;olarak ayır 
BASAMAKLARA_AYIRMA: 
BIRLER DATA 30h   ;BIRLER basamağının tutulacağı yer 
ONLAR  DATA 31h   ;ONLAR basamağının tutulacağı yer 
YUZLER DATA 32h   ;YUZLER basamağının tutulacağı yer 
MOV A,#k             ;Ayıklanıacak sayıyı A ya ata 
MOV B,#100           ;B ye 100 ata 
DIV AB               ;A yı B ye böl 
;Not:Bu işlemin özelliğinde sonuc   
;A'ya kalan Byte yazılır 
MOV YUZLER,A         ;Sonuc olarak gelen yüzler 
;basamağını yaz 
MOV A,B             ;Geri kalan onlar ve birler 
;basamaklarını A ya yaz 
MOV B,#10            ;B ye 10 ata 
DIV AB               ;A yı B ye böl 
MOV ONLAR,A          ;Onlar basamağını yaz 
MOV BIRLER,B         ;Birler basamağını yaz 
RET


aldığım link http://ayberkbagci.tripod.com/8051/bolum5.pdf

bu linkte işine yarar başka şeyler de bulabilirsin

XX_CİHAN_XX

Alıntı yapılan: Sonoffe - 06 Nisan 2011, 18:45:27
BTFSS   PORTB.3

gibi bi komut satırıyla register ve giriş-çıkış birimlerinin bitlerini kontrol edebiliyoruz.

Sorum şudur ki :

Bizim atadığımız bi değişkenin içerisindeki herhangi bir bit değerini BTFSS gibi bir komutla kontrol edebilir miyiz?

Örneğin

SAYI    EQU   H'09'

ile tanımladıgımız SAYI değişkeninde

BTFSS   SAYI,4

gibi bir komutla bit sınaması yapabilir miyiz ?


Birde 1saniyelik zaman gecikmesini sağlayabilecek bi arkadaş var mı?

Çok zaman önce iyi bir bilgim vardı bu konularda ama 5-6 yıl gectı.
Hatırlamakta ve algılamakta güçlük çekiyorum.
Yardımcı olan olursa çok sevinirim.
Sorunları aşmam daha kolay olur.

Evet aynen dediğiniz şekilde BTFSS, BTFSC komutları ile herhangi bir PORT un yada REGİSTERİN bitlerini kontrol edebilirsiniz.
Gecikme içinde aşağıdaki site sanırım işinizi oldukça kolaylaştıracaktır.
http://www.piclist.com/techref/piclist/codegen/delay.htm

; Delay = 1 seconds
; Clock frequency = 4 MHz

; Actual delay = 1 seconds = 1000000 cycles
; Error = 0 %

	cblock
	d1
	d2
	d3
	endc

			;999997 cycles
	movlw	0x08
	movwf	d1
	movlw	0x2F
	movwf	d2
	movlw	0x03
	movwf	d3
Delay_0
	decfsz	d1, f
	goto	$+2
	decfsz	d2, f
	goto	$+2
	decfsz	d3, f
	goto	Delay_0

			;3 cycles
	goto	$+1
	nop


CBLOCK kısmına takılmayın EQU yerine kullanılan pratik bir tanımlama şeklidir.

Kolay gelsin.
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.