PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC > Những câu hỏi thường gặp

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

Những câu hỏi thường gặp Những lỗi cơ bản thường gặp khi làm việc với PIC hoặc những vấn đề cơ bản nhất thường được hỏi trong những năm qua

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 04-02-2007, 04:19 PM   #1
diencaothe
Nhập môn đệ tử
 
Tham gia ngày: Jun 2006
Bài gửi: 5
:
Những thắc mắc với PIC16F877

Chủ nhật rỗi rãi, e tổng hợp các chỗ mà mình còn thắc mắc về PIC, mong các bác hảo tâm giải đáp.Các bác giúp cho e và cũng là giúp cho nhiều bạn mới học
Xin cảm ơn các bác trước.


1... Em không hiểu PIC16F877 và PIC16F877A khác nhau chỗ nào? Dùng con nào thì tốt hơn?

2... Em hiện đang dùng thạch anh 4MHz, và định chuyển lên dùng thạch anh 20MHz. Nếu em không nhầm thì đây là giá trị thạch anh cao nhất cho PIC16F877. Không biết dùng thạch anh 20M thì PIC có chạy ổn định không, có cần phải chú ý điều gì không? (vì thằng bạn em đã thử dùng 20Mhz, nói là PIC cứ đơ đơ thế nào ấy).

3... Giá trị của tụ gốm đi cùng với thạch anh có nhất thiết phải chuẩn như trong datasheet không? Ví dụ với thạch anh 20MHz thì tụ gốm là từ 15-33p, với thạch anh 4Mhz là 15p (viết đến đây em xem lại thì thấy mình dùng tụ 33p với thạch anh 4MHz. Tuy vẫn chạy ngon nhưng thỉnh thoảng nó cũng điên điên. Lý do là đây chăng?)

4... Em cần dùng 2 con PIC16F877 trong mạch của mình. 2 PIC dùng chung 1 công tắc reset, và giao tiếp với nhau thông qua 2 chân RX và TX. Câu hỏi là:
- Em dùng 2 PIC như vậy có cần chú ý gì không?
- Em định dùng chung 1 thạch anh cho cả 2 PIC có được không? Nếu được thì e lại hỏi tiếp: 1 thạch anh có thể dùng chung cho tối đa bao nhiêu VĐK?

5... Nếu trong mạch của mình chỉ dùng 2 PIC thì có lẽ giao tiếp giữa chúng dùng 2 chân RX và TX là hợp lý. Nhưng nếu dùng từ 3 PIC trở lên thì sao?
Em có nghĩ đến I2C, nhưng nếu dùng I2C thì 1 con sẽ là master và 1 con là slave. Theo cái kiến thức còn bé xinh xinh của e thì con master có thể đọc và ghi data đến con slave. Nhưng nếu con slave muốn chủ động gửi data đến con master thì ko được. Vậy muốn giao tiếp chủ động và công bằng giữa các PIC phải làm sao?

6... 16F877 có 2 chân VDD và 2 chân VSS. Sự khác nhau giữa 2 chân này ra sao? Trong mạch e cứ đấu cả 2 chân VDD lên +5V và 2 chân VSS xuống GND có sao không?

7... Có các sơ đồ mạch reset nào cho PIC? Loại nào ổn định nhất? Em đang dùng kiểu reset sơ đẳng :

(ảnh dưới)


Với kiểu reset này, em gặp trục trặc như sau:
- Em cần điều khiển 2 động cơ độc lập về tốc độ, theo cả 2 chiều (thông qua mạch cầu H). PIC chỉ có 2 PWM nên em dùng 4 cổng AND của 7408 để mở rộng:

(ảnh dưới)

trục trặc thỉnh thoảng xảy ra, nhưng cũng không phải ít lần: mạch đang chạy, ấn reset, PIC vẫn bắt phím và hiển thị led 7 đoạn bình thường nhưng động cơ không chạy được (2 chân PWM hình như ko còn tác dụng). Phải tắt nguồn, đợi 1 tý xíu, bật trở lại thì động cơ mới chạy. Không hiểu tại sao nhỉ?

8... Nếu em dùng cả 2 PWM thì vẫn chỉ tốn timer 2 thôi đúng không? Như vậy em dùng cả timer0 và timer1 để làm counter có vấn đề gì ko?

9... E điều khiển 2 động cơ, mỗi động cơ có 1 encoder đưa về timer0 và timer1 để đếm (2 chân này đều được treo lên dương nguồn qua trở 10K). Đo điện áp từ encoder đưa về cũng gần 5V, vậy có cần thiết phải dùng IC để đệm đầu vào cho PIC không (như 74245, 74573...)?

10... Vấn đề treo trở.
Thường thì đầu ra và đầu vào các IC phải treo trở lên dương nguồn. Tuy nhiên em dùng việc treo trở này khá bừa bãi. Ví dụ: tất cả các chân I/O của PIC đều treo trở băng 10K; các cổng I/O đều có đệm 1 con 74245, và đầu ra hay vào của các IC đệm cũng đều treo trở 10K hết... (cứ nghĩ đến treo trở là ốp luôn con 10K vào).
Câu hỏi của em là:
- Khi nào thì nên treo trở? (cực hở, tín hiệu vào biến đổi nhanh, encoder, đầu ra dòng cao ???)
- Giá trị trở treo là bao nhiêu cho từng trường hợp? Một số mạch em thấy treo 2k2, 4k7, 10k .... , có lần còn thấy đầu ra con ULN2803 treo 10k ko được, phải treo lên 100k ??? Em đọc đâu đó thấy nói rằng, giá trị trở treo lớn thì tổn hao dòng nhỏ, nhưng thời gian để xung lên hoặc xuống hoàn toàn lớn; còn treo trở giá trị nhỏ thì ngược lại. Các bác nói rõ hơn chỗ này được không?
- Với các IC logic như 7400, 7408..., 4050... thì có cần phải treo trở không?



11... Mạch ICD2-USB.
Em thấy nhiều bác bán mạch nạp và gỡ rối này (như bác fall, bác TME,bác batbatdieu, minhha...) nhưng e chưa hiểu cái mạch này chức năng ra sao. Các bác nói hộ em chút:
- Em dùng Winpic800 thấy rất tiện khi nạp kiểu ICSP trực tiếp trên bo mạch test, cứ nạp xong là PIC tự chạy luôn, rất sướng. Mạch này nạp ICSP xong PIC có tự chạy ko?
- Tài liệu có nói không được dùng mạch này để cấp dòng cho mạch ngoài quá 100mA. Nếu e ko dùng nguồn 5V của mạch nạp mà dùng luôn nguồn của mạch phát triển thì nạp có vấn đề gì ko?
- Chức năng gỡ rối trên mạch nghĩa là sao? Có phải là khi chip đang chạy trên thực tế, ta có thể theo dõi được các thanh ghi và các biến không?
- Em muốn nạp trực tiếp trên mạch mà vẫn sử dụng 2 chân PGD và PGC thì làm sao? Nếu 2 chân này làm đầu vào, và trong quá trình nạp có tín hiệu vào 2 chân này thì sao? (chắc là toi nhỉ). Nếu 2 chân này dùng làm đầu ra, để điều khiển cái gì đó thì chắc vẫn nạp đươc ?

12... Mạch em dùng chỉ có nguồn cấp 12V (acquy). Nhưng bây giờ lại có 1 linh kiện đòi hỏi dùng điện áp >=24V. Nếu đấu 2 acquy thì không nói làm gì rồi. Vấn đề e cần hỏi là liệu có cách nào để nâng điện áp từ 12V lên 24V hoặc hơn dùng linh kiện không?
- Em đã thấy cách tạo ra điện áp 13V dùng 7805 và 7808. Vậy có dùng 2 con 7812 để tạo ra 24V ko?
- Max232 có thể nâng mức TTL 5V thành mức 13V. Vậy có dùng để nâng áp thành 24V đc ko?
Hình Kèm Theo
File Type: jpg reset.JPG (18.2 KB, 898 lần tải)
File Type: jpg PWM.JPG (51.7 KB, 897 lần tải)
diencaothe vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 04-02-2007, 07:16 PM   #2
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Thắc mắc của bạn dài hơn sớ Táo quân, tôi sẽ lần lượt trả lời từng phần.

1. PIC16F877A là phiên bản cải tiến của PIC16F877, về chức năng thì hoàn toàn giống nhau, chỉ có cải tiến về công nghệ chế tạo Flash (do đó cách thức ghi vào Flash của 877A khác với của 877).

2. Dùng thạch anh 20 MHz không có vấn đề gì, tôi vẫn thường xuyên dùng mạch có thạch anh 20 MHz cho PIC16F877A.

3. Giá trị tụ điện cho các mạch dao động của PIC trong datasheet là giá trị đề xuất của Microchip, nó thường được dùng làm giá trị khởi điểm khi thử nghiệm các giá trị tụ cho thạch anh. Vì thạch anh do nhiều hãng sản xuất khác nhau nên mỗi hãng có những đề xuất riêng cho giá trị tụ được dùng, cũng có lý do là các thạch anh có những giá trị tụ tải khác nhau khi thiết kế.

4. Công tắc reset cũng có loại nhiều cặp tiếp điểm, vậy bạn dùng chung 1 cặp tiếp điểm cho 2 PIC hay mỗi PIC có một cặp tiếp điểm riêng (của cùng 1 công tắc)?
Có thể dùng chung thạch anh cho nhiều PIC, một PIC sẽ cấu hình dạng thạch anh ngoài, còn các PIC còn lại sẽ cấu hình clock ngoài vào OSC1. Số vi điều khiển cho phép dùng chung mạch dao động kiểu này tùy thuộc vào khả năng lái của chân OSC2 của PIC dùng cấu hình thạch anh ngoài, và mức độ tiêu thụ dòng của các PIC (hay vi điều khiển) khác tại chân OSC2. Không có câu trả lời chính xác và duy nhất cho câu hỏi của bạn.

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
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 04-02-2007, 07:47 PM   #3
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Tiếp theo

5. Với mạng nhiều hơn 2 vi điều khiển thì có các giao thức dạng bus với multi-master, I2C cũng hỗ trợ multi-master. Bạn có thể dùng các giao thức (protocol) có sẵn, hay tự định nghĩa giao thức nếu không vừa lòng với các giao thức có sẵn.

6. Các chân VDD hay VSS của vi điều khiển được nối với nhau bên trong chip, không có gì khác nhau giữa các chân cùng tên. Lý do kéo nhiều chân cấp nguồn cho 1 chip có thể gồm: chia dòng nguồn mà mỗi chân cần tải, tạo điều kiện thuận lợi hơn cho việc bố trí các tụ lọc nguồn (decoupling hay bypass), ... Tất nhiên là tất cả các chân VDD cần nối vào điểm dương của nguồn, và tất cả các chân VSS đều nối vào điểm âm của nguồn.

7. Có một số sơ đồ mạch reset được đề xuất trong các datasheet của PIC, một số sơ đồ được thiết kế để tương thích với các mạch nạp ICSP. Tôi không khẳng định loại nào ổn định nhất, mà chỉ khuyên dùng các mạch có hỗ trợ chống nảy phím (debouncing), có hạn dòng và chống quá áp, cũng như tương thích với ICSP nếu có dùng mạch nạp ICSP.

Với mạch điều khiển động cơ của bạn, không có mạch công suất thực tế cùng với code của chương trình thì rất khó nhận xét là vì sao. Tất nhiên mạch reset bạn đang dùng có thể bị nảy phím.

8. Dùng cả CCP1 và CCP2 ở PWM mode thì vẫn chỉ dùng timer 2. Bạn được phép dùng timer 0 và timer 1 cho những việc khác.

9. Vấn đề giao tiếp giữa các mạch logic cần thỏa mãn các điều kiện về mức điện áp và khả năng cung cấp/tiêu thụ dòng điện giữa chúng. Do vậy, các mức logic từ ngõ ra của encoder cần thỏa mãn các ngưỡng logic ở ngõ vào của PIC, và các ngõ ra của encoder cần cung cấp đủ mức dòng yêu cầu tại các ngõ vào của PIC. Theo tôi thì bạn không cần dùng các vi mạch đệm, vì ngõ vào của PIC thường tiêu thụ dòng khá nhỏ (chúng đã có các bộ đệm TTL hay Schmitt trigger tại các ngõ vào).

10. Nhất định phải có điện trở treo lên điểm dương của nguồn nếu ngõ ra thuộc loại cực thu/cực máng hở (để xác định trạng thái logic nhất định). Với một số ngõ ra không có khả năng cung cấp đủ dòng thì cũng dùng điện trở treo để hỗ trợ khả năng cấp dòng, nhưng khi đó dòng điện do ngõ ra sink khi ở mức thấp sẽ tăng lên.

Không có câu trả lời cụ thể cho giá trị của điện trở treo, tùy vào tính toán cho bài toán cụ thể mà quyết định giá trị. Với ngõ ra cực thu/cực máng hở, dòng điện cung cấp cho tải ở mức điện áp cao (tức là khi ngõ ra không kéo xuống điểm âm của nguồn) hoàn toàn phụ thuộc vào giá trị điện trở treo. Các ngõ vào thường có điện dung nhất định, cộng với điện dung ký sinh giữa chân linh kiện và điểm âm của nguồn. Do vậy, việc điện áp do ngõ ra cực thu/cực máng hở tăng lên nhanh hay chậm sẽ do giá trị của điện trở treo quyết định (một mạch RC thông thường). Dòng nhỏ thì nạp tụ chậm, dòng lớn sẽ nạp tụ nhanh hơn, dẫn đến nhận định mà bạn đã đọc được ở đâu đó.

Không thể trả lời cho cả họ logic 74 hay CMOS về câu hỏi cần có điện trở treo của bạn, vì tùy kiểu ngõ ra, hay khả năng cấp dòng của mạch, kết hợp với mạch tải của nó thì mới biết có cần dùng điện trở treo hay không.

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
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 04-02-2007, 08:02 PM   #4
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Xong

11.
- Mạch ICD2 có thể nạp theo kiểu ICSP, sau đó thả chân MCLR để PIC chạy chương trình.
- ICD2 đã được thiết kế để hoạt động với mạch phát triển lớn, không dùng nguồn từ ICD2. Tôi vẫn dùng nguồn riêng cho mạch đích khi nạp bằng ICD2.
- Gỡ rối chương trình bằng ICD2 cho phép theo dõi quá trình chạy chương trình (đến một điểm dừng nào đó hay theo từng bước), xem hay thay đổi nội dung của các thanh ghi.
- Nếu muốn dùng 2 chân PGD và PGC cho mạch đích (mạch phát triển) thì cần thiết kế mạch giao tiếp cho các chân này theo khuyến cáo của Microchip cho mạch nạp ICSP. Tôi đã có lần gửi link về cách thiết kế này, tôi gửi lại ở đây: http://nqnam.byethost7.com/PIC/pictures/ICSP_Connection.jpg

12. Có thể dùng các mạch bơm điện tích hay nâng áp dạng chuyển mạch (boost) để nâng cao điện áp.
- Để dùng các vi mạch ổn áp tuyến tính họ 78 thì bạn phải có điện áp ngõ vào lớn hơn ngõ ra đôi chút, trong khi bạn chỉ có 12V và cần điện áp ra 24V. Do đó không thể dùng 2 con 7812 hay 1 con 7824 để có nguồn 24V từ nguồn 12V.
- MAX232 có 2 mạch bơm điện tích bên trong, để tạo áp +10V và -10V cho giao tiếp RS-232. Tuy nhiên, các vi mạch họ MAX232 không thể chấp nhận áp nguồn cao hơn 5V, do đó bạn không dùng nó để tạo 24V từ 12V được.

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, 28-02-2009 lúc 09:08 PM. Lý do: cập nhật link
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 05-02-2007, 03:23 AM   #5
diencaothe
Nhập môn đệ tử
 
Tham gia ngày: Jun 2006
Bài gửi: 5
:
Cảm ơn bác Nam nhiều lắm. Câu trả lời của bác cũng dài không kém câu hỏi của em, nhưng rất rõ ràng và dễ hiểu.
Xin mạn phép bác hỏi kỹ thêm đôi chỗ mà em chưa thông hẳn.

3. Ý em là tụ dùng kèm với thạch anh nếu sai so với khuyến cáo thì có ảnh hưởng đến độ ổn định của PIC không?
Ví dụ: thạch an 4M, khuyên dùng tụ 15p, em phang con tụ 33p. Thực tế thì nó vẫn chạy được, nhưng vì thỉnh thoảng con PIC của e nó cũng đơ đơ nên mới nghi vấn điểm này. Có lẽ e đấu 2 con 15p nối tiếp vào cho lành vậy.

4. - Mục đích của em là khi ấn công tắc reset thì cả 2 PIC cùng reset nên 2 chân reset sẽ đấu chung vào một tiếp điểm.
- Nếu em chỉ dùng 2 PIC thì 2 PIC có đấu chung thạch anh theo kiểu: 2 chân thạch anh cùng được đấu đến 2 chân dao động của 2 PIC tương ứng ?
- Câu trả lời của bác đã rõ: PIC 1 dùng thạch anh như bình thường, chân OSC2 của PIC này sẽ có xung ra để cung cấp đến chân OSC1 của các PIC còn lại. Vậy các PIC còn lại khai báo dao động như thế nào? vẫn là XT,LP,HS như bình thường ? (vì em chỉ thấy phần khai báo có mấy cái vừa nêu và thêm cái RC nữa, chứ ko thấy có cái nào khai dùng OSC1 cả)

7. Bác có thể up cho em sơ đồ mạch reset dùng công tắc mà có chống nảy, chống qúa áp,dòng được không? Em dùng cho nó yên tâm.
Nếu được cho em xin thêm sơ đồ mạch reset cho kiểu nạp ICSP vì e khoái chơi kiểu này lắm.
diencaothe vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 05-02-2007, 06:18 PM   #6
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
3. Nên dùng giá trị tụ theo khuyến cáo của hãng sản xuất (chứ không phải của Microchip nhé, vì Microchip không sản xuất thạch anh đó), độ sai lệch cho phép sẽ càng nhỏ khi tần số của thạch anh càng nhỏ. Lý do là với tần số nhỏ thì kích thước của thạch anh sẽ tăng nếu được thiết kế ở cùng mức công suất, do vậy các thạch anh tần số thấp với cùng kích thước đóng gói sẽ thường có mức công suất nhỏ hơn so với các thạch anh tần số cao. Các tụ được gắn vào mạch dao động thạch anh thường được gọi là tụ tải, có tác dụng làm lệch pha điện áp ở hai đầu của mạch dao động trong thạch anh. Nếu các tụ này có điện dung quá lớn thì mạch dao động sẽ không kéo nổi (mạch dao động đảo pha bị giới hạn mức công suất áp đặt vào thạch anh).

Bạn xem thử link sau sẽ thấy có một thông số được gọi là Drive Level, đó chính là mức công suất của mạch dao động trong thạch anh: http://www.vanlong.com/products/crystal.htm

Bạn nên thử tìm datasheet cho thạch anh của bạn, tôi không dám khẳng định rằng tụ 15p là tốt hơn 33p hay ngược lại. Đấu nối tiếp 2 tụ 15p sẽ cho tụ tương đương là 7.5p!

4. - Nếu bạn dùng cùng 1 tiếp điểm, hay dùng 2 tiếp điểm của cùng một công tắc cho 2 chân reset thì bạn đều reset cả 2 PIC cùng lúc. Điểm khác nhau là giải pháp đầu tiên có sự liên hệ về điện, còn giải pháp thứ hai không có sự liên hệ về điện (chỉ có liên động cơ). Với giải pháp đầu thì khi thiết kế mạch reset bạn phải xem xét cả 2 chân reset, và nếu muốn thực hiện mạch tương thích với ICSP thì sẽ khá rắc rối.
- Không bao giờ nối chung thạch anh vào 2 mạch dao động, vì sẽ không bao giờ có 2 mạch dao động hoàn toàn giống nhau, ngay cả khi 2 chip đó nằm trong cùng 1 lô sản xuất.
- Chân OSC2 của PIC 1 nối đến chân OSC1 của các PIC còn lại, các PIC còn lại này có thể khai báo cấu hình bộ dao động là XT, HS, hay LP (đang nói đến các PIC16F877 nhé). Hình 12-2 và mục 12.2.2 trong datasheet của PIC16F877 có đề cập đến cấu hình này.

7. Trong datasheet của PIC16F877A chẳng hạn, ở phần nói về MCLR (mục 14.4) có sơ đồ mạch nối vào MCLR do Microchip đề xuất. Bạn muốn dùng nút reset thì chỉ cần mắc song song nút đó với C1. Mạch như vậy đã có thể chống nảy và hạn dòng. Để chống quá áp thì có thể mắc thêm một diode song song với R1, cathode nối vào Vdd.
Mạch gửi kèm dưới đây trích từ hướng dẫn thực hiện ICSP của Microchip. Bạn thử kết hợp cả hai mạch reset xem.

Thân,
Hình Kèm Theo
File Type: jpg ICSP_Connection.jpg (24.0 KB, 825 lần tải)
__________________
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, 05-02-2007 lúc 07:31 PM.
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 08-02-2007, 09:59 AM   #7
trongnghia85
Đệ tử 1 túi
 
Tham gia ngày: May 2006
Bài gửi: 23
:
Smile Đôi điều thắc mắc khi dùng PIC16F877A

Chào các bác em có 2 thắc mắc nhỏ nhờ các bác giải quyết giúp:
1) với chân reset em dang mắc chỉ cần treo trở 10k và có thêm nút bấm để nối mass khi reset .Đối với các chức năng bình thường thì không có vấn đề nhưng khi sử dụng PWM thì không thể reset dc,tại sao vậy? hay tại e chưa mắc đúng sơ đồ,các bác có thể cho em sơ đồ reset chuẩn được ko? E xem trong datasheet thì có thấy sơ đồ reset nhưng lại chưa rõ giá trị cụ thể của từng linh kiện.
2) E sử dụng 2 PWM nhưng khi cần dùng timer1 là một bộ đếm counter thì lại ko dc ,e muốn hỏi khi sử dụng 2PWM thì có ảnh hưởng gì đến timer1 ko? đọc datasheet thì thấy khi thiết lập counter1 thì chân CCP2 lại coi là đầu vào nữa của counter1,các bác nào có cách giải quyết thì giúp em với.Đây là đoạn khai báo của em:

ENABLE_INTERRUPTS(GLOBAL);
ENABLE_INTERRUPTS(INT_TIMER0);
ENABLE_INTERRUPTS(INT_TIMER1);
SETUP_COUNTERS(RTCC_EXT_H_TO_L,RTCC_DIV_1);
SET_TIMER0(0);
SETUP_TIMER_1(T1_EXTERNAL);
SET_TIMER1(0);
SETUP_TIMER_2(T2_DIV_BY_16,255,1);
SET_TIMER2(0);
SETUP_CCP1(CCP_PWM);
SET_PWM1_DUTY(0);
SETUP_CCP2(CCP_PWM);
SET_PWM2_DUTY(0);
trongnghia85 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 08-02-2007, 10:36 AM   #8
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
PWM được set là output, còn counter là input. Như vậy không thể sử dụng cả hai chức năng cùng lúc.

Cho nên nếu muốn dùng 2PWM và 1 counter, bạn có thể lấy một chân làm counter1, 1 chân làm PWM, và một chân I/O bất kỳ khác để làm PWM.

Chúc vui.
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 08-02-2007, 08:44 PM   #9
tu_nt_86
Nhập môn đệ tử
 
Tham gia ngày: Sep 2006
Bài gửi: 4
:
chào các bác.em là một thành viên mới nhập môn hôm nay mới có điều kiện ra mắt các bác.cho em gửi lời chào tới tất cả các bác là thành viên của diễn đàn.
chẳng là em giờ bắt đầu nghiên cứu về vi điều khiển mà co nhiều thắc mắc quá không biết làm sao bây giờ.lên em nhờ các bác giải đáp giùm em..
em lap trinh cho pic 16f84a nhưng mà thắc mắc chẳng biết viết vào đâu lên đành vào phần này cửa diễn đàn mong các bác thông cảm
Code:
  ;********nguyen tu******
list 	p=pic16f84a
include	p16f84a.inc
__config	_hs_osc& _wdt_off &	_pwrte_on &_cp_off
errorlevel		-302
;******label difinition*****
ra0		equ		0x00
ra1		equ		0x01
ra2		equ		0x02
ra3		equ		0x03
ra4		equ		0x04
time	equ		9fh
count1	equ		0x0c
count2	equ		0x0d
status	equ		0 x03
;******'1'off	'0'on
;**********	pattern 0 *********
p00		equ		b'11111110'
p01		equ		b'11111100'
p02		equ		b'11111000'
p03		equ		b'11110001'
p04		equ		b'11100011'
p05		equ		b'11000111'
p06		equ		b'10001111'
p07		equ		b'00011111'
p08		equ		b'00111111'
p09		equ		b'01111111'
;***kieu2***********
p10		equ		b'01111110'
p11		equ		b'00111100'
p12		equ		b'00011000'
p13		equ		b'10000001'
p14		equ		b'11000011'
p15		equ		b'11100111'
p16		equ		b'11111111'
p17		equ		b'11100111'
p18		equ	    b'11000011'
p19		equ		b'11000011'
p20		equ		b'10000001'
p21		equ		b'00011000'
p22		equ		b'00111100'
p24		equ		b'01111110'
;***kieu 3
p25		equ		b'01111110'
p26		equ		b'10111101'
p27		equ		b'11011011'
p28		equ		b'11100111'
p29		equ		b'11100111'
p30		equ		b'11011011'
p31		equ		b'10111101'
p32		equ		b'01111110'

;*****start program******
org		0x00
goto 	int
org		0x04
goto	int
;***chuong trinh ban dau ***
org 0x05
int 
	bsf	status,rp0

	movlw	h'ff'
	movwf	trisa
	bcf	status,rp0
	movlw   h'ff'
	movwf	portb
;***check key process****
keyscan	
	btfss	porta,ra0	;ra0 on(low label)?
	call	k1
	btfss	porta,ra1
	call	k2
	btfss	porta,ra2
	call	k3
	goto keyscan
k1
	movlw	p00	
	movwf	portb
	call 	delay
	movlw	p01
	movwf	portb
	call	delay
	movlw	p02	
	movwf	portb
	call 	delay
	movlw	p03
	movwf	portb
	call	delay
	movlw	p04	
	movwf	portb
	call 	delay
	movlw	p05
	movwf	portb
	call	delay
	movlw	p06	
	movwf	portb
	call 	delay
	movlw	p07
	movwf	portb
	call	delay
	movlw	p08	
	movwf	portb
	call 	delay
	movlw	p09
	movwf	portb
	call	delay
	movlw	h'ff'
	movwf	portb
	return
k2	
	movlw	p10	
	movwf	portb
	call 	delay
	movlw	p11
	movwf	portb
	call	delay
	movlw	p12	
	movwf	portb
	call 	delay
	movlw	p13
	movwf	portb
	call	delay
	movlw	p14	
	movwf	portb
	call 	delay
	movlw	p15
	movwf	portb
	call	delay
	movlw	p16	
	movwf	portb
	call 	delay
	movlw	p17
	movwf	portb
	call	delay
	movlw	p18	
	movwf	portb
	call 	delay
	movlw	p19
	movwf	portb
	call	delay
	movlw	p20	
	movwf	portb
	call 	delay
	movlw	p21
	movwf	portb
	call	delay
	movlw	p22	
	movwf	portb
	call 	delay
	movlw	p23
	movwf	portb
	call	delay
	movlw	p24
	movwf 	portb	
	call 	delay
	movlw	h'ff'
	movwf	portb
	call 	delay	
	return
k3
	movlw	p25
	movwf	portb
	call 	delay
	movlw	p26
	movwf	portb
	call	delay
	movlw	p27	
	movwf	portb
	call 	delay
	movlw	p28
	movwf	portb
	call	delay	
	movlw	p29	
	movwf	portb
	call 	delay
	movlw	p30
	movwf	portb
	call	delay
	movlw	p31	
	movwf	portb
	call 	delay
	movlw	p32
	movwf	portb
	call	delay	
	movlw	h'ff'
	movwf	portb
	call	delay
	return
delay
	movlw	time	
	movwf	count1
loop1	
	decfsz	count1
	goto	loop1
	movwf	count1
loop2
	decfsz	count1
	goto	loop2	
	return

end
đây là toàn bộ code em viết để làm cho 8 led chạy nhưng không hiểu sao mà không tài nào dịch được ra file .hex.mong các bác júp em xem em viết sai ở đâu. em dich bằng phần mềm MPLAB IDE 7.50

thay đổi nội dung bởi: namqn, 08-02-2007 lúc 09:36 PM.
tu_nt_86 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 08-02-2007, 09:47 PM   #10
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Bạn post luôn những thông báo lỗi thì sẽ dễ hướng dẫn hơn.

Hai lệnh goto ở các địa chỉ 0x00 và 0x04 nên được thụt vào trong.

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
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-02-2007, 11:22 AM   #11
tu_nt_86
Nhập môn đệ tử
 
Tham gia ngày: Sep 2006
Bài gửi: 4
:
đây là thông báo lỗi nè các bác.nhờ các bác chỉ jum nha!!!1


Clean: Deleting intermediary and output files.
Clean: Deleted file "C:\Documents and Settings\Nguyen Tu\My Documents\bai6.mcs".
Clean: Done.
Executing: "C:\Program Files\Microchip\MPASM Suite\MPAsmWin.exe" /q /p18F452 "bai6.asm" /l"bai6.lst" /e"bai6.err"
Warning[205] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 2 : Found directive in column 1. (list)
Warning[215] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 2 : Processor superseded by command line. Verify processor symbol.
Warning[205] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 3 : Found directive in column 1. (include)
Message[301] C:\PROGRAM FILES\MICROCHIP\MPASM SUITE\P16F84A.INC 35 : MESSAGE: (Processor-header file mismatch. Verify selected processor.)
Error[126] C:\PROGRAM FILES\MICROCHIP\MPASM SUITE\P16F84A.INC 114 : Argument out of range (must be greater than or equal to 255)
Error[126] C:\PROGRAM FILES\MICROCHIP\MPASM SUITE\P16F84A.INC 115 : Argument out of range (__MAXRAM must be used first)
Error[126] C:\PROGRAM FILES\MICROCHIP\MPASM SUITE\P16F84A.INC 115 : Argument out of range (__MAXRAM must be used first)
Error[126] C:\PROGRAM FILES\MICROCHIP\MPASM SUITE\P16F84A.INC 115 : Argument out of range (__MAXRAM must be used first)
Warning[205] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 4 : Found directive in column 1. (__config)
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 4 : Symbol not previously defined (_hs_osc)
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 4 : Symbol not previously defined (_wdt_off)
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 4 : Symbol not previously defined (_pwrte_on)
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 4 : Symbol not previously defined (_cp_off)
Warning[230] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 4 : __CONFIG has been deprecated for PIC18 devices. Use directive CONFIG.
Error[126] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 4 : Argument out of range (not a valid config register address)
Warning[205] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 5 : Found directive in column 1. (errorlevel)
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 15 : Symbol not previously defined (x03)
Error[112] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 15 : Missing operator
Warning[205] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 54 : Found directive in column 1. (org)
Warning[203] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 55 : Found opcode in column 1. (goto)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 55 : Destination address must be word aligned
Warning[205] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 56 : Found directive in column 1. (org)
Warning[203] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 57 : Found opcode in column 1. (goto)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 57 : Destination address must be word aligned
Warning[205] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 59 : Found directive in column 1. (org)
Error[157] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 59 : ORG at odd address
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 61 : Symbol not previously defined (rp0)
Error[118] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 61 : Overwriting previous address contents (0005)
Error[118] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 61 : Overwriting previous address contents (0006)
Error[118] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 63 : Overwriting previous address contents (0007)
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 64 : Symbol not previously defined (trisa)
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 65 : Symbol not previously defined (rp0)
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 67 : Symbol not previously defined (portb)
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 70 : Symbol not previously defined (porta)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 71 : Destination address must be word aligned
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 72 : Symbol not previously defined (porta)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 73 : Destination address must be word aligned
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 74 : Symbol not previously defined (porta)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 75 : Destination address must be word aligned
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 76 : Destination address must be word aligned
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 79 : Symbol not previously defined (portb)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 80 : Destination address must be word aligned
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 82 : Symbol not previously defined (portb)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 83 : Destination address must be word aligned
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 85 : Symbol not previously defined (portb)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 86 : Destination address must be word aligned
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 88 : Symbol not previously defined (portb)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 89 : Destination address must be word aligned
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 91 : Symbol not previously defined (portb)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 92 : Destination address must be word aligned
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 94 : Symbol not previously defined (portb)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 95 : Destination address must be word aligned
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 97 : Symbol not previously defined (portb)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 98 : Destination address must be word aligned
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 100 : Symbol not previously defined (portb)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 101 : Destination address must be word aligned
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 103 : Symbol not previously defined (portb)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 104 : Destination address must be word aligned
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 106 : Symbol not previously defined (portb)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 107 : Destination address must be word aligned
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 109 : Symbol not previously defined (portb)
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 113 : Symbol not previously defined (portb)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 114 : Destination address must be word aligned
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 116 : Symbol not previously defined (portb)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 117 : Destination address must be word aligned
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 119 : Symbol not previously defined (portb)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 120 : Destination address must be word aligned
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 122 : Symbol not previously defined (portb)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 123 : Destination address must be word aligned
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 125 : Symbol not previously defined (portb)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 126 : Destination address must be word aligned
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 128 : Symbol not previously defined (portb)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 129 : Destination address must be word aligned
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 131 : Symbol not previously defined (portb)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 132 : Destination address must be word aligned
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 134 : Symbol not previously defined (portb)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 135 : Destination address must be word aligned
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 137 : Symbol not previously defined (portb)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 138 : Destination address must be word aligned
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 140 : Symbol not previously defined (portb)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 141 : Destination address must be word aligned
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 143 : Symbol not previously defined (portb)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 144 : Destination address must be word aligned
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 146 : Symbol not previously defined (portb)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 147 : Destination address must be word aligned
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 149 : Symbol not previously defined (portb)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 150 : Destination address must be word aligned
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 151 : Symbol not previously defined (p23)
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 152 : Symbol not previously defined (portb)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 153 : Destination address must be word aligned
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 155 : Symbol not previously defined (portb)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 156 : Destination address must be word aligned
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 158 : Symbol not previously defined (portb)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 159 : Destination address must be word aligned
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 163 : Symbol not previously defined (portb)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 164 : Destination address must be word aligned
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 166 : Symbol not previously defined (portb)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 167 : Destination address must be word aligned
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 169 : Symbol not previously defined (portb)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 170 : Destination address must be word aligned
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 172 : Symbol not previously defined (portb)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 173 : Destination address must be word aligned
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 175 : Symbol not previously defined (portb)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 176 : Destination address must be word aligned
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 178 : Symbol not previously defined (portb)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 179 : Destination address must be word aligned
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 181 : Symbol not previously defined (portb)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 182 : Destination address must be word aligned
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 184 : Symbol not previously defined (portb)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 185 : Destination address must be word aligned
Error[113] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 187 : Symbol not previously defined (portb)
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 188 : Destination address must be word aligned
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 195 : Destination address must be word aligned
Warning[226] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 199 : Destination address must be word aligned
Warning[205] C:\DOCUMENTS AND SETTINGS\NGUYEN TU\MY DOCUMENTS\BAI6.ASM 202 : Found directive in column 1. (end)
Halting build on first failure as requested.
BUILD FAILED: Fri Feb 09 11:22:02 2007
tu_nt_86 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-02-2007, 11:52 AM   #12
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 biên dịch không đúng thao tác rồi.

Nên mô tả kĩ hơn các thao tác biên dịch của bạn luôn.
__________________

ntc vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-02-2007, 01:56 PM   #13
tu_nt_86
Nhập môn đệ tử
 
Tham gia ngày: Sep 2006
Bài gửi: 4
:
huhu thi em soan thao luon trong mplap do roi em cu alt +f10 vay thui the la no bao ra mot loat loi.ma em cung chang hieu sao co nhung bai mau em lay ve cung bi nhu vay . ma co nhung bai em viet em nghi con sai nhieu hon vay ma lai dich dc the la moi buon cuoi chu .chang tai nao doi dc sang file hex ..
tu_nt_86 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-02-2007, 07:09 PM   #14
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi tu_nt_86 View Post
huhu thi em soan thao luon trong mplap do roi em cu alt +f10 vay thui the la no bao ra mot loat loi.ma em cung chang hieu sao co nhung bai mau em lay ve cung bi nhu vay . ma co nhung bai em viet em nghi con sai nhieu hon vay ma lai dich dc the la moi buon cuoi chu .chang tai nao doi dc sang file hex ..
Bạn định dạng tập tin nguồn .asm không đúng chuẩn của MPLAB, nên mới phát sinh nhiều lỗi như vậy. Bạn load mã nguồn mẫu lấy từ tutorial của MAFD để xem thử, chú ý các khoảng thụt đầu dòng của các directive, mã lệnh, ... Sau đó sửa lại code của bạn cho giống định dạng mẫu và biên dịch lại. Nhớ là nhãn (label) luôn nằm ở cột đầu tiên của dòng, nếu bạn viết directive, hay mã lệnh ở code đầu tiên thì MPLAB sẽ không hiểu đó là directive hay mã lệnh đâu. Định dạng của mã nguồn phải tuân theo chuẩn của MPLAB, chứ không phải viết vậy để nhìn cho đẹp đâu.

Chú ý nữa là chọn linh kiện từ MPLAB cho đúng chip được dùng, nếu không sẽ nhận được Message[301] (vào mênu Configure, chọn lệnh Select Device ..., sau đó chọn chip từ danh sách thả xuống Device).

Thân,
File Kèm Theo
File Type: zip TUT_USART.zip (1.3 KB, 123 lần tải)
__________________
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, 10-02-2007 lúc 09:21 PM. Lý do: quên đính kèm mã nguồn mẫu
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-02-2007, 09:50 AM   #15
diencaothe
Nhập môn đệ tử
 
Tham gia ngày: Jun 2006
Bài gửi: 5
:
Các bác giải thích rõ cho em chỗ này với:
Câu hỏi của em là: nếu em dùng cả 2 CCP ở chế độ PWM thì có dùng time0 và timer1 làm counter đếm xung từ 2 encoder đưa về được không?

Bác Nam viết: Dùng cả CCP1 và CCP2 ở PWM mode thì vẫn chỉ dùng timer 2. Bạn được phép dùng timer 0 và timer 1 cho những việc khác.

Bác falleaf lại viết: PWM được set là output, còn counter là input. Như vậy không thể sử dụng cả hai chức năng cùng lúc.Cho nên nếu muốn dùng 2PWM và 1 counter, bạn có thể lấy một chân làm counter1, 1 chân làm PWM, và một chân I/O bất kỳ khác để làm PWM.


Như vậy rốt cục là em có dùng được cả 2 PWM và 2 counter cùng lúc không các bác ơi? nếu được thì khai báo cụ thể như thế nào?

Em thấy chân 15 là RC0/T1OSO/T1CKI: vậy T1OSO (timer1 oscillator output)là gì? còn T1CKI (timer1 externel clock input) thì phải là đầu vào của xung cần đếm cho counter1 rồi đúng ko ạ? (bình thường em vẫn làm vậy và đếm đúng)

chân 16 là RC0/T1OSI/CCP2: T1OSI (timer1 oscillator input) sử dụng ra sao??

Syntax:
setup_timer_1 (mode)

Trong help CCS em thấy: setup_timer_1 (mode)

Parameters:
mode values may be:

T1_DISABLED, T1_INTERNAL, T1_EXTERNAL, T1_EXTERNAL_SYNC

T1_CLK_OUT

các bác giải thích hộ em cụ thể về T1_EXTERNAL, T1_EXTERNAL_SYNC
T1_CLK_OUT được không ạ??
diencaothe vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


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
Xin tập lệnh của PIC16F877 thanhdt Cơ bản về vi điều khiển và PIC 12 13-01-2011 09:37 PM
Nguồn chuẩn cho ADC của PIC16F877 mamen2006 PIC - Thiết kế và Ứng dụng 0 13-09-2006 05:23 PM


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


Đượ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