16F684 RF xa decoder cần somehelp

T

tohbas

Guest
i sử dụng sẽ được 16F684 RF xa decoder
bình thường, có nhiều tiếng ồn từ ngoài ra mô-đun RF decoder

i cần phải phát hiện 28 bit với mã 250-300 uSec pulse rộng

sau khi tôi phát hiện tôi cần gửi chuyển tiếp đến một

i 684 này sử dụng như một pulse fillter ...

vấn đề của tôi,
1.16F684 không thể dectect tín hiệu trong lần đầu tiên tôi cần phải bấm từ xa hoặc cây hai lần

2.i nếu i dont sử dụng "Goto 0x0000" 16F684 của tôi luôn luôn "Hank"

3.cho "Goto thử nghiệm" i nghĩ rằng cần gửi pulse ra nhưng nó mãi mãi isnt!!
gửi nó ra chỉ một thời gian và gửi các chỉ nếu có một thay đổi gián đoạn

tại sao?và cuối cùng là ...i thiết lập của nó để được oscillator 8 Mhz của nó có nghĩa là nó cho 1 istruction cần

1 / (8MHz / 4) = 0,5 uSec, nhưng tôi cố gắng để làm nóbsf PORTC, 2
bcf PORTC, 2
bsf PORTC, 2
bcf PORTC, 2

i got a pulse pulse với chiều rộng 0.16uSec ...những gì sai?i thử 3 của CPU, nhưng cùng một kết quảdanh sách p = 16F684
# bao gồm <p16F684.inc>__CONFIG 0x34c4FSR_temp equ 0xa0

Số lượng equ 0xba
ii equ 0xbb
bit_bufferP equ 0xbc
bit_buffer equ 0xbd
timeH equ 0xbe
timeL equ 0xbf
status_temp equ 0x7e
w_temp equ 0x7fbank0 vĩ mô
movlw 0x1f
TÌNH TRẠNG andwf, F
endm
bank1 vĩ mô
bcf STATUS, IRP
bcf STATUS, RP1
bsf STATUS, RP0
endmorg 0x0000
clrf INTCON
clrf PCLATH; đảm bảo trang bit được xoá
Goto bắt đầuorg 0x0004
Goto interrupts_vector

bắt đầu

;================================================= =============
; == Subrutine ban đầu của tất cả các cảng và somefunction ===========
;================================================= =============
; ban đầu 16F684
banksel ANSEL
clrf ANSEL; tất cả các tín hiệu tương pins là kỹ thuật số
banksel CMCON0
movlw 0x07
movwf CMCON0; tắt sánh
banksel WPUA
clrf WPUA; vô hiệu hoá kéo lên
banksel OPTION_REG
bcf OPTION_REG, 7; vô hiệu hoá kéo lên trên porta

banksel TRISA
movlw b'00111111 '; RA5 như là đầu vào RA0 i / p sánh
movwf TRISA

; setup_interrupt_on_change trên TRISA porta kiểm tra về thiết lập CẢNG
bsf INTCON, RAIE; gián đoạn về thay đổi
banksel IOCA
movlw 0x01
movwf IOCA; RA5 gián đoạn trên cho phép thay đổi

; thiết lập cổng C
banksel TRISC; analog I / p RA2 = C2OUT RC0 = C2IN , RC4 = C1OUT RA0 = C1IN
movlw b'00000000 '; RC5 là một đầu vào để vô hiệu hoá decoder
movwf TRISC
banksel PORTC
movlw 0xff
movwf PORTC

; setup_timer1
banksel CMCON1; cấu hình như T1G sánh o / p
clrf CMCON1

banksel T1CON
movlw 0x04
movwf T1CON; 1:1 prescale

banksel PIE1
bcf PIE1, TMR1IE

; thiết lập nội bộ oscillator
banksel OSCTUNE
movlw 0x0F
movwf OSCTUNE
banksel OSCCON
movlw 0x75
movwf OSCCON; sử dụng đồng hồ 8 Mhz

bsf INTCON, 7
bsf INTCON, 6
Goto chính
;///////////////////////////////////////////////// /////////////chính

movlw 0x27
movwf FSR; đặt địa chỉ
banksel cập
clrf cập
banksel T1CON
bsf T1CON, TMR1ON

wait_signal
movf FSR, F
skpz
Goto wait_signal;================================================= ==========
;=========== Bây giờ thời gian chuyển tiếp để gửi dữ liệu ===================
;================================================= ===========
kiểm tra
;///////////////////////////////////////////////// //////////
bcf INTCON, RAIE; gián đoạn trên vô hiệu hóa thay đổi
bcf INTCON, GIE; vô hiệu hoá tất cả các interrupts
bcf INTCON, PEIE
banksel T1CON
bcf T1CON, TMR1ON; ngừng timer1
;///////////////////////////////////////////////// ////////

banksel TMR1H
clrf TMR1H
clrf TMR1L
gọi sự chậm trễ

;================================================= =====
; ======= Thời gian ra để gửi dữ liệu =======================
;================================================= =======
send_data
movlw 0x27
movwf FSR; dữ liệu

send_out
movf INDF, W
banksel PORTC
movwf PORTC

incf FSR, F; chỉ mục timeLcall check_RAM_address movf INDF, W
sublw 0xff; 0xff - W => W
banksel TMR1L
movwf TMR1Lincf FSR, F; timeH chỉ mục địa chỉ
Gọi check_RAM_address
movf INDF, W
sublw 0xff; 0xff - W => W
banksel TMR1H
movwf TMR1H

gọi sự chậm trễ
incf FSR, F; dữ liệu chỉ mục kế tiếp
Gọi check_RAM_addressdecf cập, F
skpz
Goto send_out

(!!!!Goto thử nghiệm!!!)Goto 0x0000
;================================================= ==========;================================================= ===========
;===================== sự chậm trễ =========================== ======
;======= TMR1H và TMR1L cần phải được gọi trước khi setted ====
;======= Này subroutine =======================
;================================================= ===========
trì hoãn

banksel PIE1
bsf PIE1, TMR1IE; cho phép timer1 gián đoạn

bsf INTCON, PEIE
bsf INTCON, GIE
banksel T1CON
bsf T1CON, TMR1ON; bắt đầu timer1

banksel ii
movlw 0xff
movwf ii
wait_delay; chờ timer1 Int
banksel ii; untilll ii == 0x00 clrf của timer1_INT
movf ii, F
skpz
Goto wait_delay; chờ timer1 Int

banksel T1CON
bcf T1CON, TMR1ON; ngừng timer1
banksel PIE1
bcf PIE1, TMR1IE; timer1 vô hiệu hóa gián đoạn
bcf INTCON, GIE
bcf INTCON, PEIE
trở về

;================================================= ===========
;===================== Kết thúc sự chậm trễ ========================== =======
;================================================= ===========;================================================= ===================
;========== Interrupts thường xuyên, dịch vụ detector ===================
;========== Dectect nguyên nhân gây ra gián đoạn ==============
;================================================= =================
interrupts_vector

movwf w_temp
TÌNH TRẠNG swapf, W
clrf STATUS
movwf status_temp; giữ dữ liệu về tình trạng reg.

btfsc INTCON, RAIF; interrupts là IMPORTANTE
Gọi RA_INT

banksel PIR1
btfsc PIR1, TMR1IF; interrupts là IMPORTANTE
Gọi TMR1_INT

bcf STATUS, Z; cho skpz chính trong vòng lặp

swapf status_temp, W
movwf STATUS; trở lại dữ liệu trên w registor
swapf w_temp, F
swapf w_temp, W

bsf INTCON, PEIE

retfie
;///////////////////////////////////////////////// ////////////TMR1_INT

banksel PIR1
bcf PIR1, TMR1IF
banksel ii
clrf ii
trở về;================================================= =================
; ===== Gián đoạn về thay đổi của cảng RA5 được sử dụng để được nhập vào ========
;================================================= =================
RA_INT
banksel porta
movf porta, F; cancle mismath tình trạng
bcf INTCON, RAIF; rõ ràng cờ gián đoạn gây ra bởi RA5

; giữ trước tình trạng của RA5
banksel bit_bufferP
movf bit_bufferP, W
banksel bit_buffer
movwf bit_buffer

banksel porta
movf porta, W; cancle mismath tình trạng

banksel bit_bufferP
movwf bit_bufferP
comf bit_bufferP, F; inversion

; chi giờ
banksel TMR1H
movf TMR1H, W
banksel timeH
movwf timeH

banksel TMR1L
movf TMR1L, W
banksel timeL
movwf timeL

; rõ ràng giờ
banksel TMR1H
clrf TMR1H
clrf TMR1L

; thời gian kiểm tra thấp hơn giới hạn
movlw 0x05; 0x04 163,84 hệ với chúng tôi 0x05 = 254 uSec
banksel timeH
bsf STATUS, C
subwf timeH, W
TÌNH TRẠNG btfss, C
Goto tiếng ồn, thời gian ít hơn 163,84 hệ với chúng tôi đó là tiếng ồn
; kiểm tra cao hơn nhiều so với giới hạn thời gian
; TimeH_more_than_163uS
movlw 0x09; 0x1500 = 900uS 0x0fff = 3840 * 0,16 = 614 hệ với chúng tôi
banksel timeH
bsf STATUS, C
subwf timeH, W
TÌNH TRẠNG btfss, C
Goto keep_bit1; thời gian nhiều hơn hoặc bằng 600 hệ với chúng tôi; thời gian kiểm tra thấp hơn giới hạn
movlw 0x0b; 0x04 163,84 hệ với chúng tôi 0x05 = 254 uSec
banksel timeH
bsf STATUS, C
subwf timeH, W
TÌNH TRẠNG btfss, C
Goto tiếng ồn, thời gian ít hơn giới hạn
timeH_more_than_163uS
movlw 0x12; 0x1500 = 900uS 0x0fff = 3840 * 0,16 = 614 hệ với chúng tôi
banksel timeH
bsf STATUS, C
subwf timeH, W
TÌNH TRẠNG btfss, C
Goto keep_bit2; thời gian nhiều hơn hoặc bằng 600 hệ với chúng tôi
Goto tiếng ồnkeep_bit2; đếm 2 bit,
banksel cập
incf cập, Fkeep_bit1; cập 1 chút
banksel cập
incf cập, F

banksel bit_buffer
movf bit_buffer, W
movwf INDF; giữ dữ liệu

incf FSR, F
Gọi check_RAM_address

banksel timeL
movf timeL, W
movwf INDF; giữ timeL

incf FSR, F
Gọi check_RAM_address
banksel timeH
movf timeH, W
movwf INDF; giữ timeH

incf FSR, F; cho các dữ liệu tiếp theo
Gọi check_RAM_address
trở về

; Ram thay đổi địa chỉ
check_RAM_address
bsf STATUS, C
movlw 0xba
subwf FSR, W
btfsc STATUS, C
Goto 0x0000
movlw 0x7d
subwf FSR, W
skpz
trở về
movlw 0xa0
movwf FSR
trở về

tiếng ồn

movlw 0x18; = dữ liệu 26-27-bit
banksel cập
bsf STATUS, C
subwf cập, W
TÌNH TRẠNG btfss, C
Goto re_count
; Có dữ liệu
movlw 0x00
movwf FSR
trở về

re_count

Goto 0x0000
;================================================= ============
cuối

 

Welcome to EDABoard.com

Sponsor

Back
Top