PDA

View Full Version : 8051 và PIC


newuser
19-08-2006, 06:26 PM
Đối với họ 8051 thì các bạn và tôi đã được học trong trường rồi, nhưng khi bắt đầu với một họ Vi điều khiển mới như PIC thì ai cũng có những bỡ ngỡ nhất định, có rất nhiều những câu hỏi, đại loại như:chọn bank thanh ghi và định trang chương trình là cái chi chi, sao 8051 không có?, định địa chỉ gián tiếp như thế nào?, PIC mid-range có ít lệnh quá, làm sao đây? ... Và tôi nghĩ sẽ thuận lợi hơn cho các bạn đã quen với 8051 là chúng ta học và so sánh để tìm điểm tương đương (chắc là có rất nhiều bạn trong diễn đàn đã tiếp cận với PIC theo cách này và sẽ sẵn sàng giúp đỡ những người mới học như chúng ta). Tôi mở chủ đề này với mục đích được cùng các bạn tiếp cận nhanh hơn với PIC vì tôi cũng là người mới học, ta sẽ chọn PIC6F877A để thảo luận nhé, vì đây là con PIC tiêu biểu cho dòng PIC Mid-range và được thành viên diễn đàn quan tâm nhất.

newuser
19-08-2006, 06:44 PM
Điểm đầu tiên là cách định trang chương trình. Ở 8051, khi cần gọi (CALL) Subroutine hay nhảy đến một nhãn nào đó, ta có thể dùng các lệnh như LCALL hay LJMP là có thể chuyển đến bất kỳ vị trí nào trong bộ nhớ chương trình. Còn P16F877A thì có khác, bộ nhớ chương trình chia làm 4 pages, mỗi trang 2K bộ nhớ chương trình, trong mã lệnh của các lệnh GOTO hay CALL thì địa chỉ chỉ có 11 bit tương ứng với 2^11=2048 địa chỉ nhảy. Như thế PC không thể trỏ đến đủ 8K địa chỉ của bộ nhớ chương trình được. Lúc mới tập viết chương trình PIC, tôi rất sợ chương trình vượt quá ... 2K :D
theo datasheet của PIC6F877A, ta có thể chọn trang chương trình bởi các bit PCLATH<4:3>, lý thuyết rõ ràng là như thế nhưng khi viết chương trình thì mới thấy sao lắm nhiêu khê vì cứ mỗi lần CALL hay GOTO thì lại phải pagesel Label một lần, hoặc là phải mở file .lst lên xem chương trình nó thuộc trang nào? và thế là mỗi khi thêm chương trình ta lại phải kiểm tra ...
Các bạn có phương án gì hay hơn không, để việc viết chương trình nhẹ nhàng hơn như lúc ta viết cho 8051 ý ?

newuser
03-10-2006, 09:59 AM
uhm...không có bạn nào hưởng ứng chủ đề này ah??? Trong quyển My first project (không rõ tác giả) dành hẵn một phần nói về PCLATH và một số lỗi có thể gặp với PCLATH, ở đây mình xin lược dịch lại để các bạn mới học tham khảo.
trước tiên, các bạn hãy nhớ bộ đếm chương trình PC sử dụng giá trị có trong hai thanh ghi PCL và PCH. Trong đó PCH sẽ được tham chiếu giá trị từ PCLATH (Program Counter Latch High).
Nếu chương trình bạn viết vượt quá 2K của bộ nhớ chương trình, có thể sẽ xuất hiện thông báo sau khi biên dịch chương trình:
"Message...>Crossing page boundary-ensure page bits are set"
thông báo trên xuất hiện nếu bạn CALL hay GOTO một Subroutine nằm ở những trang chương trình khác nhau và sẽ có thể vượt quá khả năng trỏ đến của bộ đếm chương trình (mã lệnh của hai lệnh trên có 11 bit dùng định địa chỉ trỏ đến tương ứng với 2048 địa chỉ nhảy khác nhau).Nếu thanh ghi PCLATH không được thiết lập đúng, chương trình của bạn sẽ không thể hoạt động đúng như là bạn nghĩ.
bạn xem đoạn mã ví dụ sau:
ORG 0x00
LOOP CALL DELAY
GOTO LOOP
.
.
.
ORG 0X0800
ERROR GOTO ERROR
NOP
NOP
NOP
DELAY NOP
NOP
RETURN
địa chỉ của nhãn DELAY bây giờ là 0804h và nó sẽ không được chương trình gọi đến dù có lệnh CALL DELAY ở trên. Tại sao thế? Ta xem:
0804h=0000 1000 0000 0100b
như vậy ta cần ít nhất là 12 bit cho thông tin địa chỉ: 1000 0000 0100
tuy nhiên trong mã lệnh của lệnh CALL thì chỉ có không gian 11 bit dùng định địa chỉ mà thôi (10 0xxx xxxx xxxx), như thế địa chỉ 0804h trở thành 0004h do bị khuyết mất bit có nghĩa lớn nhất và thông tin địa chỉ 0004h được dùng cho lệnh CALL. Thế là PCLATH bắt đầu có lý do để mà tồn tại!
Câu hỏi đặt ra vậy làm cách nào để đoạn mã trên làm việc? Tất cả những gì bạn cần làm là thiết lập PCLATH cho đúng với trang chương trình (Chi tiết về cách thiết lập bạn tham khảo datasheet nhé). Có nhiều cách và đây là một trong số những cách đó, sử dụng chỉ lệnh ASM cho phép lấy 8 bit cao của địa chỉ ROM:
MOVLW HIGH(DELAY) ;W=08H
MOVWF PCLATH ;PCLATH=0000 1000B
Đoạn mã cũ được sửa lại như sau:
ORG 0x00
LOOP MOVLW HIGH(DELAY) ;W=08H
MOVWF PCLATH ;PCLATH=0000 1000B
CALL DELAY
GOTO LOOP
.
.
.
ORG 0X0800
ERROR GOTO ERROR
NOP
NOP
NOP
DELAY NOP
NOP
RETURN
Lúc này chương trình đã thực sự làm việc đúng như ý muốn?

newuser
03-10-2006, 10:19 AM
Ta biết rằng nhãn LOOP ở đỉa chỉ 0000h và nhãn DELAY ở địa chỉ 0804h, cả hai lệnh CALL và GOTO đều sử dụng đến nội dung các bit PCLATH<4:3>
Vậy thì sau khi thiết lập PCLATH, thực thi xong chương trình DELAY, lệnh GOTO LOOP sẽ được thực thi? Câu trả lời là KHÔNG! Tại sao vậy?
Để lệnh GOTO LOOP hoạt động đúng thì địa chỉ trỏ đến của lệnh này phải là 00h, tuy nhiên do giá trị của PCLATH vẫn là 0000 1000, điều này có nghĩa là lệnh GOTO LOOP sẽ trỏ đến địa chỉ 0800h chứ không phải là 0000h như ta mong muốn!Sửa chữa? Ta có thể Reset giá trị PCLATH trước khi quay trở về từ chương trình con như thế này:
ORG 0x00
LOOP MOVLW HIGH(DELAY) ;W=08H
MOVWF PCLATH ;PCLATH=0000 1000B
CALL DELAY
GOTO LOOP
.
.
.
ORG 0X0800
ERROR GOTO ERROR
NOP
NOP
NOP
DELAY NOP
NOP
CLRF PCLATH
RETURN

bạn hãy yên tâm là chương trình của bạn sẽ quay về đúng chỗ vì 13 bit PC đã được cất vào ngăn xếp trước đó, khi RETURN, 13 bit này được trả lại cho PC và PCLATH chẳng liên quan gì đến việc này (datasheet có nói đó: Nội dung PCLATH không đổi khi quay trở về từ ngắt và chương trình con.)
Trên đây là phần lược dịch của mình, do trình độ Anh ngữ và chuyên môn hạn hẹp nên có thể có vài từ ngữ chuyên môn không dịch đúng hoặc không hiểu đúng-->dịch sai.Còn rất nhiều những vấn đề khác mong được các bạn viết bài hưởng ứng, để những NEWUSER như mình có dịp học hỏi!

spirit
19-10-2006, 07:22 PM
Cách tốt nhất để xem sự khác nhau giữa 8051 và Pic là download datasheet của pic về và mở quyển sách "Vi xử lí" của tác giả Hồ Trung Mỹ(bán ở đại học Bách Khoa Tphcm) ra mà xem.
Theo mình biết thì có 1 số những điểm khác sau :
1> Bank thanh ghi:bình thường đối với 8051 ta chỉ sử dụng bank 0 là đủ rồi (trừ trường hợp biến quá nhiều) còn đối với Pic việc cần thiết chuyển bank thanh ghi thích hợp đối với các thanh ghi
2> Timer không có sự khác nhau mấy có chăng chỉ là thanh ghi thiết lập mà thôi
3> Watchdog Timer bất kì con vi điều khiển nào cũng có nhưng thấy Pic nói nhiều nhất(ý kiến chủ quan)
4> Địa chỉ vector ngắt của Pic luôn luôn và chỉ một : 0x04 còn 8051 mỗi ngắt có 1 vector riêng
5> Stack của Pic chỉ có 8 level do đó không có các lệnh Push,Pop như 8051
Và cần lưu ý điều này khi sử dụng ngắt,lạnh call,goto tránh trường hợp tràn Stack.
6> Pic có ít lệnh hơn(35 lệnh) nên tích hợp nhiều chức năng bên trong hơn (ADC,PSP,CCP,PWM...).Do Pic có ít lệnh nên viết chương trình cho Pic mang tính nghệ thuật hơn.
7> Rom của Pic chia làm nhiều trang mỗi trang 256 byte do PCL quản lí từng trang và PCLATH quản lí vị trí trang do đó cần cẩn thận sử dụng bảng tránh trường hợp 1 phần bảng nằm ở trang này phần còn lại nằm ở trang khác

Trên đây là ý kiến chủ quan của mình xin các cao thủ đóng góp thêm

namqn
20-10-2006, 10:12 PM
Cách tốt nhất để xem sự khác nhau giữa 8051 và Pic là download datasheet của pic về và mở quyển sách "Vi xử lí" của tác giả Hồ Trung Mỹ(bán ở đại học Bách Khoa Tphcm) ra mà xem.
Theo mình biết thì có 1 số những điểm khác sau :
1> Bank thanh ghi:bình thường đối với 8051 ta chỉ sử dụng bank 0 là đủ rồi (trừ trường hợp biến quá nhiều) còn đối với Pic việc cần thiết chuyển bank thanh ghi thích hợp đối với các thanh ghi
2> Timer không có sự khác nhau mấy có chăng chỉ là thanh ghi thiết lập mà thôi
3> Watchdog Timer bất kì con vi điều khiển nào cũng có nhưng thấy Pic nói nhiều nhất(ý kiến chủ quan)
4> Địa chỉ vector ngắt của Pic luôn luôn và chỉ một : 0x04 còn 8051 mỗi ngắt có 1 vector riêng
5> Stack của Pic chỉ có 8 level do đó không có các lệnh Push,Pop như 8051
Và cần lưu ý điều này khi sử dụng ngắt,lạnh call,goto tránh trường hợp tràn Stack.
6> Pic có ít lệnh hơn(35 lệnh) nên tích hợp nhiều chức năng bên trong hơn (ADC,PSP,CCP,PWM...).Do Pic có ít lệnh nên viết chương trình cho Pic mang tính nghệ thuật hơn.
7> Rom của Pic chia làm nhiều trang mỗi trang 256 byte do PCL quản lí từng trang và PCLATH quản lí vị trí trang do đó cần cẩn thận sử dụng bảng tránh trường hợp 1 phần bảng nằm ở trang này phần còn lại nằm ở trang khác

Trên đây là ý kiến chủ quan của mình xin các cao thủ đóng góp thêm
4> Tùy loại PIC: PIC10F không hỗ trợ ngắt, PIC12 (lệnh 14-bit) và PIC16 có 1 vectơ ngắt, PIC18 có 2 vectơ ngắt.
5> stack của PIC là hardware stack, PIC16 có 8 mức, PIC18 có 31 mức. stack của 8051 là software stack.
6> Sự khác biệt giữa kiến trúc RISC và CISC.
7> Chỉ những PIC thuộc dòng cơ bản mới có Flash được phân trang, PIC18 có không gian địa chỉ Flash phẳng, không có vấn đề về phân trang (dùng các lệnh truy xuất bảng có thể truy xuất toàn bộ không gian địa chỉ Flash).

Thân,

zoos
17-11-2006, 01:20 AM
Mình là người mới học Pic, mình từng dùng qua 89C51, đối chiếu qua thấy có nhiều chỗ khó hiểu. Đọc phần datasheet của pic16F877A, phần tổ chức bộ nhớ thấy nó có 4 Bank, nhưng tổ chức trên từng Bank khá lộn xộn (ý kiến chủ quan thui) không hiểu có dụng ý gì, có 1 số thanh ghi trùng lại. VD: PORTB có ở bank 0 và bank 3, PCLATH có cả ở 4 bank... Vậy lúc dùng mình thanh ghi trên bank nào cũng như nhau à? Nếu như nhau sao lại chia ra trên các bank như thế?

Các lệnh của Pic cũng dài dòng hơn, lại không mềm dẻo như 89C51. Cách gọi hàm còn có chuyện để ý coi bộ nhớ có sang trang chưa. Các ngắt tập trung vô 1 chỗ. Cảm nhận đầu tiên của mình là Pic tổ chức không hợp lí như 89 :( (nói xấu PIC nhiều quá, không biết có bị mắng cho không).

Mình nghĩ nếu lập trình pic bằng hợp ngữ có nên tạo một số lệnh thêm cho công việc dễ dàng hơn (bằng cách viết chương trình xử lí file asm). VD: lệnh mov porta,d'10' tự động chuyển thành movlw d'10' và movwf porta, tạo cách tự điều chỉnh khi gọi hàm ...

ntc
17-11-2006, 11:44 AM
phần tổ chức bộ nhớ thấy nó có 4 Bank, nhưng tổ chức trên từng Bank khá lộn xộn (ý kiến chủ quan thui) không hiểu có dụng ý gì, có 1 số thanh ghi trùng lại. VD: PORTB có ở bank 0 và bank 3, PCLATH có cả ở 4 bank... Vậy lúc dùng mình thanh ghi trên bank nào cũng như nhau à? Nếu như nhau sao lại chia ra trên các bank như thế?


Các thanh ghi thường được sử dụng được đặt trên cả 4 bank giúp cho quá trình thao tác với từng thanh ghi được dễ dàng hơn, vì khi ở bất cứ bank nào vẫn thao tác với thanh ghi đó được, khỏi phải chuyển qua chuyển lại như trong trường hợp có 1 số thanh ghi chỉ được đặt ở 1 bank.

Các lệnh của Pic cũng dài dòng hơn, lại không mềm dẻo như 89C51

Mình chưa hiểu từ "dài dòng" và "mềm dẻo" bạn dùng ở đây có ý nghĩa gì, nhưng mình thấy tập lệnh của PIC vẫn đủ xài cho mọi trường hơp trong thực tế. Bằng chứng là người ta vẫn có thể xây dựng được những trình biên dịch bằng ngôn ngữ C dành cho PIC.

Cách gọi hàm còn có chuyện để ý coi bộ nhớ có sang trang chưa.

Cái này đã được MPLAB hỗ trợ bằng các lệnh như pagesel, banksel, ...

Mình nghĩ nếu lập trình pic bằng hợp ngữ có nên tạo một số lệnh thêm cho công việc dễ dàng hơn (bằng cách viết chương trình xử lí file asm). VD: lệnh mov porta,d'10' tự động chuyển thành movlw d'10' và movwf porta, tạo cách tự điều chỉnh khi gọi hàm ...


Cái này có cũng được, không có cũng được, và cũng đã được hỗ trợ. Bạn đọc thêm các tài liệu về MPLAB để biết thêm.

Việc tổ chức, bố trí bộ nhớ, tập lệnh, ... còn phụ thuộc vào nhiều yếu tố khác nữa trong phần cứng của PIC như kiến trúc của vi điều khiển (RISC và CISC), phương thức mã hóa lệnh (số bit mã hóa là cố định, giải thích tại sao tập lệnh của PIC không có lệnh "mov", hay một số lệnh khác như 89), ...

Bạn cứ đọc thêm nhiều nhiều một chút thì sẽ thấy rõ ràng hơn và lí giải được sự khác biệt giữa 89 và PIC.

:)

zoos
17-11-2006, 09:19 PM
Cám ơn bạn đã giải thích cho mình.

Theo mình thấy hình như PIC hi sinh độ phức tạp lập trình để tối ưu hóa các tính năng. Đúng là mọi việc làm trên 89 đều làm được trên pic, (chỉ mỗi tội viết chương trình dài gần gấp đôi thôi, có chương trình 89 mình viết 10 trang, giờ để chuyển mã sang PIC nó sẽ thành 20 trang, hic).

Mình nghĩ việc thêm hàm để hỗ trợ trong quá trình lập trình là cần thiết. Lập trình hợp ngữ bản thân nó đã là phức tạp rồi, chỗ nào đơn giản đi được thì nên đơn giản. Với lại, có khi nào bạn gọi hàm mà không chỉnh cho nó đúng trang không? Có khi nào chuyển giá trị từ port này sang port khác mà không xài thanh ghi trung gian W? Có khi nào xuất port mà không cần về đúng thanh ghi không?

Nói ngoài lề 1 chút, có chuyện gì khó đâu, khó chỉ là do nó gồm quá nhiều cái dễ gộp lại. Vì thế khi nhìn vào tập lệnh của pic, việc đầu tiên mình nghĩ là phải thêm vào nếu muốn xài hợp ngữ lâu dài. Bạn có đồng ý với mình không?

Mình nghĩ những bạn chuyển từ 89 sang sẽ thích chuyện này. Sao không thích được khi viết dễ dàng như với 89 mà lại có phần tính năng mới của Pic.

Mình đã đọc một số bài trong này nhưng vẫn không tìm được hướng dẫn để thay đổi hay thêm lệnh trong MPLAB. Bạn có thể giúp mình không?

PS: Mình dù sao vẫn là người mới tiếp xúc lần đầu với Pic, mình chỉ mới tìm hiểu nó được tổng cộng có 3 ngày (mới đốt mất có 1 PIC:( =75K), nên những điều mình viết chỉ là cảm nhận của bản thân, nếu có sai gì cơ bản quá, các bạn bỏ qua cho mình. Thanx.

ntc
18-11-2006, 04:32 PM
Mình đã đọc một số bài trong này nhưng vẫn không tìm được hướng dẫn để thay đổi hay thêm lệnh trong MPLAB. Bạn có thể giúp mình không?


Cài MPLAB vào máy, và tìm hiểu thêm trong phần help.

http://www.picvietnam.com/forum//showthread.php?t=149

Ngoài ra có thể tham khảo thêm trong bài viết ở luồng này.

http://ww1.microchip.com/downloads/e...Doc/33014J.pdf

"MPASM Assembler, MPLINK Object Linker, MPLIB Object Librarian User's Guide". Đây là một tài liệu hưu ích cho những vấn đề của bạn.

Mình nghĩ những bạn chuyển từ 89 sang sẽ thích chuyện này. Sao không thích được khi viết dễ dàng như với 89 mà lại có phần tính năng mới của Pic.


Vấn đề là hiểu được những đặc tính của từng vi điều khiển, chứ theo mình, nếu chuyển sang ngôn ngữ lập trình C thì lập trình cho 89, PIC hay những vi điều khiển khác đều như nhau.

Ý bạn muốn san lấp những khoảng cách giữa PIC và 89? Không muốn thay đổi những thói quen, những thuật toán,... khi lập trình cho 89 để áp dụng cho PIC?

Đúng, điều này sẽ tao ra những thuận lợi khi tiếp cận với PIC sau khi đã có được những kiến thức và kĩ năng tích lũy được sau quá trình làm việc với 89. Nhưng mình có cảm giác đây là một giải pháp chấp vá và tạm thời, và mình nghĩ, nếu tiếp tục thực hiện theo giải pháp này, bạn sẽ không hoàn toàn cảm thấy thực sự tự tin, không thực sự cảm thấy mình làm chủ được một công cụ mới, do những thói quen và những kĩ năng mà bạn đã tích lũy được trước đó.

Sao bạn không thử quên hết mọi thứ về 89 trong 1, 2 ngày để tiếp xúc với PIC, biết đâu sẽ ngộ ra những chân lí mới. :D. Phương pháp này có vẻ giống với phương pháp mà mấy phim kiếm hiệp hay đề cập, tự phế võ công cũ để luyện võ công mới. Nhưng mình thấy cũng có cái lí của nó. :D

Mình chưa đủ trình độ để phán xét những suy nghĩ của bạn là đúng hay sai, nên làm hay không nên làm, nhưng mình nghĩ, đã có những phương pháp khác giúp bạn xan lấp những khoảng cách giữa 89 và PIC, vậy tại sao cứ phải băn khoăn hoài việc làm thế nào để xài PIC như xài 89. Nên để thời gian đó để phát huy được những tính năng nổi trội của từng dòng vi điều khiển thì hơn, ví dụ như, xây dựng những module ứng dụng mới, dựa trên những ưu điểm về cấu trúc phần cứng của một vi điều khiển.

PS: Mình dù sao vẫn là người mới tiếp xúc lần đầu với Pic, mình chỉ mới tìm hiểu nó được tổng cộng có 3 ngày (mới đốt mất có 1 PIC =75K), nên những điều mình viết chỉ là cảm nhận của bản thân, nếu có sai gì cơ bản quá, các bạn bỏ qua cho mình. Thanx.


Mình cảm thấy hơi bất ngờ về những nhận định của bạn sau 3 ngày tiếp xúc với vi điều khiển PIC. Điều đó chứng tỏ bạn có những kiến thức và kĩ năng vững vàng về 89.

Mình vẫn muốn trao đổi thẳng thắn, trên tinh thần học hỏi, khỏi phải rào trước đón sau.

:)

Thân.

zoos
20-11-2006, 11:57 AM
Mình có xem bài theo link bạn đưa, thấy trước đây (cũng hơn năm rồi) cũng có người định viết macro, anh Falleaf cũng định xây dựng thành chuẩn, nhưng sau thì không thấy nói gì nữa. Sắp tới mình sẽ phải làm việc nhiều với Pic nên sẽ xây dựng 1 số macro để viết cho dễ dàng hơn. Nếu cái đó có ích với diễn đàn thì mình sẽ đưa lên cho mọi người xem và sửa giúp mình. Các bạn thấy có được không?

ntc
21-11-2006, 09:54 AM
Tất nhiên là rất có ích. Rất hoan nghênh ý tưởng của bạn.

Bạn nên mở một luồng riêng để post các macro này lên, mọi người sẽ cùng góp ý và xây dựng cho hoàn thiện.

Nên chú thích thật rõ ràng, hoặc tốt nhất là viết một bài báo cáo ngắn gọn giải thích các chi tiết trong macro.

pham_dinh_hung83
16-12-2006, 03:18 AM
Em nghĩ bác nào làm pic cũng đã qua 89, em cũng cùng quan điểm là nên tập trung vào 1 cái mới, tạm quên 89, vì ít nhiều 89 cũng cho ta cách tư duy về 1con vi xử lí.
Còn giải quyết vấn đề maco tại sao ko dùng C nhỉ, sao cứ phải là asm hả các bác.
Tất nhiên vấn đề ở chỗ nhiều người đã làm được em nghĩ là mình sẽ làm được.

So sánh là cách học rất tốt, em cũng là người bắt đầu với pic rất mong bác Newuser chỉ bảo thêm, cũng như các cao thủ khác như bác nam chẳng hạn. Các bác nói tiếp sự khác nhau của nó đi chứ cụ thể là time chảng hạn,hay ngắt em thấy người ta bảo ngắt trong pic hay hơn 89, 89 chỉ ngắt sườn thấp, còn pic ngắt theo sự kiện đúng ko các bác.
Tiểu đệ trình độ nông cạn vài lời rông dài mong các cao thủ lượng thứ.

ntc
16-12-2006, 08:15 AM
Không biết zoos viết macro tới đâu rồi. :D

Thêm một góp ý nho nhỏ, bạn thử vào phần help của MPLAB, gõ một số từ khóa như: BZ, BNZ, BC, ... DE, DA, ... xem thử kết quả như thế nào.

:D

falleaf
16-12-2006, 09:08 AM
Mình có xem bài theo link bạn đưa, thấy trước đây (cũng hơn năm rồi) cũng có người định viết macro, anh Falleaf cũng định xây dựng thành chuẩn, nhưng sau thì không thấy nói gì nữa. Sắp tới mình sẽ phải làm việc nhiều với Pic nên sẽ xây dựng 1 số macro để viết cho dễ dàng hơn. Nếu cái đó có ích với diễn đàn thì mình sẽ đưa lên cho mọi người xem và sửa giúp mình. Các bạn thấy có được không?

Nếu bạn muốn phát triển dự án MACRO cho picvietnam, mình xin hoàn toàn hoan nghênh, và xin bạn sử dụng box MPASM để phát triển dự án này.

NTC sẽ phụ trách hỗ trợ bạn, vì NTC làm mod box này.

Chúc vui

hieulongan039
12-03-2007, 07:31 PM
thay các bác thảo luân sôi nổi quá nên mình cũng muốn tham gia 1 tí. hồi trước mình làm việc với 89 thôi nhưng mà mình thấy nó ko ổn định lắm, nên khi thấy có diển dàn PICvietnam là mình nhào vô tham gia ngay, hiên mình cũng chi dang họi hỏi thôi nên chưa dám nói nhiều, nhưng mình thấy tính ưu việt nhất của PIC là vấn đề ổn định, vì vậy vấn đề ko phải là khó hay dễ mà là vấn đề VI xử lý phải chạy ổn định và nhiều tính năng.

zoos
13-03-2007, 06:57 PM
Thời gian nhanh quá, mới đó đã 4 tháng rồi. Hồi dự định viết macro cho pic là lúc đang chọn đề tài tốt nghiệp, chắc rằng mình sẽ sử dụng Pic để làm đề tài và xài Asm. Sau khi chọn làm máy đo, giao tiếp USB ngồi đọc tài liệu mới hoảng hồn, cái đống lằng nhằng nào packed nào endpoint này mà Asm chắc viết xong thành thần tiên mất ... Thế là bỏ ý định , quay qua xài CCS, cũng áy náy lắm nhưng tự lượng sức mình ... Nói thì dễ thật ...

Theo ý mình thì macro có khiếm khuyết, do nó là việc sao chép lại những đoạn code, dùng chương trình con sẽ làm code ngắn hơn. Vì vậy macro sẽ bị hạn chế, chỉ ứng dụng như 1 kiểu viết tắt, không làm code tốt hơn.

Giờ bàn về 89 hay Pic có lẽ hơi thừa. Pic giờ kiếm đâu cũng có, chức năng phong phú (ADC, USB, I2C,.. mấy cái đó bên 89 vẫn có nhưng kiếm IC hơi bị khó). Tài liệu thì picvietnam.com là cái quá tốt rồi, chỉ mỗi tội dạy trong trường học (của mình) vẫn dùng 89 thôi (nhưng những đề tài bắt đầu sang Pic cả). Nói cho đến cùng thì chẳng biết Pic hay 89 tốt hơn nhưng hiện giờ, dùng Pic có nhiều điều kiện hỗ trợ hơn.

21071060
11-12-2008, 12:03 PM
Các bạn ơi !bạn nào biết nhiều về vi điều khiển(cách lập trinh nó) hãy chỉ cho tôi với .Con 8051 lập trình ra sao?nếu bạn có thì hãy up lên cho mình các cách lập trình nó nhé. Thank you!