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