|
Tài trợ cho PIC Vietnam |
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 |
|
Ðiều Chỉnh | Xếp Bài |
04-02-2007, 04:19 PM | #1 |
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? |
04-02-2007, 07:16 PM | #2 |
Trưởng lão PIC bang
|
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 |
04-02-2007, 07:47 PM | #3 |
Trưởng lão PIC bang
|
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 |
04-02-2007, 08:02 PM | #4 |
Trưởng lão PIC bang
|
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 |
05-02-2007, 03:23 AM | #5 |
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. |
05-02-2007, 06:18 PM | #6 |
Trưởng lão PIC bang
|
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,
__________________
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. |
08-02-2007, 09:59 AM | #7 |
Đệ tử 1 túi
Tham gia ngày: May 2006
Bài gửi: 23
: |
Đô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); |
08-02-2007, 10:36 AM | #8 |
PIC Bang chủ
|
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.
__________________
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? |
08-02-2007, 08:44 PM | #9 |
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 thay đổi nội dung bởi: namqn, 08-02-2007 lúc 09:36 PM. |
08-02-2007, 09:47 PM | #10 |
Trưởng lão PIC bang
|
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 |
09-02-2007, 11:22 AM | #11 |
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 |
09-02-2007, 11:52 AM | #12 |
Đệ tử 8 túi
|
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. |
09-02-2007, 01:56 PM | #13 |
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 ..
|
09-02-2007, 07:09 PM | #14 | |
Trưởng lão PIC bang
|
Trích:
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,
__________________
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 |
|
10-02-2007, 09:50 AM | #15 |
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 ạ?? |
|
|
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 |