![]() |
|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#106 |
Đệ tử 4 túi
Tham gia ngày: Feb 2006
Bài gửi: 66
: |
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 được không bạn ? thay đổi nội dung bởi: newuser, 19-08-2006 lúc 06:49 PM. |
![]() |
![]() |
#107 |
Đệ tử 1 túi
Tham gia ngày: Apr 2006
Bài gửi: 19
: |
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 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 thay đổi nội dung bởi: falleaf, 02-07-2006 lúc 09:34 PM. |
![]() |
![]() |
#108 | |
PIC Bang chủ
|
Trích:
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
__________________
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? |
|
![]() |
![]() |
#109 |
Đệ tử 1 túi
Tham gia ngày: Apr 2006
Bài gửi: 19
: |
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 |
![]() |
![]() |
#110 |
Đệ tử 8 túi
|
|
![]() |
![]() |
#111 |
Nhập môn đệ tử
|
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! |
![]() |
![]() |
#112 |
Đệ tử 2 túi
Tham gia ngày: Sep 2005
Bài gửi: 32
: |
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 ?
|
![]() |
![]() |
#113 |
Nhập môn đệ tử
Tham gia ngày: Jul 2006
Bài gửi: 4
: |
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...
|
![]() |
![]() |
#114 |
Nhập môn đệ tử
Tham gia ngày: Jul 2006
Bài gửi: 4
: |
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.
|
![]() |
![]() |
#115 |
PIC Bang chủ
|
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
__________________
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? |
![]() |
![]() |
#116 |
Nhập môn đệ tử
Tham gia ngày: Jul 2006
Bài gửi: 4
: |
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. thay đổi nội dung bởi: falleaf, 04-07-2006 lúc 12:50 PM. |
![]() |
![]() |
#117 |
Đệ tử 1 túi
Tham gia ngày: Apr 2006
Bài gửi: 19
: |
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 |
![]() |
![]() |
#118 | |
Trưởng lão PIC bang
|
Trích:
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,
__________________
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 |
|
![]() |
![]() |
#119 | |
Trưởng lão PIC bang
|
Trí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,
__________________
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 |
|
![]() |
![]() |
#120 |
Đệ tử 1 túi
Tham gia ngày: Apr 2006
Bài gửi: 19
: |
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 |
![]() |
![]() |
|
|
![]() |
||||
Ðề tài | Người gửi | Chuyên mục | Trả lời | Bài mới |
TUT về USART trong PIC16F877A | mafd_47a | MPASM | 16 | 19-02-2025 05:32 AM |
TUT ve I2C ( pic16f877a ) | mafd_47a | MPASM | 28 | 28-01-2025 10:45 PM |
Lập nhóm PIC16F877A | nhh | Cơ bản về vi điều khiển và PIC | 285 | 08-03-2017 11:08 PM |
Bộ so sánh và PWM cho PIC16F877A | anhquangngai | Cơ bản về vi điều khiển và PIC | 24 | 08-09-2012 09:00 AM |
CCS C for PIC16F877A | nhh | Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) | 405 | 24-04-2008 12:00 PM |