View Single Post
Old 16-12-2006, 09:43 AM   #2
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
Vấn đề viết code cho ADC thì hoàn toàn không có vấn đề gì là khó khăn.

Lưu ý phần code này, được trích trong một chương trình đã chạy ngon, nhưng vì trích dẫn ra, có thể nó không chạy được, hoặc có trục trặc gì, F không chịu trách nhiệm về việc sử dụng nó.

Ngoài ra, F cũng không nói ứng dụng nó là ứng dụng gì, vì lý do nó được dùng cho một sản phẩm thương mại, chỉ trích phần ADC ra xem chơi thôi. Các bạn chủ yếu nắm ý tưởng một trong những cách viết ADC, còn lại, không cần quan tâm đến nội dung code. Đã 2 năm rưỡi nay F không đụng tới code của PIC, vì vậy, nếu có vấn đề gì, các bạn feedback lại để sửa nhé.

Đoạn này khởi tạo các biến để sử dụng ADC.

Code:
		ORG	0x020
;==============================================
ADCDATA		RES	1
REGAD1		RES	1
REGAD2		RES	1
REGAD3		RES	1
REGAD4		RES	1
REGAD5		RES	1
Code:
;----------------------
;Khoi tao cac ngo vao
;----------------------

ADC		MOVLW	B'00000000'				; Tat ca portA la ngo vao ADC
		MOVWF	ADCON1					; chon Vref = VDD
Code:
;=============================
; Doc ADC
; Khong dung ngat de doc ADC
; Su dung thanh ghi GO/DONE
;=============================

AD1		MOVLW	B'00000001'
		CALL	ADSTART
		MOVWF	REGAD1

AD2		MOVLW	B'00010001'
		CALL	ADSTART
		MOVWF	REGAD2

AD3		MOVLW	B'00100001'
		CALL	ADSTART
		MOVWF	REGAD3

AD4		MOVLW	B'00011001'
		CALL	ADSTART
		MOVWF	REGAD4

AD5		MOVLW	B'00100001'
		CALL	ADSTART
		MOVWF	REGAD5
Đoạn trên gọi ADSTART, thì đây là chương trình ADSTART
Code:
ADSTART		MOVWF	ADCON0					
DELAY12		DECFSZ	DLY12,	F				; 2 x DLY12 x 0.2 us
		GOTO	DELAY12					; 2 x 30 x 0.2 = 12us
		BSF	ADCON0,	2
GODONE		BTFSC	ADCON0,	2
		GOTO	GODONE					; Cho den khi convert xong
		MOVF	ADRES,	W

		RETURN
Đại loại là đọc ADC 8 bit đơn giản như vậy thôi, nhưng bây giờ thì chúng ta tạm thời chưa phần tích kỹ phần thuật toán, chỉ là mào đầu thôi.

Cái F muốn nói ở đây, đó là phần thiết kế điện tử cho ADC, hãy phân tích một thiết kế điện tử ADC để thiết kế ngõ vào cho ADC, giả sử nếu chúng ta cần dùng một mạch lọc, sẽ thiết kế thế nào? Vd: lọc thông thấp chẳng hạn (với các cảm biến nhiệt).

Khi thiết kế xong, thì yêu cầu đi mạch ADC như thế nào?

Chứ nếu không các bạn đọc 8bit thì chỉ còn tầm 6,7 bit, đọc 12 bit, có khi chỉ còn đúng ở mức 8bit... Lưu ý, bộ ADC của PIC, lên tới 10bit là cũng mệt mỏi lắm rồi.

Mời các bạn tiếp tục thảo luận.

Chúc vui
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn