|
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 |
|
17-03-2006, 02:27 AM | #1 |
Đệ tử 1 túi
Tham gia ngày: Mar 2006
Bài gửi: 23
: |
Pic 18f452
Cho em hỏi về sự khác biệt giữa dòng 18Fxxx voi dong 16Fxxx. Hiện tại em đang làm project với con 18F452 nhưng chưa biết nên bắt đầu từ đâu.
|
17-03-2006, 06:43 PM | #2 |
Trưởng lão PIC bang
|
Dòng PIC18F mạnh hơn so với dòng PIC16F, nhờ độ dài từ lệnh lớn hơn (16-bit so với 14-bit), một số khối ngoại vi cũng tốt hơn. Cấu trúc của chip thì không khác gì nhau. Bạn nên bắt đầu bằng việc lấy datasheet của PIC18F452 về nghiền ngẫm.
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 |
18-03-2006, 11:14 PM | #3 |
Đệ tử 1 túi
Tham gia ngày: Mar 2006
Bài gửi: 23
: |
Cho em hỏi là trong con 18F452 thì TRISA, TRISB, TRISC nằm ở BANK nào? Vì trong datasheet của 18F452 không có ghi rõ những register này nằm ở đâu. Trong khi trong những con khác thuộc dòng 16F thì được ghi rõ ràng.
|
19-03-2006, 12:27 AM | #4 |
Trưởng lão PIC bang
|
Tất cả các thanh ghi đặc biệt (SFR) của dòng PIC18 đều nằm ở bank 15, được chọn bằng cách đặt các bit BSR<3:0> của thanh ghi BSR là '1111' (giá trị nhị phân). Tuy nhiên, dòng PIC18 có thể truy xuất các thanh ghi đặc biệt thông qua Access Bank (với bit a = 0, bạn xem thêm trong tập lệnh), khi đó không cần quan tâm tới bank vì thanh ghi chọn bank BSR sẽ không được xé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 |
20-03-2006, 02:52 AM | #5 |
Đệ tử 1 túi
Tham gia ngày: Mar 2006
Bài gửi: 23
: |
Em đang tập viết mộ chương trình đơn giản cho PIC 18f452 là làm sáng LED. Đoạn code như sau:
" list p=18f452 #include p18f452.inc ORG 0x000 GOTO start start CLRF PORTB CLRF TRISB MOVLW B'00011111' ;bật sáng LED ở vị trí từ RB0 đến RB4 MOVWF TRISB loop GOTO loop END " Em không biết có gì sai nhưng LED không sáng. Có ai chỉ dum em với. |
20-03-2006, 11:56 PM | #6 | |
Trưởng lão PIC bang
|
Trích:
MOVLW B'00011111' ;bật sáng LED ở vị trí từ RB0 đến RB4 MOVWF TRISB Hai lệnh này sẽ chuyển RB0 đến RB4 thành ngõ vào! TRISB nên sửa thành LATB hay PORTB. Cũng cần kiểm tra xem các bit cấu hình của bạn có được đặt đúng không, vì trong chương trình này bạn không đặt các bit cấu hình tường minh, theo mặc định thì chip sẽ chạy với bộ dao động RC bên ngoà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 |
|
21-03-2006, 06:08 AM | #7 |
Đệ tử 1 túi
Tham gia ngày: Mar 2006
Bài gửi: 23
: |
Vậy theo anh có thể viết như thế nào để con 18f này chạy? Cấu hình con PIC của em như sau: dùng xung 8Mhz, 2 tu 22pF nối vào crystal. Em dùng ICD2 và MPLAB để program cho con PIC này.
Em kiếm tài liệu nói về con nay mà tìm mãi không được. Em đã đọc hướng dẫn của con 16F877A nhiều lần và cũng đã làm thử tương tự nhưng kô được. Trong con 18F452 hình như không cần phải configure nó đúng không anh? Em có đọc 1 đoạn code mẫu cho con 18F452, và kô cần phải configure như 16f. Đây là đoạn code mẫu ;************************************************* ********* ;* TUT452.ASM ;************************************************* ********* ;* Microchip Technology Incorporated ;* 17 March 2003 ;* Assembled with MPASM V3.20 and MPLINK v3.20 ;************************************************* ********* ;* This program configures the A/D Module to convert on ;* A/D channel 0 (the potentiometer) and display the ;* results on the LEDS on PORTB. ;************************************************* ********* list p=18f452 ; Include file, change directory if needed include "p18f452.inc" ; Start at the reset vector Reset_Vector code 0x000 goto Start ; Start application beyond vector area code 0x002A Start clrf PORTB ;Clear PORTB clrf TRISB ;PORTB all outputs, display 4 MSB's ;of A/D result on LEDs movlw B'01000001' ;Fosc/8, A/D enabled movwf ADCON0 movlw B'00001110' ;Left justify,1 analog channel movwf ADCON1 ;VDD and VSS references movlw B'11000111' ;TMR0 prescaler, 1:256 movwf T0CON Main btfss INTCON,TMR0IF ;Wait for Timer0 to timeout goto Main bcf INTCON,TMR0IF bsf ADCON0,GO ;Start A/D conversion Wait btfss PIR1,ADIF ;Wait for conversion to complete goto Wait swapf ADRESH,W ;Swap A/D result nibbles andlw 0x0f ;Mask off lower 4 bits movwf PORTB ;Write A/D result to PORTB clrf PORTB WaitPush ;Pause while switch is pressed btfss PORTA,4 goto WaitPush movwf PORTB goto Main ;Do it again end Anh có thể viết một chương trình mẫu đơn giản (làm sáng LED) cho con PIC này dùm em được không? Hay là viết luôn 1 tutor về con nay luôn đi .Cám ơn anh nhiều |
21-03-2006, 12:38 PM | #8 |
Đệ tử 1 túi
Tham gia ngày: Mar 2006
Bài gửi: 23
: |
hờ hờ....em làm cho nó work rồi !!! . Nhưng có một điều là em phải unplug cái ICD2 ra thì nó mới work. Sau đó nó sáng cỡ một vài giây thì nó lai tắt. Nhưng khi đụng tay vào pin MCRL (pin số 1) của PIC thì nó lại sáng lại. Em kô hiểu hiện tượng này lắm. Nó chạy có vẻ kô ổn định. Chẳng biết tại sao nữa.
|
21-03-2006, 07:11 PM | #9 | |
Trưởng lão PIC bang
|
Trích:
Bạn hãy nối một điện trở khoảng 10k đến 33k từ Vdd đến chân MCLR. 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 |
|
21-03-2006, 03:35 PM | #10 |
Đệ tử 1 túi
Tham gia ngày: Mar 2006
Bài gửi: 22
: |
thực sự tôi không hiểu tại sao người ta lại dùng PIC nhiều đến thế? Thế nhưng ở miền Bắc mình có vẻ yên ả hơn. Vì tôi thấy PIC khả năng sử dụng lại code rất kém so với các con khác. Gần như mỗi con lại phải chỉnh sửa code rất vất vả. Hai nữa chíp PIC một số loại cùng tính năng lại đắt hơn Motorola. Nhưng dù sao phải công nhận rằng chíp PIC có rất nhiều loại và phục vụ được rất nhiều các ứng dụng quan trọng trong cuộc sống, và đó chính là lý do vì sao mà PIC được đứng hàng thứ 2 thế giới sau Motorola. Tôi đang làm việc với con PIC 18f2320 và 18f4320 (loại chân dán). Thực sự nó có rất nhiều tính năng hay mỗi tội đắt. Bạn nào làm về con này, hay có hướng phát triển thì chúng ta cùng cộng tác và nghiên cứu!
|
21-03-2006, 11:44 PM | #11 | |
Đệ tử 1 túi
Tham gia ngày: Mar 2006
Bài gửi: 23
: |
Trích:
Ở trường em người ta dạy con 68hc12 nhưng khi làm senior project thì em lại chọn con PIC. hic hic hic vì sao? Vì nhiều người trong khoa em biết PIC nhiều hơn ->có thể hỏi. Cái thứ 2 em co thể xin sample cho project FREE -> trên cả tuyệt vời. Trong lab em con có ICD2 programmer có sẵn cho PIC nữa. Nói chung là tất cả những thứ gì dính đến PIC là sẵn sàng. Trong khi motorola là phải mua. |
|
22-03-2006, 12:47 AM | #12 |
PIC Bang chủ
|
Đề tài thảo luận về PIC và các họ vi điều khiển, vi xử lý khác, chúng ta đã nhắc đi nhắc lại rồi. Tôi cho rằng chúng ta không nên mất thời gian vào việc này nữa.
Hàng loạt "trận chiến" đã nổ ra, bắt đầu là trận chiến http://www.diendandientu.com/diendan...ead?thread=264 Đây là trận chiến đầu tiên [17:12:57 07-07-2004] do chính anh Hùng khai mào. Trận chiến này đánh dấu sự khởi đầu cho PIC, và gần như đây là bước đầu tiên xây dựng picvietnam. Cho đến nay, nó là luồng được nhiều người viết nhất của diendandientu. Có thể cho đến nay, còn rất nhiều những vấn đề khác nữa đẻ ra, nhưng tại thời điểm đó, rất ít người biết về PIC, và cách mà ngừoi ta nói về PIC còn rất mơ hồ. Những trận chiến khác lại tiếp diễn. Nhưng đây, đây là lần đầu tiên F có ý định chuẩn bị cho một tutorial về PIC http://www.diendandientu.com/diendan...ead?thread=154 Trước đó, có thể nói PIC được đưa lên mạng để thảo luận theo cách này đây http://www.diendandientu.com/diendan...read?thread=59 Trận chiến tiếp theo khi phong trào đã sôi nổi, có lẽ từ đây bắt đầu nhiều cái hay và lý thú, đó là động lực mạnh để F xây dựng picvietnam... http://www.diendandientu.com/diendan...ad?thread=1374 Các bạn chú ý rằng, những luồng này là những luồng nằm trong số những luồng được nhiều người quan tâm nhất. Đến bây giờ, còn quan tâm không? Còn, quan tâm lớn. http://dientuvietnam.net/forums/showthread.php?t=177 Đây có thể coi là trận chiến mới nhất giữa PIC và AVR... Sau 2 năm trời, người ta vẫn tiếp tục thảo luận vấn đề này. Thảo luận để làm gì nữa? Tất cả những gì cần nói đã nói hết rồi, những con người đã và đang làm việc đã nói hết rồi. Điều tôi nghĩ rằng chúng ta nên đồng ý với nhau, đó là các bạn đã vào picvietnam, các bạn mong muốn khám phá con PIC, vậy thì chúng ta hãy làm đi thôi, học đi thôi, trao đổi đi thôi. Những thứ khác không cần quan tâm. Chúng tôi sẽ mở một luồng "Vì sao nên bắt đầu với PIC", để hướng dẫn các bạn đến với vi điều khiển, đặc biệt là PIC. Trong đó, chúng tôi sẽ không trả lời về việc vì sao không bắt đầu với các vi điều khiển khác, mà chỉ nói lý do vì sao nên bắt đầu với PIC. Hy vọng rằng các bạn thành viên có thể đóng góp để cho lý luận này ngày một vững chắc, thúc đẩy cộng đồng người dùng PIC, và phát triển các công cụ làm việc với PIC tại Việt Nam. Như vậy là đủ rồi. 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? |
22-03-2006, 02:04 AM | #13 |
Đệ tử 1 túi
Tham gia ngày: Mar 2006
Bài gửi: 23
: |
Em xin lỗi đã làm lạc chủ đề của luồng này....để tạ lỗi, em xin post cho mọi người xem 1 ct đơn giản: "làm nháy LED" mà em viết cho PIC8F452
LIST P=18F452 ;directive to define processor #include <P18F452.INC> ;processor specific variable definitions counta equ 0x20 countb equ 0x21 countc equ 0x22 org 0x0000 goto start start clrf PORTB clrf TRISB loop movlw b'11111111' movwf PORTB call delay movlw b'11110101' movwf PORTB call delay goto loop ;delay service ; T=Countc*Countb*Counta *0.5us ; T=0.5, countc=100 countb=100 counta=100 ;1 cycle = 1/4 osc, exp: 8MHZ osc -> 1cycle = 2MHZ (=0.5us) ;--------------------------------- delay movlw d'100' movwf countc ;Countc*(Countb*(Counta*(2+2)+4)+4) = Countc*Countb*Counta *0.5us delay_2 movlw d'100' movwf countb ; Countb*(Counta*(2cycles + 2cycles)+ 4cycles) delay_1 movlw d'100' movwf counta ; Counta*(2cycles + 2cycles) delay_0 decfsz counta,1 ;2 cycles goto delay_0 ;2 cycles decfsz countb,1 ;2 cycles goto delay_1 ;2 cycles decfsz countc,1 ;2 cycles goto delay_2 ;2 cycles return end Em cám ơn anh namqn nhé. Con PIC đã hoạt động ổn định khi có một con trở nối từ MCRL đến nguồn. Khi kô có con trở này thì nó chỉ chạy được khoảng 2 phút thôi. Còn khi có con trở này thì nó chạy cho đến thời điểm em viết bài này là được 10 phút rồi . Cám ơn mọi người nhiều nhé. thay đổi nội dung bởi: ahchu, 22-03-2006 lúc 02:18 AM. |
27-03-2006, 10:12 AM | #14 |
Đệ tử 1 túi
Tham gia ngày: Mar 2006
Bài gửi: 23
: |
Có ai hướng dẫn dùm em lập trình PWM với....Em muốn dùng PWM để điều chỉnh độ sáng của đèn.
|
11-04-2006, 08:06 PM | #15 | |
Trưởng lão PIC bang
|
Trích:
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 |
|
|
|