![]() |
|
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 |
![]() |
#61 |
PIC Bang chủ
|
http://www.picvietnam.com/forum//showthread.php?t=5
Bạn đọc bài số 27 của F trong luồng trên, (Học PIC trong 1 ngày) và download tài liệu về kỹ thuật bảng về để tìm hiểu thêm. 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? |
![]() |
![]() |
![]() |
#62 |
Nhập môn đệ tử
Tham gia ngày: Mar 2007
Bài gửi: 2
: |
cảm ơn các bác post lên toàn các thông tin bổ ích cho 1 người mới làm quen với PIC như e. 10Q
|
![]() |
![]() |
![]() |
#63 |
Đệ tử 2 túi
Tham gia ngày: Mar 2007
Bài gửi: 45
: |
Chào các bạn trong diển dàn tui là một thành viên mới toan, tui rất yêu thích PIC và bắt đầu bằng con 16F84A. Tui chưa biết phần mền nào lập trình cho nó nhờ các bac chi giúp, mình có MPLAP IDE v7.50 nhung không biết sài nhờ các bác chỉ cho. Mình đang chờ tin của các bạn
|
![]() |
![]() |
![]() |
#64 |
Đệ tử 8 túi
|
|
![]() |
![]() |
![]() |
#65 |
Nhập môn đệ tử
Tham gia ngày: Mar 2007
Bài gửi: 5
: |
Mình mới là thành viên mới của diễn đàn và cũng mới học Pic gần đây thôi. Cho mình hỏi vấn đề này với, chương trình sau khi biên dịch thành công và đã debug bằng MPLab SIM thì nạp vào chương trình có thể chắc chắn là chương trình đó đã đúng ko. Mình đã nạp vào Pic 16f877a mà không chạy được.
Mình sử dụng mạch nạp GTP-USB , chương trình nạp là WinPic800 cám ơn nhiều nhé |
![]() |
![]() |
![]() |
#66 | |
Trưởng lão PIC bang
|
Trích:
Bạn nạp chương trình vào chip rồi mà không chạy được thì không hẳn chương trình đó sai. Bạn phải kiểm tra lại các từ cấu hình có được thiết lập đúng chưa, phần cứng đã đảm bảo những yêu cầu tối thiểu để chip có thể chạy chưa. Tốt nhất là bạn post sơ đồ mạch thử nghiệm của bạn, cùng các từ cấu hình mà bạn đã dùng. Nếu những phần đó đúng thì mới cần xem xét đến code của chương trình. 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 |
|
![]() |
![]() |
![]() |
#67 |
Đệ tử 1 túi
Tham gia ngày: Oct 2006
Bài gửi: 17
: |
các bác chi cho mình các lệnh banksel va pagesel viết như thế nào cho dúng
co phải như vầy ko? banksel 0; chọn bank 0 pagesel 0; chọn trang 0, cho mình hỏi thêm tí nữa là khi mình dùng lệnh call hay goto mình chỉ quan tâm đến page của bộ nhớ chuơng trình thôi (nếu vượt 2k) ko quan tâm đến bank thanh ghi à còn khi thao tác các lệnh tiếp theo thì như thế nào ko cùng bank, hoặc page vd: call congviec1 ..... ..... congviec1: ............ .....; các cộng việc ở day khac bank hoặc khác page thì sau fai chọn bank hoặc page lại hả xin cac bác chỉ giúp thanks |
![]() |
![]() |
![]() |
#68 |
Trưởng lão PIC bang
|
Tôi nhớ rõ ràng là tôi đã viết về pagesel và banksel, nhưng tìm mãi không ra (đến giờ tôi spam được gần 700 lần rồi, nên khó tìm).
Cú pháp của các directive đó rất đơn giản, bạn dùng tên của ô nhớ (thanh ghi) với banksel, và dùng nhãn với pagesel. Ví dụ, banksel PORTB, sẽ sinh ra các lệnh hợp ngữ cần thiết để chọn bank cho thanh ghi PORTB. Còn pagesel ctcon1 sẽ sinh ra các lệnh hợp ngữ cần thiết để thiết lập PCLATH thích hợp cho lệnh chuyển điều khiển đến ctcon1 nằm sau đó. pagesel liên quan đến trang bộ nhớ chương trình, còn banksel liên quan đến trang của bộ nhớ dữ liệu. Hai phần này nói chung không có liên quan gì với nhau. Tổng quát, nếu sắp chuyển điều khiển (bằng call hay goto) đến một đoạn mã lệnh nằm khác trang bộ nhớ chương trình thì phải chuyển trang, còn nếu sắp truy xuất một ô nhớ dữ liệu nằm ở bank khác với hiện tại thì phải chuyển bank. (Tôi viết vừa tiếng Anh vừa tiếng Việt để bạn dễ phân biệt) 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 |
![]() |
![]() |
![]() |
#69 |
Đệ tử 1 túi
Tham gia ngày: Oct 2006
Bài gửi: 17
: |
cám ơn bạn namqn nhiều, cho hỏi thêm tí nữa nghe
(vì mình hơi cậm tiêu hehe). lệnh pagesel ctcon1 rồi mới tới lệnh gọi chuơng trình con 1 phải ko? Code:
cd: ............ call ctcon1 ........ ............ call ctcon2 ......... pagesel ctcon1 ctcon1: .......... ....... ret ;dừng ct con 1 pagesel ctcon2 ctcon2: .......... .......... ret ;dừng ct con 2 bây giờ thì mình hiểu thêm đuợc tí, nhờ có cầu trúc banksel, pagesel mà đơn giản hơn nhiều khi chọn bank hoặc page. thanks thay đổi nội dung bởi: namqn, 04-05-2007 lúc 01:39 AM. |
![]() |
![]() |
![]() |
#70 | |
Trưởng lão PIC bang
|
Trích:
Code:
cd: ............ pagesel ctcon1 call ctcon1 ........ ............ pagesel ctcon2 call ctcon2 ......... ctcon1: .......... ....... ret ;dừng ct con 1 ctcon2: .......... .......... ret ;dừng ct con 2
__________________
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 |
|
![]() |
![]() |
![]() |
#71 |
Đệ tử 1 túi
Tham gia ngày: Oct 2006
Bài gửi: 17
: |
cám ơn bạn namqn nhiều, bây giờ thì mình hiểu ra rùi.
|
![]() |
![]() |
![]() |
#72 |
Đệ tử 1 túi
Tham gia ngày: Nov 2006
Bài gửi: 25
: |
![]() Bạn namqn
cho mình hỏi 1 tí trong Datasheet PIC 16F877a trang 38 ở ví dụ EXAMPLE 3-4 ở dòng 3 từ dưới đếm lên XORLW 0X03 đúng ra nó phải là XORLW 0X04 không biết tôi nghĩ như vậy có đúng không ? xin bạn chỉ dùm sau đây là nguyên bản của Datasheet -------------------------------------------------------------------------- EXAMPLE 3-4: WRITING TO FLASH PROGRAM MEMORY -------------------------------------------------------------------------- ; This write routine assumes the following: ; ; 1. A valid starting address (the least significant bits = ‘00’)is loaded in ADDRH:ADDRL ; 2. The 8 bytes of data are loaded, starting at the address in DATADDR ; 3. ADDRH, ADDRL and DATADDR are all located in shared data memory 0x70 - 0x7f ; BSF STATUS,RP1 ; BCF STATUS,RP0 ; Bank 2 MOVF ADDRH,W ; Load initial address MOVWF EEADRH ; MOVF ADDRL,W ; MOVWF EEADR ; MOVF DATAADDR,W ; Load initial data address MOVWF FSR ; LOOP MOVF INDF,W ; Load first data byte into lower MOVWF EEDATA ; INCF FSR,F ; Next byte MOVF INDF,W ; Load second data byte into upper MOVWF EEDATH ; INCF FSR,F ; BSF STATUS,RP0 ; Bank 3 BSF EECON1,EEPGD ; Point to program memory BSF EECON1,WREN ; Enable writes BCF INTCON,GIE ; Disable interrupts (if using) MOVLW 55h ; Start of required write sequence: MOVWF EECON2 ; Write 55h MOVLW AAh ; MOVWF EECON2 ; Write AAh BSF EECON1,WR ; Set WR bit to begin write NOP ; Any instructions here are ignored as processor ; halts to begin write sequence NOP ; processor will stop here and wait for write complete ; after write processor continues with 3rd instruction BCF EECON1,WREN ; Disable writes BSF INTCON,GIE ; Enable interrupts (if using) BCF STATUS,RP0 ; Bank 2 INCF EEADR,F ; Increment address MOVF EEADR,W ; Check if lower two bits of address are ‘00’ ANDLW 0x03 ; Indicates when four words have been programmed XORLW 0x03 ; BTFSC STATUS,Z ; Exit if more than four words, GOTO LOOP ; Continue if less than four words |
![]() |
![]() |
![]() |
#73 | |
Trưởng lão PIC bang
|
Trích:
http://www.picvietnam.com/forum/showthread.php?t=934 Phần code ví dụ trong datasheet đó đã được xác định là có lỗi. 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 |
|
![]() |
![]() |
![]() |
#74 |
Đệ tử 1 túi
Tham gia ngày: Oct 2006
Bài gửi: 19
: |
Em có vài thắc mắc(mới học PIC được 1 buổi tối):
1/Em thấy pic16F877a PORTA chỉ có từ RA0-->RA4, em muốn dùng hết 8bit PORTA thì dùng chân nào nữa? có phải AN5-->AN7 ko? 2/Em đang viết chương trình chạy 1 dãy led (32led),chương trình thế này: có nhiều mode chạy led, khi bắt đầu thì chọn ngẫu nhiên 1 mode chạy, trong quá trình chạy nếu nhấn reset MRST thì pic reset lại và nó lại chọn ngẫu nhiên 1 mode khác... viết bằng ASM. Nhưng hiện em đang bí phần tạo số ngẫu nhiên, xin hỏi ASM cho pic có cách nào tạo được số ngẫu nhiên ko? nếu dùng C thì sao? 3/Anh nào viết 1 tut về sử dụng chức năng Analog của portA đi |
![]() |
![]() |
![]() |
#75 | ||
Trưởng lão PIC bang
|
Trích:
2/ Ở www.piclist.com có các đoạn code hợp ngữ để tạo số ngẫu nhiên, trang sau đây có các đoạn code để tạo số ngẫu nhiên 8-bit: http://www.piclist.com/techref/microchip/rand8bit.htm Các trình biên dịch C thường có hàm sinh số ngẫu nhiên, nếu viết chương trình bằng C thì chỉ cần dùng hàm đó. 3/ Dưới đây là các bước thực hiện để sử dụng module A/D (được dịch và chú thích thêm từ datasheet của PIC16F877A) Trích:
Nếu cần thiết, bạn có thể tự viết đoạn code và post lên đây để các thành viên khác có thể xem xét giúp 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 |
||
![]() |
![]() |
![]() |
|
|
![]() |
||||
Ðề tài | Người gửi | Chuyên mục | Trả lời | Bài mới |
bác fall cho em hỏi tý về CCSC tại sao lại "Out of ROM" sớm thế? | MoH | Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) | 12 | 20-10-2006 11:31 AM |
Hội thảo: "Tầm nhìn dientuvietnam 2006" | falleaf | Đóng góp ý kiến | 2 | 03-08-2006 06:48 PM |
Ý kiến về "Tài liệu hướng dẫn PIC - Tiếng Việt" | baoquyen | Đóng góp ý kiến | 8 | 04-12-2005 10:04 PM |
"Mechatronics handbook " | elecminh | Điều khiển | 3 | 07-09-2005 12:42 AM |
Nộp bài tập "Hoc PIC trong 1 ngày" | teo | Cơ bản về vi điều khiển và PIC | 5 | 02-06-2005 01:11 AM |