![]() |
|
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 | |
Trưởng lão PIC bang
|
Trích:
Nếu chọn xung clock thực thi lệnh là nguồn xung clock cho Timer 1, thì chúng ta cần đếm đủ 100000 chu kỳ máy (= 100000 us) để định khoảng thời gian 100 ms. Vì bộ đếm của Timer 1 chỉ có độ dài 16-bit, giá trị lớn nhất mà Timer 1 có thể đếm được mà không bị tràn là 65535. Do đó, chúng ta cần giảm tần số xung đi vào Timer 1 để có thể đạt được mục đích. Điều này có thể thực hiện bằng cách sử dụng bộ chia (tần) trước (prescaler). Bộ chia trước của Timer 1 trong PIC16F877A có thể chia 1, 2, 4, hay 8 tần số clock trước khi đưa vào Timer 1. Ở ví dụ này, tôi chọn hệ số chia là 8. Như vậy, số đếm mà Timer 1 sẽ đếm được ứng với 100 ms sẽ là 100000/8 = 12500. Vì Timer 1 chỉ tràn từ 0xFFFF về 0x0000, cần thiết lập trước giá trị của các thanh ghi TMR1H và TMR1L để sẽ tràn trong 12500 lần đếm, tức là giá trị TMR1 = 65536 - 12500 = 53026 = 0xCF2C. Xem thêm hình 6-2 trong datasheet của PIC16F877A để hiểu rõ hơn phần trình bày trên. Code để thiết lập Timer 1 như sau: Code:
T1CON = 0x30; // Prescale = 1:8, dung clock thuc thi lenh TMR1H = 0xCF // TMR1 = 0xCF2C TMR1L = 0x2C T1CON = T1CON | 0x01; // Bat Timer 1 Một nhắc nhở nhỏ: Bạn nên tránh nêu đích danh người được hỏi, và chú ý là những câu hỏi loại này không phải chỉ có một vài người có thể trả lời. Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 thay đổi nội dung bởi: namqn, 01-03-2009 lúc 09:43 PM. Lý do: tính nhầm |
|
![]() |
![]() |
#2 |
Nhập môn đệ tử
Tham gia ngày: Apr 2008
Bài gửi: 9
: |
Các anh trong dien đàn chỉ em phần này với. Em lập code cho chương trình led sáng dồn, nếu dùng xuất ra portB 0x01,0x02... thì dài quá nên em viết theo 1 kiểu khác. Không hiểu sai chỗ nào mà lại chạy sai, nhờ mấy anh chỉ giúp.
Code:
#include <16F877A.h> #fuses HS,NOWDT,NOPUT,NOPROTECT, NOWRT #use delay(clock=20000000) void main() { byte i,led; led=0x00; while(1) { for(i=0; i<=8; i++) { led=led+2^i; output_B(led); delay_ms(200); } } } thay đổi nội dung bởi: namqn, 01-03-2009 lúc 12:33 AM. |
![]() |
![]() |
#3 | |
Trưởng lão PIC bang
|
Trích:
Code:
#include <16F877A.h> #fuses HS,NOWDT,NOPUT,NOPROTECT, NOWRT #use delay(clock=20000000) void main() { byte i,led; led=0x00; while(1) { for(i=0; i<=8; i++) { led = (led << 1) + 1; output_B(led); delay_ms(200); } } }
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
|
![]() |
![]() |
#4 |
Nhập môn đệ tử
Tham gia ngày: Feb 2009
Bài gửi: 2
: |
chào các bác em mới bắt đầu học về vi điều khiển pic nên rất mong bác ntc sớm post bài lên kèm thêm giải thích câu lệnh thì hay quá
|
![]() |
![]() |
#5 |
Nhập môn đệ tử
Tham gia ngày: Feb 2009
Bài gửi: 2
: |
ở đây có bác nào biết viết lập trình cho pic bằng ngôn ngữ ccs không?bảo em với có ví dụ minh họa thì tốt quá
|
![]() |
![]() |
#6 |
Đệ tử 2 túi
|
Bạn vào luồng này :
http://www.picvietnam.com/forum/show...=2113#post2113. Link download trình biên dịch CCS C ở đây: http://www.tailieuvietnam.net/downlo...CCSC_3.249.rar Hiện nay đã có phiên bản mới hơn 4.0 rùi đó. mình cũng mới học về nó thôi , chủ yếu là học trong phần Help của nó đó , có ví dụ rõ ràng lắm. |
![]() |
![]() |
#7 |
Nhập môn đệ tử
Tham gia ngày: May 2008
Bài gửi: 7
: |
chào các bạn, mình đang làm đề tài về đo khoảng cách 5-10m kết hợp với vi xử lý, mình đang băn khoăn không biết trọn con cảm biến nào cho phù hợp, mong được sự góp ý từ các bạn, mình xin cảm ơn trước
|
![]() |
![]() |
#8 |
Đệ tử 1 túi
Tham gia ngày: Jun 2005
Bài gửi: 13
: |
Điều khiển tốc độ động cơ từ máy tính?
Tôi đã làm được mạch điều khiển tốc độ động cơ DC, sử dụng pwm của 16f877a, tốc độ được điều khiển bằng biến trở thay đổi điện áp đưa vào chân RA1 (dùng chức năng ADC). Bây tôi giờ muốn khi nhập giá trị tốc độ trên máy tính thì tốc độ động cơ sẽ thay đổi theo, vậy phần mạch và phần chương trình phải cần có những gì, mong các bạn giúp đỡ.
(Trình độ diễn đạt hơi kém, các bạn thông cảm nhé) |
![]() |
![]() |
#9 |
Đệ tử 6 túi
Tham gia ngày: Nov 2008
Nơi Cư Ngụ: Di Linh
Bài gửi: 131
: |
anh em cho mình hỏi khi sử dụng Port B để xuất dữ liệu thì có chú ý gì đặc biệt
tới chân RB3 ko? hay chỉ cần thiết lập nó thành chân Output là đủ.( ASM) thay đổi nội dung bởi: phandinh, 06-03-2009 lúc 04:18 PM. |
![]() |
![]() |
#10 | |
Đệ tử 6 túi
Tham gia ngày: Nov 2008
Nơi Cư Ngụ: Di Linh
Bài gửi: 131
: |
Trích:
|
|
![]() |
![]() |
#11 |
Nhập môn đệ tử
Tham gia ngày: Mar 2009
Bài gửi: 1
: |
Thắc mắc về PIC16f877 và PIC16F887
Mình mới tìm đc một mạch nguyên lý điều khiển 3 động cơ bước dùng PIC16F877 nhưng mình có nhờ một người chuyên điện tử thiết kế lại thì anh đó lại dùng PIC16F887. Mình không biết 2 con đó có giống nhau không. Và xin được hỏi mọi người, trong 2 con đó thì con nào mới hơn, nhiều chức năng hơn. Cảm ơn
|
![]() |
![]() |
#12 |
Đệ tử 6 túi
Tham gia ngày: Nov 2008
Nơi Cư Ngụ: Di Linh
Bài gửi: 131
: |
bạn search trên google là ra thôi. như mình thấy thì 2 con chức năng như nhau.
Thường thì xài F877 không à |
![]() |
![]() |
#13 |
Nhập môn đệ tử
Tham gia ngày: Apr 2008
Bài gửi: 5
: |
Mình có vấn đề muốn hỏi. khi mình viết xong chương trình trong MPLAB và build nó thì có 1 lỗi liên quan tới _config là "Error[126] E:\DOCUMENTS\HOC KY 8\DA THUC NGHIEM\TEST.ASM 3 : Argument out of range (not a valid config register address)"
Một vấn đề nữa là.Cũng file.asm đó trước đây mình build thì SUCCEEDED. Mà giờ build lại thì bị lỗi trên.Mình thử bỏ phần khai báo config thì build được mà file.hex đó thì lại chạy mô phỏng không được.Mong được chỉ dẫn! |
![]() |
![]() |
#14 |
Đệ tử 6 túi
Tham gia ngày: Nov 2008
Nơi Cư Ngụ: Di Linh
Bài gửi: 131
: |
bạn post bài lên đi
|
![]() |
![]() |
#15 |
Nhập môn đệ tử
Tham gia ngày: Apr 2008
Bài gửi: 5
: |
cảm ơn! Mình đã chỉnh lại được rồi.Lý do là trong MPLAB mình chưa select device đúng loại PIC.
|
![]() |
![]() |
|
|
![]() |
||||
Ðề 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 |
Lập nhóm PIC16F877A | nhh | Cơ bản về vi điều khiển và PIC | 285 | 08-03-2017 11:08 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 |
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 |