![]() |
|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#2 |
Đệ tử 1 túi
Tham gia ngày: Aug 2009
Bài gửi: 18
: |
Chào bạn
Mình lâu rồi cũng không dùng CCS, mà cũng chẳng thạo về CCS lắm. Nhưng mình nghĩ trong chương trình của bạn có một số điểm nên sửa đổi một chút. Mình nghĩ do sự đơn giản của CCS, che dấu về phần cứng, nên có thể khiến người dùng ít quan tâm đến datasheet của chip. Dù là viết bằng trình dịch nào, thì bạn cũng nên làm theo các thủ tục như trong datasheet. +Với thạch anh 20mhz, bạn nên chọn hàm: setup_adc(ADC_CLOCK_DIV_32),(==>Tad = 1.6us) thay vì chọn là: setup_adc(ADC_CLOCK_INTERNAL). +Bạn chọn kênh RA0 làm kênh chuyển đổi ADC nhưng lại chưa thiết lập nó là input (nhưng có lẽ CCS đã làm hộ bạn việc này trong lệnh setup_adc_port rồi nhỉ?? thông cảm nếu nói sai). +Sau lệnh set_adc_channel(0), bạn nên delay thời gian cỡ 10us, để chờ cho tụ điện trong mạch lấy mẫu nạp đầy đến điện áp vào của pin adc. +Hàm khởi tạo lcd, bạn nên cho lên đầu chương trình chính. +Bạn khai báo adc là biến chứa giá trị chuyển đổi ADC, nhưng lại dùng hàm gửi ký tự lcd_putc (mình nghĩ có thể là chỗ này). Bạn viết lcd_putc_int(adc) thì có lẽ trình dịch báo lỗi vì nó gọi sai tên hàm. Bạn cũng chưa sét vị trị hiển thị giá trị này ở đâu trên LCD. +Mình nghĩ bạn thử bỏ hàm lcd_putc_int(adc), chỉ cần dùng hàm printf là được, bạn có thể tham khảo cách viết hàm này trong help của CCS. +Bạn cũng chưa kiểm soát việc khi nào thì chuyển đổi ADC hoàn tất, và cập nhật giá trị. Điều này mình cũng thấy hay gặp khi người dùng viết bằng CCS. Thân. |
![]() |
![]() |
|
|