PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > MPASM

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Tìm Kiếm Bài Trong Ngày Ðánh Dấu Ðã Ðọc Vi điều khiển

MPASM Lập trình bằng hợp ngữ là một việc làm vô cùng vất vả, tuy nhiên, để hiểu và làm việc với vi điều khiển, hợp ngữ trở thành một công cụ khá đắc lực ...

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 11-04-2013, 12:30 PM   #1
duc thang
Đệ tử 1 túi
 
Tham gia ngày: Sep 2007
Bài gửi: 11
:
16F887 giao tiếp với 18B20 (one_wire)

Chạy mô phỏng với Protues, kết quả nhận được toàn là FFH (Low) FFH (high).
Không biết sai chổ nào, các giúp đở .
Pic 16F887, thạch anh 4MHz. như vậy mỗi chu kỳ lệnh = 1us.
Khả năng sai là ở WRITE_TIME_SLOT và READ_TIME_SLOT; thay đổi tới lui cũng không được. Nhờ giúp đở.
;==============================
Code Main:
MAIN
call RESET_18B20
movlw 0CCH
movwf TEMP
call WRITE_18B20 ;SKIP ROM command
movlw 44H
movwf TEMP
call WRITE_18B20 ;temperature convert command
;====
call delay_750ms
;====
call RESET_18B20
movlw 0CCH
movwf TEMP
call WRITE_18B20 ;SKIP ROM command
movlw 0BEH
movwf TEMP
call WRITE_18B20 ;READ temperature command
call READ_18B20 ;READ temperature low byte
movfw TEMP
movwf PORTC
movwf TEMP1 ;keep in TEMP1
call READ_18B20 ;READ temperature high byte
movfw TEMP
movwf PORTD
movwf TEMP2 ;keep in TEMP2
goto MAIN

;==========
RESET_18B20
banksel TRISB
bcf Tris_DQ
banksel PORTB
bcf DQ
movlw 0A4H ;500us
movwf COUNT
decfsz COUNT,1
goto $-1
banksel TRISB
bsf Tris_DQ
banksel PORTB
movlw 0F4H
movwf COUNT
loop_reset_18B20
btfss DQ
goto OK_RESET_18B20
decfsz COUNT,1
goto loop_reset_18B20 ;otherwise continue reset
bsf DQ
nop
nop
goto RESET_18B20
OK_RESET_18B20
btfss DQ
goto $-1
banksel TRISA
bcf Tris_DQ
banksel PORTB
bsf DQ
return
;===========
WRITE_18B20
movlw 08H
movwf COUNT1
WRITE_18B20_1
rrf TEMP,1
call WRITE_TIME_SLOT
decfsz COUNT1,1 ;if finish 8 bit data
goto WRITE_18B20_1
movlw 23H ;106us
movwf COUNT
decfsz COUNT,1
goto $-1
return
;=============
WRITE_TIME_SLOT ;viet 1 bit
bcf DQ
nop
nop
bsf DQ ;3us
movlw 04H ;17us
movwf COUNT
decfsz COUNT,1
goto $-1
btfss STATUS,C ;judge the write data is 0 or 1
goto WRITE_END
bsf DQ
WRITE_END
movlw 13H ;58us
movwf COUNT
decfsz COUNT,1
goto $-1
bsf DQ
nop
return
;================
READ_18B20
movlw 08H
movwf COUNT1
READ_18B20_1
call READ_TIME_SLOT
decfsz COUNT1,1 ;if finish reading 8 bit
goto READ_18B20_1
movlw 1FH
movwf COUNT
decfsz COUNT,1
goto $-1
return
;==================
READ_TIME_SLOT
bcf DQ
nop
nop
bsf DQ ;3us
banksel TRISA
bsf Tris_DQ
banksel PORTA
movlw 04H ;16us
movwf COUNT ;
decfsz COUNT,1
goto $-1
bsf STATUS,C
btfss DQ
bcf STATUS,C
rrf TEMP,1
movlw 11H
movwf COUNT ;
decfsz COUNT,1
goto $-1 ;pull low 56us
banksel TRISA
bcf DQ
banksel PORTA
bsf DQ
nop
nop
return
;==================
delay_750ms
movlw 04H
movwf DQ_DELAY3
DELAY_750MS_3
movlw 0FFH
movwf DQ_DELAY2
DELAY_750MS_2
movlw 0FFH
movwf DQ_DELAY1
DELAY_750MS_1
decfsz DQ_DELAY1,1
goto DELAY_750MS_1
decfsz DQ_DELAY2,1
goto DELAY_750MS_2
decfsz DQ_DELAY3,1
goto DELAY_750MS_3
return
;=============

thay đổi nội dung bởi: duc thang, 11-04-2013 lúc 04:00 PM.
duc thang vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 

Ðiều Chỉnh
Xếp Bài

Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 06:55 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam