PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   Pic16f877a TỪ DỄ TỚi KhÓ (http://www.picvietnam.com/forum/showthread.php?t=238)

namqn 02-06-2006 05:40 PM

Trích:

Nguyên văn bởi hungnp
Tôi muốn hỏi bạn một chút về PSP:

Khả năng chống nhiễu của nó thế nào. Nếu mang sản phẩm của bạn sử dụng PSP vào trong một nhà máy công nghiệp thì nó có hoạt động ổn định không?

Khoảng cách truyền của PSP có thể tối đa là bao nhiêu mà tín hiệu vẫn có thể đảm bảo.

PSP có thể kết nối được bao nhiêu PSP slave trên cùng một mạng.

PSP dùng 8 sợi dây để truyền tín hiệu nhưng 485 chỉ cần 3 dây thôi. 2 dây tín hiệu và một dây GND

Không nên so sánh kiểu này bạn ạ. Mỗi giao thức được sinh ra đều có mục đích, cũng như những ưu điểm và khuyết điểm. Bạn dùng cái mục đích của RS485 để so sánh giữa nó và PSP thì không công bằng. Bạn thử so sánh nó với PSP theo tiêu chuẩn tốc độ truyền dữ liệu ở cự ly gần xem.

Thân,

hungnp 02-06-2006 06:08 PM

Cái tôi cần nói là ở chỗ đó. Nếu bạn đã đi làm thì những ứng dụng ở cự ly gần có nhiều không?. Chúng ta nên làm những cái gì mà nó có ý nghĩa trong thực tế nhiều hơn. Làm không chỉ để học mà cũng phải có tính ứng dụng nữa.

namqn 02-06-2006 07:39 PM

Trích:

Nguyên văn bởi hungnp
Cái tôi cần nói là ở chỗ đó. Nếu bạn đã đi làm thì những ứng dụng ở cự ly gần có nhiều không?. Chúng ta nên làm những cái gì mà nó có ý nghĩa trong thực tế nhiều hơn. Làm không chỉ để học mà cũng phải có tính ứng dụng nữa.

Đó là quan điểm của bạn, còn những người khác có thể có quan điểm khác bạn. Một số sinh viên của tôi cũng có quan điểm như vậy, chỉ chịu học những gì họ cho là sẽ dùng nhiều trong thực tế.

Tôi luôn luôn khuyến khích sinh viên của mình nghiên cứu dựa vào thực tế. Cám ơn bạn đã có lời khuyên như vậy.

Thân,

falleaf 02-06-2006 07:53 PM

Trích:

Nguyên văn bởi hungnp
Cái tôi cần nói là ở chỗ đó. Nếu bạn đã đi làm thì những ứng dụng ở cự ly gần có nhiều không?. Chúng ta nên làm những cái gì mà nó có ý nghĩa trong thực tế nhiều hơn. Làm không chỉ để học mà cũng phải có tính ứng dụng nữa.

Điều bạn nói hoàn toàn đúng. Hiện nay, trên thế giới, người ta chủ yếu sử dụng giao tiếp nối tiếp. Theo lịch sử, ban đầu luôn xuất hiện các giao tiếp song song, vì người ta cho rằng giao tiếp song song, tại một lúc có thể truyền nhiều bit hơn giao tiếp nối tiếp. Nhưng về mặt điện, thì càng ngày người ta càng phát hiện, giao tiếp nối tiếp lợi thế hơn giao tiếp song song rất nhiều về mặt tốc độ.

Đơn cử một thí dụ, chúng ta có cổng IDE để giao tiếp với ổ cứng, nhưng hiện nay, giao tiếp SATA nối tiếp, cho phép đọc ổ cứng tốc độ cao hơn nhiều.

Do vậy, điều bạn nói hoàn toàn không sai. Nhưng một vấn đề đặt ra, nếu như bạn giao tiếp với các thiết bị đóng gói, và những sản phẩm đóng gói, có thể những sản phẩm đó sẽ là các giao tiếp nối tiếp. Nhưng nếu như bạn sản xuất thiết bị, thì bạn sẽ thấy, trong đó còn rất nhiều phần cần dùng giao tiếp song song.

Những linh kiện đơn giản như chuyển đổi ADC vẫn sử dụng giao tiếp song song, những linh kiện mã hoá, vẫn dùng giao tiếp song song. Trong một sản phẩm nhỏ vd như điều khiển động 3 động cơ bước cho ống kính thiên văn cá nhân, người ta vẫn dùng tín hiệu song song để điều khiển, vì tốc độ của nó chỉ cần 1 instruction để điều khiển động cơ bước đi 1 bước, và như vậy, trong vòng 3 instructions có thể điều khiển 3 động cơ bước, gần như tức thời. Nếu lập trình nối tiếp thì sẽ thế nào? Đây là ứng dụng thực tế, không phải là lý thuyết.

picvietnam nhận vai trò đào tạo phổ cập, cho nên những vấn đề picvietnam đưa ra, một phần là hơi mang tính academic, có nghĩa là phải mang tính chất đầy đủ, chưa chắc ứng dụng nhiều. Bạn có thể không cần, nhưng người khác sẽ cần. Đó là một vấn đề khiến picvietnam phải hao tổn sức lực khá nhiều so với việc cứ làm rồi làm. Ví dụ như bài toán của F đưa ra, há chẳng phải F không thể làm được giao tiếp nối tiếp, nhưng F đặt ra bài toán, để các bạn học sinh, sinh viên suy nghĩ giải pháp. Điều này cho thấy rằng picvietnam luôn muốn các bạn sinh viên suy nghĩ, vận dụng đầu óc của mình, với những điều kiện cố định cho trước (giao tiếp PSP, song song) để thực hiện bài toán. Khi có những kinh nghiệm suy nghĩ này, thì việc ứng dụng nó vào trong thiết kế về sau sẽ giúp người kỹ sư có một cái nhìn tổng quát hơn, và khi cần thì người ta có thể biết cách dùng.

Nếu bạn muốn thảo luận những vấn đề cao siêu, không mang tính chất học thuật mà ứng dụng nhiều, không mang tính chất đào tạo mà chỉ là trao đổi sơ qua, hoặc muốn thể hiện khả năng kỹ thuật của mình, hàng loạt sinh viên của F và bác BA sẽ có thể trả lời các vấn đề về PIC cho bạn tại www.dientuvietnam.net

Về việc bạn nhận xét về các bài viết không được mọi người theo dõi nhiều, xin thông báo là hiện nay picvietnam có phần lỗi counter, không hiểu sao bộ đếm người xem không tăng khi có người ra và vào. Bạn lưu ý điểm này và có thể thử vào xem rồi đi ra. Số lượt xem hoàn toàn không thay đổi. Do bộ phận kỹ thuật hiện nay quá bận, và đang phải ổn định www.dientuvietnam.net, đồng thời cá nhân F đang phải thiết kế bộ thư viện về Điện Tử, Điều Khiển, và Toán Ứng Dụng, nên rất hạn chế về mặt thời gian. Hơn nữa, F cũng vẫn phải đi học trên lớp, và vẫn phải thi, cho nên về mặt thời gian càng hạn chế hơn. Việc sử chữa này F sẽ cố gắng thực hiện sớm nhất có thể.

Mặc dù vậy, mỗi ngày F vẫn theo dõi không thiếu một bài trên picvietnam, và những bài có tính chất quan trọng, định hướng, và lý luận như của bạn, F sẽ phải dành thời gian để trả lời.

Có lẽ vì anh Nam trả lời bạn một cách khúc chiết, và quá ngắn gọn, cho nên làm cho bạn có cảm giác về câu trả lời chưa được thỏa mãn. Mong rằng bạn hiểu được ý đồ của picvietnam, muốn đem pic đến cho mọi người.

Chúng ta mỗi người, mỗi ngày làm một việc cho pic, F mong muốn rằng cái điều F nói "Học PIC trong 1 ngày" sẽ sớm thành sự thật. Đừng bảo việc gì khó thì không làm được, đó là tôn chỉ của picvietnam.

Chúng tôi rất mong những người đã có kinh nghiệm làm việc như bạn cùng tham gia xây dựng và phát triển về pic, robotics và các bài học cho picvietnam. Sức một vài người không làm được gì cả, nhưng sức của cả một cộng đồng thì không có gì không làm được. "Học pic trong 1 ngày" không phải là điều mà F cố đạt được, mà đây là tinh thần kêu gọi, chúng ta sẽ làm được.

Mong những đóng góp của bạn cho picvietnam nói riêng, và cho cộng đồng điện tử nói chung.

Chúc vui.

ntc 03-06-2006 12:51 PM

Trích:

Tôi muốn hỏi bạn một chút về PSP:

Khả năng chống nhiễu của nó thế nào. Nếu mang sản phẩm của bạn sử dụng PSP vào trong một nhà máy công nghiệp thì nó có hoạt động ổn định không?

Khoảng cách truyền của PSP có thể tối đa là bao nhiêu mà tín hiệu vẫn có thể đảm bảo.

PSP có thể kết nối được bao nhiêu PSP slave trên cùng một mạng.



PSP dùng 8 sợi dây để truyền tín hiệu nhưng 485 chỉ cần 3 dây thôi. 2 dây tín hiệu và một dây GND
Chính xác là cần từ 9 đến 11 sợi dây, chứ không phải chỉ cần 8 dây.

Các vấn đề này mình đã có đề cập đến trong phần kết luận của bài viết TUT04. Bạn đọc xem như thế nào, rồi cho mình biết ý kiến nhá.

:D

Hì, đã nhấn mạnh là bài viết này mang tính academic nhiều hơn mà, nhưng ứng dụng của nó trong thực tế thì phải có trường hợp hữu dụng cho nó, giống như sự hữu dụng của RS485 trong môi trường công nghiệp vậy.

Tùy thực tế mà mình quyết định dử dụng cái nào chứ bạn. Không để đem PSP vào các mạng công nghiệp, cũng như không nên đem RS485 vào ứng dụng trong các mạng cần khoảng cách ngắn và đơn giản, hì, nói nôm na là giết ruồi mà xài dao mổ bò.

giao_su_can 18-06-2006 10:53 AM

sao các bác ko có cái tut bằng C nhỉ ngôn ngữ C rất hay mà

falleaf 18-06-2006 03:01 PM

Không, picvietnam hướng dẫn về căn bản, để mọi người hiểu bản chất của PIC, nên chủ trương sử dụng MPASM để mọi người hiểu rõ bản chất của nó. Việc sau này dùng C hoặc B, đó là chuyện rất đơn giản.

Chúc vui

ncv 20-06-2006 11:36 AM

Trích:

Nguyên văn bởi falleaf
Không, picvietnam hướng dẫn về căn bản, để mọi người hiểu bản chất của PIC, nên chủ trương sử dụng MPASM để mọi người hiểu rõ bản chất của nó. Việc sau này dùng C hoặc B, đó là chuyện rất đơn giản.

Chúc vui

Tôi nghĩ không nên tự bó buộc chúng ta khi chỉ quyết định dùng MPASM. Hãy thử tưởng tượng việc phát triển lĩnh vực vi điều khiển tại VN. Ta cần bao nhiêu chuyên viên / chuyên gia làm việc trong từng phạm vi nào? Tôi chưa tìm ra câu trả lời toàn diện cho câu hỏi này, nhưng tôi không nghĩ là tất cả mọi người cần học căn bản thông qua assembly. Thậm chí tỉ lệ người dùng assembly là rất nhỏ, mặc dù họ đóng một vai trò vô cùng quan trọng. Có phải "căn bản" là dành cho tất cả mọi người không?

falleaf 20-06-2006 11:54 AM

Nhận định này của bạn rất hợp lý, chúng ta sẽ nhanh chóng đi đến việc phổ biến và nghiên cứu C, đó là cách cần thiết để tiếp cận với các dự án thực hành.

Do vậy, các thành viên vẫn thường xuyên viết các bài viết về C và trao đổi về C, ban điều hành của diễn đàn thì chú trọng vào phần MPASM. Thực tế, nếu ban điều hành không làm hoạt động nghiên cứu theo nghĩa hơi chuyên gia một chút, thì rất khó để có thể phát triển hoạt động và hỗ trợ, cũng như có cách nhìn về lâu về dài.

Chúng tôi vẫn luôn ủng hộ các hoạt động trao đổi về các ngôn ngữ cấp cao, bằng chứng là chúng tôi hỗ trợ rất nhiều công cụ trình dịch, cũng như có box dành cho ngồn ngữ cấp cao. Tuy nhiên, thử nghĩ đến việc, cả ban điều hành cũng không làm việc với MPASM nữa, thì gần như hoạt động của các ngôn ngữ cấp cao sẽ phát triển rất nhanh, mà đôi lúc không thể có những bài hướng dẫn một cách bản chất cho các bạn được.

Vd: Nguyễn Trung Chính phụ trách thực hành và báo cáo vừa qua về bootloader, PIC877A, và giao tiếp PSP, chúng ta không thể nói dùng dòng lệnh C này, dòng lệnh C kia để làm... Như anh Nam, hướng dẫn về dsPIC, thực sự mà nói, làm việc với dsPIC thì làm với C sẽ có nhiều lợi thế hơn, nhưng để các bạn hiểu, thì cách thể hiện bằng ASM30 là tốt nhất.

Chúng tôi hoàn toàn ủng hộ các hoạt động của các thành viên và những người viết tut bằng ngôn ngữ cấp cao, còn nhiệm vụ của chúng tôi thì lại là nghiên cứu PIC... Nhưng F khẳng định một điều, khi các bạn hiểu ASM, sẽ rất tốt cho các bạn khi sử dụng ngôn ngữ cấp cao để làm việc

Chúc vui

MHz 22-06-2006 08:33 PM

Trích:

Nhưng F khẳng định một điều, khi các bạn hiểu ASM, sẽ rất tốt cho các bạn khi sử dụng ngôn ngữ cấp cao để làm việc
... rất đúng, khi các bạn hiểu về ASM các bạn sẽ thấy tự tin hơn khi làm việc với PIC, vì khi đó bạn đã hỉu rất rõ về cấu trúc phần cứng của PIC... và việc chuyển qua ngôn ngữ bậc cao chỉ là chuyện nhỏ... :)

hoanf 23-06-2006 12:41 AM

Em nghĩ việc học PIC thông qua ASM là rất là hay. Pic kô quá lớn để chúng ta phải dùng C để học và điểu khiển nó qua các driver như trong CCS cung cấp.
Điều này sẽ gây sự mù mờ cho người viết chương trình và cảm giác e sợ khi kô có driver đi kèm và đụng phải vấn đề liên quan tới phần cứng khác kô được sự hỗ trợ của driver.
Khi học ASM ta sẽ dễ dàng hiểu cấu tạo và cách hoạt động của PIC và chúng ta có thể dùng C để viết thử driver cho PIC (điều khiển ADC, keypad, các ứng dụng tạo ngắt và timer). Điều này sẽ rất hữu ích và làm cho ta tự tin khi phải làm quen với các hệ thống lớn hơn.
Em nghĩ phải đi từ thấp lên cao. Giống như ta học chữ vậy, phải học bảng chữ cái trước rồi mới ghép thành từ rồi ghép từ thành câu .....
Đây là ý kiến chủ quan của em. Mong nhận đc nhiều góp ý để đưa ra được cách học Pic tốt nhất cũng như tạo nền tảng cho ta phát triển làm các hệ thống Embedded sau này chẳng hạn.
Hoanf
Chúc ngủ ngon.

ncv 23-06-2006 07:22 AM

Trích:

Nguyên văn bởi hoanf
...
Em nghĩ phải đi từ thấp lên cao. Giống như ta học chữ vậy, phải học bảng chữ cái trước rồi mới ghép thành từ rồi ghép từ thành câu .....

Điều gì khiến tôi nhớ đến những ngày đầu học i-tờ? Tôi nằm lòng những ca dao tục ngữ của người xưa. Chẳng hạn:

Một cây làm chẳng nên non
Ba cây chụm lại nên hòn núi cao

Hay học phép cộng:

Hôm qua em giúp mẹ 2 việc: Quét nhà và trông em. Hôm nay em giúp mẹ rửa bát. Vậy em đã giúp mẹ mấy việc?

Tôi chán nhất là học thuộc lòng bảng cửu chương. Nếu không có truyện tranh Lưu Bình - Dương Lễ hay một truyện hấp dẫn in kèm vào bảng cửu chương thì "có thể" tôi chẳng bao giờ thuộc được nó.

hoanf 23-06-2006 10:13 AM

Chào buổi sáng.
Bác ncv nói gi tui ko hiểu lắm nhưng tui xin nói thêm về điều tôi nói bữa hôm qua.:D
Một người học chữ mà học cách viết một từ trước mà kô biết là một từ chỉ gồm các chữ cái ghép lại thì học đến bao giờ mớt hết.
Còn về bảng cửu chương bác ncv nói thì nếu ta kô học bảng cửu chương trước thì làm sao ta có thể làm các bài toán cộng trừ nhân chia các số đơn giản đây chứ nói gì đến giải phương trình.
Thân chào. Mong anh em góp ý để có cách học PIC tốt nhất.
hoanf

ntc 23-06-2006 02:38 PM

Các hàm trong các thư viện của ngôn ngữ cấp cao được xây dựng sẵn là rất thuận lợi. Nếu chỉ sử dụng hàm đó mà không tìm hiểu sâu hơn các chức năng bên trong thì đúng là thiếu sót, hơn nữa, khi có các yêu cầu phát sinh đối với các hàm khi xây dựng hệ thống, thì mình sẽ không xử lí được.
Có một điểm chung ở đây, đó là dù đứng trên phương diện nào, cũng cần phải tìm hiểu thấu đáo các công cụ mình đang tiếp cận.

Một vài ý kiến của mình như vậy.


:D

chuthong1 23-06-2006 02:57 PM

Cam' on Anh Nguyen Trung Chinh'
Anh lam on post bai tiep di Em dang doc thay rat hay, rat de hieu.

hoanf 23-06-2006 04:26 PM

Cám ơn ý kiến của anh Nguyễn Trung Chính.
Em rất mong vấn đề này được nhiều người góp ý hơn nữa để chúng ta có một hướng đi tốt nhất và ngắn nhất.

ncv 23-06-2006 05:26 PM

Trích:

Nguyên văn bởi ntc
...
Có một điểm chung ở đây, đó là dù đứng trên phương diện nào, cũng cần phải tìm hiểu thấu đáo các công cụ mình đang tiếp cận.
...

Tôi hoàn toàn đồng ý với quan điểm trên. Dùng bất kỳ ngôn ngữ hay công cụ nào, đó cũng chỉ là phương tiện để đạt được một mục đích nào đó. Mục đích càng cao, người dùng công cụ phải càng sáng suốt. Mục đích càng liên quan đến nhiều người, việc lựa chọn công cụ càng phải vừa cẩn thận vừa thoáng đạt.

typhn 30-06-2006 10:28 AM

Cảm ơn anh NTC,anh viết khá hay,đọc rất là dễ hiểu.
Em đã đi rất nhiều hiệu sách,tìm trên mạng cũng khá nhiều tài liệu
Nhưng vì mới học nên ko biết bắt đầu như thế nào
Đọc bài của anh,mọi thứ dường như đã sáng tỏ.
Thanks

typhn 30-06-2006 10:34 AM

Anh cho em hỏi chút,ở bài 2 của anh,khi khai báo biến
count1 equ 0x20
counta equ 0x21
countb equ 0x22
anh có thể giải thích chi tiết hơn được ko? equ la khai bao j? va nhat thiet phai la 0x20,21,22 ko?
nếu em khai báo như sau có được ko:

count1 db 0 ;khai bao 3 bien va cho chung gia tri ban dau la 0
cuonta db 0
countb db 0
thanks

typhn 30-06-2006 10:54 AM

ah,còn nữa,ở bài 2,có đoạn:

Code:

delay_0
    decfsz        counta,1        ;giam counta va so sanh voi 0
    goto          $+2              ;neu khac 0 thi th lenh nay( bo qua lenh tiep theo)
    decfsz        countb,1        ;neu bang 0 thi giam countb va sau lenh nay
                                          ; countb =0 nen ko thuc hien lenh tiep theo
    goto          delay_0          ;neu counta khac 0 thi tro lai va giam tiep
    decfsz        count1,1
    goto          d1
    return

Bây giờ,em ko dung biến countb nữa mà em làm như sau:

Code:

delay_0
    decfsz        counta,1 
    goto          $+2     
    goto          tro_ve 
    goto          delay_0     
tro_ve   
    decfsz        count1,1
    goto          d1
    return

2 chương trình này có giống nhau ko anh?
thanks

typhn 30-06-2006 11:02 AM

Xin lỗi anh,em edit nhưng ko được
Hơi khó nhìn 1 chút
thanks

ntc 30-06-2006 02:01 PM

Không nhất thiết, bạn có thể khai báo ở các ô nhớ khác. Bạn cũng có thể tham khảo thêm tài liệu hướng dẫn sử dụng cho trình biên dịch để hiểu thêm. Cái tài liệu gì ấy anh Nam nhỉ, tự nhiên em quên mất tiêu. Hình như là MPLAB, MPASM & MPLINK user guide gì đó.

Còn vấn đề vè delay, bạn chịu khó nghiền ngẫm một tí là hiểu ngay í mà.

:D

namqn 30-06-2006 05:25 PM

Tài liệu đó là "MPASM Assembler, MPLINK Object Linker, MPLIB Object Librarian User's Guide". Phiên bản hiện tại là DS33034J, download tại đây:
http://ww1.microchip.com/downloads/e...Doc/33014J.pdf

Thân,

ntc 01-07-2006 11:09 AM

Đấy, hèhè.

Cảm ơn anh Nam cứu bồ.

:D

typhn 01-07-2006 07:24 PM

Em mới học pic nên muốn mua 1 bộ nạp píc.
Bác nào có mạch nạp PG2C nạp cho con pic16F877A bán cho em cái
thanks
Email của em: typhn1985@yahoo.com

newuser 02-07-2006 01:16 PM

bạn nên viết chương trình delay theo dạng như sau sẽ rất tiện:
Code:

DELAY
            MOVLW D'xx'
            MOVWF COUNTA
            CLRF COUNTB
HERE
            NOP                        ;1us
            DECFSZ COUNTB,F      ;1us
            GOTO HERE                ;4us*255~1000uS=1ms
            DECFSZ COUNTA,F
            GOTO HERE                ;'xx' ms
;            DECFSZ COUNTx,F     
;            GOTO HERE
            RETURN
bạn thay COUNTA và COUNTB như thế này cũng được :
            DECFSZ 0X22,F
            GOTO HERE
            DECFSZ 0X21,F
            GOTO HERE

bạn muốn tạo trễ bao lâu chỉ cần thêm biến COUNTx rồi nạp giá trị ban đầu cho nó ,không mất công nhảy tới nhảy lui--->chóng mặt ^_^

được không bạn ?

typhn 02-07-2006 09:21 PM

Mấy bác ơi,giúp em với.
Em mới bắt đầu học pic,nhưng chưa có mạch nạp.
Em thử biên dịch chương trình bằng mplap.
Em làm y hệt anh NTC,cái bài cho led chạy từ trái sang phải ấy
code như sau:

Code:


;8 led o portb
;cho led chay tu trai sang phai
;thoi gian delay la 100ms


        list                p=16f877A        ; list directive to define processor
        #include        <p16f877A.inc>        ; processor specific variable definitions
       
        __CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF

;==========================
;KHOI TAO CAC BIEN       

;==========================
            count1 equ 0X20
            counta equ 0X21     
            countb equ 0X22     
 
          ORG        0X0000
          GOTO        MAIN
               

MAIN
          BCF        STATUS,RP1    ;RP1=0
          BSF        STATUS,RP0    ;RP0=1=>CHON BANK1
          CLRF        TRISB              ;XUAT DU LIEU RA PORTB
         
          BCF            STATUS,RP0  ;CHON BANK0
          MOVLW      B'10000000'
          MOVWF      PORTB          ;BAT LED O CHAN RB7
LOOP
          CALL          DELAY_100MS
          RRF            PORTB,1
          GOTO        LOOP

DELAY_100MS
         
          MOVLW      d'100'
          MOVWF      count1
DELAY0
 
          MOVLW      d'199'
          MOVWF      counta
          MOVLW      d'1'
          MOVWF      countb
D1
          DECFSZ      counta,1
          GOTO        $+2
          DECFSZ      countb,1
          GOTO        D1
          DECFSZ      count1,1
          GOTO        DELAY0
          RETURN
 end

Sau đó em nhấn alt+F10 để dịch ra file hex thì nó báo như sau:

Clean: Deleting intermediary and output files.
Clean: Deleted file "D:\pic\B3.mcs".
Clean: Done.
Executing: "C:\Program Files\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F877A "B3.ASM" /l"B3.lst" /e"B3.err"
Warning[207] D:\PIC\B3.ASM 15 : Found label after column 1. (count1)
Warning[207] D:\PIC\B3.ASM 16 : Found label after column 1. (counta)
Warning[207] D:\PIC\B3.ASM 17 : Found label after column 1. (countb)
Message[302] D:\PIC\B3.ASM 26 : Register in operand not in bank 0. Ensure that bank bits are correct.
Loaded D:\pic\B3.COD.
BUILD SUCCEEDED: Mon Jul 03 15:52:56 2006

Ko hiểu sao lại có mấy cái warning ở trên
Mấy bác giải thích dùm em với
thanks

falleaf 02-07-2006 09:40 PM

Trích:

Nguyên văn bởi typhn

Code:


        list                p=16f877A        ; list directive to define processor
        #include        <p16f877A.inc>        ; processor specific variable definitions
       
        __CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF

;==========================
;KHOI TAO CAC BIEN       

;==========================
            count1 equ 0X20
            counta equ 0X21     
            countb equ 0X22


Em chú ý, nó báo warning cái đoạn này, khi em gán count1 equ 0x20, có nghĩa là em đặt cái 0x20 thay bởi count1, nghĩa là em đặt một cái nhãn cho 0x20. Thay vì sau này viết 0x20 thì em viết là count1.

Cách viết này, có thể dùng để đặt hằng số, có thể đặt biến, nếu em dùng nó như một thanh ghi, thì nó là biến, nếu em dùng nó như là số, thì nó là hằng.

Cho nên, lúc này em phải viết nó vào cột thứ nhất, như một cái nhãn.

Vì vậy, nó mới thông báo rằng tìm thấy một cái nhãn không viết trong cột 1. Hay dịch nguyên văn là nó tìm thấy một cái nhãn viết sau cột 1.

Trong phần này anh nhớ đã có viết rất chi tiết trong bài viết về tập lệnh, đặt biến. Khi đặt biến, em dùng cách đặt RES thì sẽ tốt hơn dùng equ. Sau này chuẩn hoá, đặt biến sẽ dùng RES chứ không dùng EQU nữa.

Chúc vui

PS, em nhớ phải đặt chương trình trong cái thẻ [code] [/ code] (viết liền lại), thì mọi người mới thấy đựơc những chỗ sai kiểu như thế này.

Chúc vui

typhn 03-07-2006 08:37 AM

cảm ơn anh!
Em sửa được rồi.
Nhưng cái lỗi này thì em chưa hiểu lắm:
Message[302] D:\PIC\B3.ASM 26 : Register in operand not in bank 0. Ensure that bank bits are correct.
Sao thanh ghi lại ko ở trong bank 0 hả anh?
Anh giải thích giùm em với
thanks

ntc 03-07-2006 10:39 AM

http://www.picvietnam.com/forum//sho...p?t=238&page=5

Bạn tham khảo thêm ở chỗ này.

:)

phutdv 03-07-2006 04:11 PM

Thấy mấy anh bàn luận sôi nổi quá.
Em có 1 thắc mắc: khi trước, làm việc với 8051, em dùng ASM51 để biên dịch ra file hex. Bây giờ, học PIC, mấy anh cho em cái trình biên dịch cho PIC nhé, hình như là MPLAP như bác typhn có nói.
Rất mong sự giúp đỡ!
Thân mến!

txt 03-07-2006 05:12 PM

Tui học PiC bằng C trước khi hoc bằng ASM và hiểu rõ PIC hoạt động bằng cách giám sát mã ASM dịch ngược cho mỗi dòng lệnh . Do vậy học C không có nghĩa là sẽ không thể hiểu rõ PIC làm gì ,vấn đề là ta có muốn hiểu hay không , và bởi vì không có trình biên dịch nào mà kho hàm dựng sẵn của nó lại đủ cho tất cả mục đích và mong muốn của chúng ta . Đôi khi bạn có thể viết như thể viết kiểu ASM nhưng lại đang dùng kiểu thể hiện ( phong cách viết ) theo C ( không cần chèn mã ASM) , nhưng sẽ rất dễ nhìn , rõ ràng , thấy ngay được mọi thứ , và có thể đơn giản nhiều thứ ( ví dụ như lặp lại hoài việc chuyển bank phiền phức ). Tôi khoái C và mặc dù đang viết "CCS tiếng Việt " dở dang , nhưng tôi có ý định viết thành 1 quyển sách " Lập trình C cho PIC ", sử dụng CCS là chính , kết hợp MPLAB . Chỉ nói về C , còn ASM chỉ nói như là giải thích cách hoạt động của hàm , chương trình . Không biết điều này có là ngược đời hay không ?( nắm C trước , ASM nắm sau thông qua làm việc với C ) . Rõ ràng có ưu điểm : C dễ hiểu và viết nhanh , ASM chỉ cần hiểu , không cần phải viết . Nhưng các bạn có đồng ý về điều này ?

acbossvn 03-07-2006 06:06 PM

Mình mới chuyển sang tiếp cận PIC sau khi đã nghiên cứu 89C51 với trình dịch Keil. Khi dùng trình dịch này mình đã thấy hết ưu điểm của ngôn ngữ C với Micro-controler. Vì vậy, hiện tại mình rất ủng hộ và tán thành việc nghiên cứu PIC bằng ngôn ngữ C và tạm thời dùng trình dịch CCS. Txt đã có 1 ý tưởng rất hay là viết sách. Hoan hô bác Txt vì thành ý của bác dành cho anh em mới và đang tiếp cận PIC. Chúc bác viết sách thành công và sớm up lên diễn đàn cho mọi người. Mình sẽ theo dõi liên tục vấn đề này trong thời gian tới. Mong mọi người chỉ bảo thêm...

acbossvn 03-07-2006 06:09 PM

Dù mới tham gia, mình vẫn thấy luồng này vẫn lộn xộn quá. Nếu được, xin hãy tách riêng các bài viết bằng code C và ASM ra. Như vậy sẽ tiện theo dõi hơn.

falleaf 03-07-2006 09:05 PM

Bạn đọc kỹ tiêu đề, luồng này nói về 16F877A, cho nên mục tiêu là để phác thảo nên các tính năng, ứng dụng của nó. Đây là một cách học khác với cách học lập trình.

Để học lập trình, bạn vào từng mục cụ thể, MPASM hoặc Các ngôn ngữ lập trình khác, để thảo luận riêng về một ngôn ngữ nào đó.

Chúc vui

acbossvn 04-07-2006 09:26 AM

Các huynh cho đệ hỏi chút: la cái CCS dịch xong chương trình ko thấy thông báo lỗi gì...nhưng khi debug lại ko được và có thông báo: cannot detect ICD type? Nghĩa là sao zaay....

vẫn có thông báo như thế kể cả khi tiểu đệ debug code cho CCS được viết trên diễn đàn này.

typhn 04-07-2006 09:36 PM

Mấy anh cho em hỏi về giao tiếp ICSP.
Có tài liệu tiếng anh nhưng em đọc ko hiểu lắm
thanks

namqn 04-07-2006 10:16 PM

Trích:

Nguyên văn bởi acbossvn
Các huynh cho đệ hỏi chút: la cái CCS dịch xong chương trình ko thấy thông báo lỗi gì...nhưng khi debug lại ko được và có thông báo: cannot detect ICD type? Nghĩa là sao zaay....

vẫn có thông báo như thế kể cả khi tiểu đệ debug code cho CCS được viết trên diễn đàn này.

Bạn debug chương trình bằng CCS hay MPLAB?

Trong trường hợp MPLAB, nếu bạn không có ICD (thường là như vậy, vì ICD đâu có dễ gì mua được) thì bạn vẫn có thể debug bằng MPLAB SIM. Bạn vào mục mênu Debugger > Select Tool, chọn 2 MPLAB SIM.

Còn CCS thì tôi không dùng nên không rõ, nhưng có vẻ như nó chỉ hỗ trợ ICD hay MACH X là mấy cái debugger của riêng hãng CCS, cùng với việc liên kết với MPLAB SIM.

Thân,

namqn 04-07-2006 10:21 PM

Trích:

Nguyên văn bởi typhn
Mấy anh cho em hỏi về giao tiếp ICSP.
Có tài liệu tiếng anh nhưng em đọc ko hiểu lắm
thanks

ICSP là giao tiếp dùng để đưa chương trình mã máy và các thông tin cấu hình, dữ liệu trong EEPROM (nếu có), vào chip thông qua một chuẩn nối tiếp, nó cho phép nạp chương trình cho chip ngay trong mạch đích.

Bạn dùng chức năng tìm kiếm của diễn đàn để tìm các luồng có liên quan đến ICSP để đọc thêm.

Để sử dụng thì chỉ cần có mạch nạp hỗ trợ ICSP, mạch đích được thiết kế theo khuyến cáo của hãng Microchip, và một số chú ý mà tôi đã nói qua trong các luồng khác khi trả lời về vấn đề này.

Thân,

typhn 04-07-2006 11:29 PM

Cảm ơn anh.Em cũng hơi hiểu rồi
Mạch nạp em sử dụng là PG2C.
Nếu cắm theo chuẩn ICSP thì ta có thể nạp cho PIC khi nó ở mạch ngoài mà ko cần cắm pic vào mạch nạp nữa.
Thanks


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

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam