![]() |
|
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 |
|
![]() |
#1 | |
Đệ tử 9 túi
|
Trích:
__________________
Ngày mai bắt đầu từ ngày hôm nay Bạn có thắc mắc, bạn cần sự hỗ trợ của các thành viên. Hãy đọc luồng này: http://www.picvietnam.com/forum//showthread.php?t=1263 |
|
![]() |
![]() |
![]() |
#2 |
Đệ tử 9 túi
|
Về việc bắt đầu viết chương trình bằng ngôn ngữ gì ASM,CCS C,HT-PIC,...,theo mình tốt hơn vẫn nên học cơ bản bằng ASM trước sau đó đào sâu thì càng tốt không thì nhảy qua các ngôn ngữ khác cũng dễ chịu rồi !
Bạn nên đọc luồng này để tham khảo cách học của mọi người : http://www.picvietnam.com/forum//showthread.php?t=91 Chúc bạn mau chóng tìm cho mình cách học hiệu quả nhất !
__________________
Ngày mai bắt đầu từ ngày hôm nay Bạn có thắc mắc, bạn cần sự hỗ trợ của các thành viên. Hãy đọc luồng này: http://www.picvietnam.com/forum//showthread.php?t=1263 |
![]() |
![]() |
![]() |
#3 |
Đệ tử 8 túi
|
Dùng bao nhiêu ngắt cũng được. Cái quan trọng là ban phải phát hiện ra ngắt nào xảy ra để xử lí.
Như vậy, khi bắt đầu chương trình ngắt, bạn phải có đoạn chương trình kiểm tra xem ngắt nào xảy ra bằng cách kiểm tra các cờ ngắt. Ngắt nào xảy ra thì cờ ngắt tương ứng với ngắt đó sẽ nhảy lên mức logic 1. Kiểm tra xong thì ra lệnh cho vi điều khiển nhảy đến đoạn chương trình xử lí tương ứng. |
![]() |
![]() |
![]() |
#4 |
Đệ tử 8 túi
|
PIC16F877A có tất cả 3 Timer. Mìhn không nhớ thật sự chi tiết, nhưng đại khái nó như vầy:
Timer 0 và Timer 2 là bộ đếm 8 bit. Timer 0 có bộ chia tần số (prescaler) dùng chung với Watchdog Timer. Nghĩa là khi bộ chia tần số này được sử dụng bởi WDT, thì cái Timer 0 không được quyền xài nó và ngược lại. Timer 2 có cả 2 bộ chia tần số phía trước và phía sau (prescaler và postscaler) cho phép ta ấn định tỉ số chia linh hoạt hơn để tạo ra khoảng thời gian thích hợp cho ứng dụng. Timer 0 và Timer 2 tuy là bộ đếm 8 bit, nhưng tỉ số chia của các bộ chia lớn hơn Timer 1. Như vậy nó cũng cho phép tạo ra các khoảng thời gian delay với độ trễ thích hợp với các ứng dụng trong thực tế. Timer 1 là bộ đếm 16 bit, được hỗ trợ bởi bộ chia tần số prescaler. Tuy nhiên tỉ số chia này nhỏ (1:1 đến 1:16). Mỗi Timer có cấu tạo khác nhau, điều đó cũng có nghĩa mỗi Timer sẽ thích hợp hơn với một tình huống nào đó trong thực tế, và tùy theo cái tình huống mà lựa chọn Timer thích hợp. Sơ lược như vậy, bạn tham khảo datasheet để biết thêm chi tiết, mình chỉ nhớ mang máng như vậy thôi, không biết có chỗ nào nhớ lộn không nữa. Về việc tham khảo cách khởi tạo và sử dụng Timer, bạn tham khảo thêm các hướng dẫn trong tài liệu "mid-range PIC mcu reference manual" trong micro chip. Trong đó hướng dẫn rất chi tiết, bạn chỉ việc dựa trên cái sườn bài có sẵn trong cái tài liệu đó và thay đổi các thông số cài đặt cho thích hợp là ok. ![]() |
![]() |
![]() |
![]() |
#5 |
Đệ tử 8 túi
|
Chắc bữa nào phải sửa lại cái Timer cho đàng hoàng rồi post lên cho anh em quá. Hic, dạo này bị bác F chơi, quăng việc liên tục, mệt gần chết, cũng hết thời gian rảnh luôn.
Về cái Timer của nhh. Bạn khắc phục như thế này thử xem: cái bảng dữ liệu, bạn chuyển lên đặt ở phía trên, sao cho các lệnh của phần table nó nằm trong vùng code 256 byte đầu của bộ nhớ chương trình, không đặt nó ở cuối chương trình nữa. Nhiều khi do chương trình phía trên bạn viết dài, nên cái table bị rơi ra khỏi vùng 256 word đầu tiên của bộ nhớ chương trình. Chắc ăn là chuyển hẳn nó lên phía trên chương trình start luôn, tức là viết table xong thì tới cái label start. Có phải cái chương trình của bạn khi viết xong, bạn không thể kiểm soát được là nó sẽ chạy theo kiểu nào đúng không. ![]() nhh hiểu ý mình không. Sửa lại rồi thông báo tình hình cho anh em như thế nào nhé! ![]() thay đổi nội dung bởi: ntc, 27-03-2006 lúc 11:19 PM. |
![]() |
![]() |
![]() |
#6 |
Nhập môn đệ tử
Tham gia ngày: Oct 2005
Bài gửi: 5
: |
em có 1 bài toán bên mục của bác Chính,nhờ mọi người chỉ cho
![]() |
![]() |
![]() |
![]() |
#7 |
Đệ tử 8 túi
|
Timer 1 của PIC16F877A có chế độ cho phép bật tắt Timer.
![]() |
![]() |
![]() |
![]() |
#8 | |
Đệ tử 9 túi
|
Trích:
Code:
BSF T1CON,TMR1ON ;bat Timer1 BSF T2CON,TMR2ON ;bat Timer2
__________________
Ngày mai bắt đầu từ ngày hôm nay Bạn có thắc mắc, bạn cần sự hỗ trợ của các thành viên. Hãy đọc luồng này: http://www.picvietnam.com/forum//showthread.php?t=1263 |
|
![]() |
![]() |
![]() |
#9 |
Đệ tử 2 túi
Tham gia ngày: Jan 2006
Bài gửi: 36
: |
Cũng ko có gì mới cả...
Các bác mau mau post tiếp đi chứ ! Đợi các bác lâu quá mất cả hứng ...!
__________________
************************************************** ** The only wrong thing would be to deny what your heart truly feels! ************************************************** ** |
![]() |
![]() |
![]() |
#10 |
Đệ tử 4 túi
Tham gia ngày: Feb 2006
Bài gửi: 66
: |
Timer0 ở PIC6F877A vẫn là free counter, theo mình thì cấp điện vào là nó đã chạy tự do rồi, vấn đề là bạn dùng nó lúc nào thôi, về prescaler thì mình nghĩ cũng như 16F84A, nghĩa là khi đã dùng nó cho WDT thì timer0 sẽ dùng với tỉ lệ chia là 1:1
|
![]() |
![]() |
![]() |
#11 |
Đệ tử 9 túi
|
Tại sao lại chỉ dùng với tỉ lệ chia 1:1
Còn những tỉ lệ khác không dùng được sao, bạn xem kĩ datasheet phần timer0, nó chia đến tận tỉ lệ 1:128 lận !
__________________
Ngày mai bắt đầu từ ngày hôm nay Bạn có thắc mắc, bạn cần sự hỗ trợ của các thành viên. Hãy đọc luồng này: http://www.picvietnam.com/forum//showthread.php?t=1263 |
![]() |
![]() |
![]() |
#12 | |
Đệ tử 9 túi
|
Trích:
Khi PSA = 1 thì nó dùng cho WDT PSA = 0 thì prescaler dùng cho timer0. Và dĩ nhiên khi PSA = 1 thì timer0 chỉ có tỉ lệ chia là 1:1 tức là sẽ k bị chia trước tần số. Chúc các bạn thành công. |
|
![]() |
![]() |
![]() |
#13 |
Đệ tử 2 túi
Tham gia ngày: Feb 2006
Bài gửi: 31
: |
các bác xem giúp em cái
hơ hơ.... sao không up file lên được nhỉ? bác fall ơi, xem giúp em cái !.Em đã tải file lên rồi, tại sao không thấy file đâu? em định tải file lên để nhờ các bác chỉ giáo tí. thay đổi nội dung bởi: falleaf, 19-06-2006 lúc 12:39 PM. |
![]() |
![]() |
![]() |
#14 |
Nhập môn đệ tử
Tham gia ngày: Jun 2006
Bài gửi: 9
: |
Nhờ các bác cho em hỏi về cách định địa chỉ gián tiếp, thanh ghi SFR, INDF và những vấn đề liên quan
|
![]() |
![]() |
![]() |
#15 | |
PIC Bang chủ
|
Trích:
__________________
Công ty TNHH Thương mại và Giao nhận R&P store.hn@rpc.vn - store.hcm@rpc.vn Học PIC như thế nào? |
|
![]() |
![]() |
![]() |
Ðiều Chỉnh | |
Xếp Bài | |
|
|
![]() |
||||
Ðề tài | Người gửi | Chuyên mục | Trả lời | Bài mới |
TUT về USART trong PIC16F877A | mafd_47a | MPASM | 16 | 19-02-2025 05:32 AM |
TUT ve I2C ( pic16f877a ) | mafd_47a | MPASM | 28 | 28-01-2025 10:45 PM |
Bộ so sánh và PWM cho PIC16F877A | anhquangngai | Cơ bản về vi điều khiển và PIC | 24 | 08-09-2012 09:00 AM |
Pic16f877a TỪ DỄ TỚi KhÓ | ntc | Cơ bản về vi điều khiển và PIC | 373 | 23-05-2009 10:24 PM |
CCS C for PIC16F877A | nhh | Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) | 405 | 24-04-2008 12:00 PM |