PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

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

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 17-03-2006, 02:27 AM   #1
ahchu
Đệ 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.
ahchu vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-03-2006, 06:43 PM   #2
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
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
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 18-03-2006, 11:14 PM   #3
ahchu
Đệ 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.
ahchu vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-03-2006, 12:27 AM   #4
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
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
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-03-2006, 02:52 AM   #5
ahchu
Đệ 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.
ahchu vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-03-2006, 11:56 PM   #6
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi ahchu
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.
Với chương trình này, LED không sáng có vài nguyên nhân, nhưng khả năng gây lỗi nhiều nhất là ở các lệnh sau
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
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-03-2006, 06:08 AM   #7
ahchu
Đệ 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
ahchu vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-03-2006, 12:38 PM   #8
ahchu
Đệ 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.
ahchu vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-03-2006, 03:35 PM   #9
dohoangnam
Đệ 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!
dohoangnam vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-03-2006, 07:11 PM   #10
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi ahchu
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.
Đây là hiện tượng chân MCLR của bạn được cấu hình có chức năng reset, nhưng phần cứng của bạn lại không đặt trạng thái cho nó một cách ổn định.
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
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-03-2006, 11:44 PM   #11
ahchu
Đệ tử 1 túi
 
Tham gia ngày: Mar 2006
Bài gửi: 23
:
Trích:
Nguyên văn bởi dohoangnam
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!
Theo em nghĩ là do PIC rẻ và có những chức năng chuyên dụng hay hơn motorola. Còn motorola mạnh thì mạnh thật nhưng những chức năng chuyên dụng thì theo như mọi người nói thì không mạnh bằng PIC (cái này em chỉ hỏi về con 68hc12 thôi).
Ở 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.
ahchu vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-03-2006, 12:47 AM   #12
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
Đề 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.
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-03-2006, 02:04 AM   #13
ahchu
Đệ 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.
ahchu vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 27-03-2006, 10:12 AM   #14
ahchu
Đệ 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.
ahchu vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-04-2006, 08:06 PM   #15
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi ahchu
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.
Vậy là chúng tôi bỏ sót yêu cầu này của bạn trong 2 tuần qua. Bạn đọc phần 14.5.3 trong datasheet của 18F452 trước đi, trong đó có hướng dẫn từng bước cách thiết lập chế độ PWM của module CCP. Sau đó bạn có thể post câu hỏi nếu bạn có thắc mắc.

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
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


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


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam