PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

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

Ðề tài đã khoá
 
Ðiều Chỉnh Xếp Bài
Old 21-02-2006, 07:24 AM   #1
ngkdong
Đệ tử 1 túi
 
Tham gia ngày: Aug 2005
Bài gửi: 14
:
Ban NTC giup minh ti,
Minh thu viet giao dien P6F876A voi PC trong CSS, sau khi PIC khoi dong no se goi len PC 1 dong: Hello!
Tuy nhien khi noi may tinh, PIC goi lien tuc nhieu dong: Hello! va co nhieu dong ky tu bi loi, ma khong chay tiep phan sau.
Xin nho ban huong dan dum.
ngkdong vẫn chưa có mặt trong diễn đàn  
Old 23-02-2006, 12:05 PM   #2
ntc
Đệ tử 8 túi
 
ntc's Avatar
 
Tham gia ngày: Oct 2005
Nơi Cư Ngụ: HCM city
Bài gửi: 264
:
Send a message via Yahoo to ntc
Bạn phải mô tả kĩ hơn ứng dụng của mình mới được. Kết nối phần cứng như thế nào, chương trình viết trên PIC và trên PC ra sao thì mới biết đường mà giúp chứ. CSS mình chưa xài, nhưng nếu mô tả kĩ hơn thì rất nhiều thành viên có thể giúp cho bạn.
__________________

ntc vẫn chưa có mặt trong diễn đàn  
Old 25-02-2006, 04:39 PM   #3
ngkdong
Đệ tử 1 túi
 
Tham gia ngày: Aug 2005
Bài gửi: 14
:
Cac ban giai thich dum, minh cung moi hoc PIC thoi, minh viet mot doan de thu giao dien PIC16F876A nhu sau:
#include <16F876A.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=24000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
void main() {

printf("\r\n\Hello! \r\n");

do {
delay_ms(2000);
printf("\r\n\Running...\r\n");
} while (TRUE);
Chi vay thoi de thu giao dien voi PC, nhung khi minh nap PIC roi, dung tool Serial Port Monitor trong CCS C de giam sat thu, thi thay PIC luon goi ve rat nhieu dong Hello!, ma khong thay co dong Running...
Dung ra thi no chi goi lan luot 2 dong tren thoi va khong lam gi ca, nhung o day no cu goi lien tuc dong Hello!, doi khi bi loi ky tu nua chu.
Mong cac ban chi giao giup nhe.
}
ngkdong vẫn chưa có mặt trong diễn đàn  
Old 27-02-2006, 02:33 PM   #4
hpecom
Đệ tử 2 túi
 
Tham gia ngày: Nov 2005
Bài gửi: 45
:
Arrow

Trích:
Nguyên văn bởi ngkdong
void main()
{ printf("\r\n\Hello! \r\n");
do
{ delay_ms(2000);
printf("\r\n\Running...\r\n");
} while (TRUE);
}
Chương trình của bạn, nếu chạy đúng thì nó sẽ
xuất ra dòng Hello,
và tiếp theo cứ mỗi 2s nó lại xuất ra dòng Running...
dòng Running... trước sẽ cách dòng Running... sau nó hai dòng trắng.
và vòng lặp là vô tận.
hpecom vẫn chưa có mặt trong diễn đàn  
Old 24-02-2006, 02:57 PM   #5
LEO-XBS
Đệ tử 1 túi
 
LEO-XBS's Avatar
 
Tham gia ngày: Oct 2005
Bài gửi: 21
:
bác nào có thể giải thích cho em đoạn khai báo này với:
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _HS_OSC & _WRT_OFF & _CPD_OFF &_LVP_OFF
__________________
=============================
________ Leo XBS _________
E-mail:leo_xbs1408@yahoo.com
"Đi một ngày đàng học một sàng khôn"
LEO-XBS vẫn chưa có mặt trong diễn đàn  
Old 25-02-2006, 04:14 PM   #6
ntc
Đệ tử 8 túi
 
ntc's Avatar
 
Tham gia ngày: Oct 2005
Nơi Cư Ngụ: HCM city
Bài gửi: 264
:
Send a message via Yahoo to ntc
Talking

Đây là đoạn code dùng để khai báo các "Configuration bits" của vi điều khiển PIC. Nó bao gồm:
Khai báo chế độ bảo vệ code CP (code Protection). ON: bật chế độ. OFF: tắt chế độ.
Khai báo cho phép sử dụng Watchdog Timer WDT.
Khai báo các chế độ reset BODEN, PWRTE: đại khái là trước khi vi điều khiển đi vào hoạt động một cách ổn định, nó phải trải qua một khoảng thời gian quá độ để ổn định nguồn, ổn định xung clock,... có thể tạm gọi là các giai đoạn reset. Các giai đoạn này cho phép ta điều khiển bằng các bit trên.
Khai báo loại nguồn xung clock OSC : HS, XT hay RC. Tùy theo loại nguồn xung clock mà khai báo thích hợp.
Khai báo chế độ nạp chương trình LVP (Low Voltage Programming):chế độ nạp này sử dụng chân RB4/PGM đối với PIC16F877A. Các PIC khác cũng được hỗ trợ chế độ nạp này. Vấn đề này đã được đề cập trong cái TUT01. Bạn xem lại nhé.
Chức năng cụ thể của các khai báo này bạn xem lại cái datasheet ( phần "CONFIGURATION BITS") để biết thêm. Mình không nhớ hết được.
Mỗi PIC sẽ được hỗ trợ một số chế độ chứ không phải chế độ nào cũng được hỗ trợ, tùy theo con PIC bạn sử dụng mà khai báo cho thích hợp. Ví dụ, bạn sẽ thấy là khai báo cho con PIC16F84A sẽ ít hơn khai báo cho con PIC16F877A.
Mọi thông tin cho phần khai báo này đều có trong datasheet. Chỉ cần đọc và hiểu được thì mình sẽ sử dụng được.
Chúc vui! (mượn đỡ câu này của anh Hiệp một tí nghe)
__________________

ntc vẫn chưa có mặt trong diễn đàn  
Old 27-02-2006, 02:14 PM   #7
totite
Nhập môn đệ tử
 
Tham gia ngày: Feb 2006
Bài gửi: 5
:
Các bác vui lòng chỉ giúp em cách nào truy xuất vào vùng data trong bộ nhớ chương trình sau khi được định nghĩa bằng chỉ dẫn DB của Assembly. Em cần lập một bảng tra các giá trị cho led 7 đoạn giống như trong hợp ngữ của MCS51.
totite vẫn chưa có mặt trong diễn đàn  
Old 01-03-2006, 07:23 PM   #8
LEO-XBS
Đệ tử 1 túi
 
LEO-XBS's Avatar
 
Tham gia ngày: Oct 2005
Bài gửi: 21
:
bác ntc co thể chỉ giúp em cách sử dụng cổng analog duoc ko
làm thế nào để sử dụng cổng đó trong việc thu tín hiệu từ led thu-phat va chuyển thành tín hiệu số (không dùng khuếch đại thuật toán) cộng với cách xư lý tín hiệu đó
__________________
=============================
________ Leo XBS _________
E-mail:leo_xbs1408@yahoo.com
"Đi một ngày đàng học một sàng khôn"
LEO-XBS vẫn chưa có mặt trong diễn đàn  
Old 05-03-2006, 01:19 PM   #9
ntc
Đệ tử 8 túi
 
ntc's Avatar
 
Tham gia ngày: Oct 2005
Nơi Cư Ngụ: HCM city
Bài gửi: 264
:
Send a message via Yahoo to ntc
Bảng tra giá trị cho vi điều khiển PIC sử dụng kĩ thuật bảng. Mình đã viết tutorial về kĩ thuật này rồi. Một hai bữa nữa sẽ post lên diễn đàn.
__________________

ntc vẫn chưa có mặt trong diễn đàn  
Old 05-03-2006, 01:22 PM   #10
ntc
Đệ tử 8 túi
 
ntc's Avatar
 
Tham gia ngày: Oct 2005
Nơi Cư Ngụ: HCM city
Bài gửi: 264
:
Send a message via Yahoo to ntc
Dùng bộ ADC đi. Trong PIC16F877A có tích hợp sẵn bộ ADC đó. Bạn nên tham khảo cái datasheet để biết được cấu trúc ADC trong PIC và cách sử dụng nó.
__________________

ntc vẫn chưa có mặt trong diễn đàn  
Old 06-03-2006, 02:51 PM   #11
ntc
Đệ tử 8 túi
 
ntc's Avatar
 
Tham gia ngày: Oct 2005
Nơi Cư Ngụ: HCM city
Bài gửi: 264
:
Send a message via Yahoo to ntc
Tutorial thứ 3.

http://www.picvietnam.com/download/T...TCR.050306.pdf

Đây là bài viết về kĩ thuật bảng. Sau bài này, có thể nói ta đã trang bị được những cơ sở cơ bản nhất cho việc lập trình cho vi điều khiển PIC.
Có thể tham khảo thêm một số tutorial trong diễn đàn để xây dựng một số ứng dụng cho mình dựa trên các kĩ năng đã có được.
Bài thứ 4 mình định viết về một số ứng dụng, phần quan trọng nhất là các thao tác về chức năng input của các cổng của vi điều khiển, nhưng nghĩ lại thấy không cần, bạn có thể tham khảo rồi tự thực hiện các ứng dụng cũng được. Có gì thắc mắc thì hỏi vậy. Mọi người thấy thế nào.
Nếu không có gì thay đổi, bài tới mình dự định sẽ viết về LED 7 đoạn và các thao tác hiển thị cơ bản với LED 7 đoạn dùng vi điều khiển PIC.
__________________

ntc vẫn chưa có mặt trong diễn đàn  
Old 18-03-2006, 08:45 AM   #12
ahchu
Đệ tử 1 túi
 
Tham gia ngày: Mar 2006
Bài gửi: 23
:
Cho em hỏi là làm thế nào biết được 1 chương trình bắt đầu từ address nào? VD như trong tutor của ntc thì tất cả đều bắt đầu tại 0x000. Khi em đọc datasheet của con 16F877a thì địa chỉ 0x000 là "Reset vector", chứ đâu phải là "On-chip program memmory"???
Vậy thì em phải thể bắt đầu từ address 0x000 hay là 0005h?Em không hiểu rõ phần này.
ahchu vẫn chưa có mặt trong diễn đàn  
Old 20-03-2006, 11:57 AM   #13
ntc
Đệ tử 8 túi
 
ntc's Avatar
 
Tham gia ngày: Oct 2005
Nơi Cư Ngụ: HCM city
Bài gửi: 264
:
Send a message via Yahoo to ntc
0x000 là reset vector, có nghĩa là khi được reset, bộ đếm chương trình sẽ nhảy đến địa chỉ này và bắt đầu thực hiên lệnh tại đây.

0x004 là interrupt vector, có nghĩa là khi có ngắt xảy ra, bộ đếm chương trình sẽ quay về địa chỉ này để thực hiện lệnh từ đây.

Ví dụ ta có một đoạn code như sau:
ORG 0x000
GOTO start

Có nghĩa là lệnh "GOTO start" sẽ được đưa vào bô nhớ chương trình của vi điều khiển tại địa chỉ 0x000. Khi vi điều khiển được reset, bộ đếm chương trình quay về "reset vector" tại địa chỉ 0x000, ở đó nó đọc được lệnh "GOTO start" và nhảy đến label "start".

Còn việc label start nằm ở chỗ nào thì còn tùy thuộc vào việc ta đặt cái label "start" tại vị trí nào trong chương trình, hoặc ta có thể điều khiển địa chỉ đặt nó bằng cách sử dụng lệnh "ORG ....". Ví dụ ta viết như sau:

ORG 0x050
start
; đoạn chương trình start

Thì khi đó đoạn chương trình "start" sẽ được bắt đầu tại địa chỉ 0x050 của bộ nhớ chương trình.

Như vậy bạn có thể tổ chức bộ nhớ chương trình theo như mình mong muốn.

__________________

ntc vẫn chưa có mặt trong diễn đàn  
Old 25-03-2006, 04:10 PM   #14
ngoalongdochanh
Nhập môn đệ tử
 
Tham gia ngày: Mar 2006
Bài gửi: 2
:
Cho toi hoi tai sao khi khai bao:
#device PIC16F877 *=16 ADC=10

thi CCSC bao loi: "Can not change device type this far into the code"
Cach khac phuc
ngoalongdochanh vẫn chưa có mặt trong diễn đàn  
Old 27-03-2006, 07:57 PM   #15
nhh
Đệ tử 9 túi
 
nhh's Avatar
 
Tham gia ngày: Feb 2006
Bài gửi: 174
:
Send a message via Yahoo to nhh
Trích:
Nguyên văn bởi ngoalongdochanh
Cho toi hoi tai sao khi khai bao:
#device PIC16F877 *=16 ADC=10

thi CCSC bao loi: "Can not change device type this far into the code"
Cach khac phuc
Hi!

CCS C báo lỗi tại vị trí câu lệnh này,nhưng bản thân nó hoàn toàn đúng đắn,vì bạn không post toàn bộ chương trình của bạn lên nên không thể biết chỉ độc mỗi tội bạn đã cố tình thay đổi device type,nên chương trình báo lỗi.
Tớ có post 1 bài ADC đơn giản ở luồng này :
http://www.picvietnam.com/forum/show...=2113#post2113

Hy vọng nó sẽ có ích cho bạ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
nhh vẫn chưa có mặt trong diễn đàn  
Ðề tài đã khoá


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến

Similar Threads
Ðề 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


Múi giờ GMT. Hiện tại là 04:33 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam