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 22-05-2006, 09:01 PM   #31
newuser
Đệ tử 4 túi
 
Tham gia ngày: Feb 2006
Bài gửi: 66
:
P16F84A không giao tiếp song song được đâu bạn à, dùng con khác nhé, 16F877A chẳng hạn
newuser vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-05-2006, 09:26 PM   #32
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 newuser
P16F84A không giao tiếp song song được đâu bạn à, dùng con khác nhé, 16F877A chẳng hạn
Không hẳn là như thế.

PIC16F84A không có sẵn module UART để giao tiếp nối tiếp, nhưng chúng ta vẫn có thể tự thực hiện chức năng của module UART bằng phần mềm. Khi đã dịch được thông tin cần thiết vào một ô nhớ nào đó của chip thì đương nhiên nó đã ở dạng song song rồi, bạn có thể xuất nó ra port B chẳng hạn.

Nếu bạn muốn làm thử thì tìm bằng google với các từ khóa: 'PIC', 'serial', và 'bit bang'.

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 22-05-2006, 09:54 PM   #33
newuser
Đệ tử 4 túi
 
Tham gia ngày: Feb 2006
Bài gửi: 66
:
à... tại em chưa đọc rõ câu hỏi của bạn truongthinh
đặt trường hợp em muốn giao tiếp song song mà không dùng module UART có sẵn, ví dụ như giao tiếp để lấy data trên RTC DS12887, em có thể mô phỏng bằng phần mềm? theo nguyên tắc anh nói, cứ sau nửa giây(do DS12887 gây ngắt) thì em lại lấy mẫu dữ liệu tại từng chân một lần, sau đó đem nó vào vùng nhớ nào đó rồi xử lý...
À, nhân nói về giao tiếp, vẫn là mô phỏng bằng phần mềm, em có thể giả lập I2C bằng hai chân của PIC, cho dù P16F84A không hỗ trợ giao tiếp I2C (em đọc được ở tài liệu gì ấy, hình như mấy anh cũng chia sẻ trên diễn đàn này rồi, em không nhớ tên...)
nếu các bạn không tìm được, hôm sau online mình sẽ gửi lên...
newuser vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-05-2006, 10:20 PM   #34
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
DS12887 giao tiếp bằng 8-bit, dùng chung cho các tín hiệu địa chỉ và dữ liệu, để giao tiếp với DS12887 chúng ta không cần module UART (module này cung cấp chức năng giao tiếp nối tiếp).

Một ví dụ có liên quan đến việc chuyển đổi dữ liệu giữa dạng nối tiếp và song song có thể là một hệ thống đọc/đặt thông tin về thời gian thực từ xa, trong đó đầu cuối dùng để hiển thị cũng như đặt thông tin về thời gian nằm cách xa chip DS12887. Khi đó người ta có thể muốn dùng giao tiếp nối tiếp để truyền thông tin qua lại giữa đầu cuối và chip đồng hồ thời gian thực. Và chúng ta có thể đặt một vi mạch thông minh (ví dụ như PIC) để thực hiện việc chuyển đổi giữa nối tiếp và song song, nằm gần chip RTC. Từ đó dẫn đến vấn đề mà bạn truongthinh đã hỏ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 23-05-2006, 11:59 AM   #35
newuser
Đệ tử 4 túi
 
Tham gia ngày: Feb 2006
Bài gửi: 66
:
mình có gửi tài liệu mà mình nói bên [tài liệu tiếng Anh] ấy, cho khỏi lộn xộn ấy mà, đó là tài liệu"The quintessential PIC Microcontroller", có thể các bạn đã có rồi nhưng dù sao mình vẫn gửi lên.
Cảm ơn anh Nam nhé !
newuser vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-05-2006, 12:31 AM   #36
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 truongthinh
yêu cầu thực tế của mình là như thế này: mình làm bộ chuyển đổi từ song song sang nối tiếp và một bộ chuyển đổi từ nối tiếp sang song song(PIC 16F84A). cái song song sang nối tiếp thì dễ rồi. còn cái nối tiếp sang song song Khi đã dịch được thông tin cần thiết vào một ô nhớ nào đó của chip thì đương nhiên nó đã ở dạng song song rồi, bạn có thể xuất nó ra port B chẳng hạn. ví dụ : mình chuyển qua 3 bit 001 làm sao để bên thu biết là có bít thứ nhất chuyển qua trong khi nó là o kế đến là bit thứ hai thứ 3. (3 bit đều độc lập)
Mong các bạn giúp giùm( rất gấp)
thanks
Thông thường người ta dùng một chuẩn giao tiếp nối tiếp nào đó để thực hiện công việc trong thực tế. Có nhiều chuẩn khác nhau đã được định nghĩa, nhưng nói chung người ta truyền một lần 7 hay 8 bit, không có chuẩn nào truyền theo kiểu bạn đang đề cập. Thực tế bạn đang làm gì thì nên trình bày rõ hơn.

Lấy ví dụ, nếu dùng chuẩn RS232 thì các đầu thu và phát đều tuân thủ theo chuẩn, do đó dữ liệu sẽ được truyền và nhận theo từng block 7 hay 8 bit, có các bit Start và Stop dùng để phát hiện việc truyền và thực hiện việc nhận. Lẽ đương nhiên không có chuẩn nào yêu cầu các bit được truyền là không độc lập. Một lần nữa, tôi cho rằng bạn nên mô tả rõ ràng hơn vấn đề bạn đang muốn làm. Với những gì mà bạn đang trình bày thì tôi nghĩ rằng bạn chưa hiểu lắm về giao tiếp nối tiếp.

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 31-05-2006, 05:35 PM   #37
truongthinh
Nhập môn đệ tử
 
Tham gia ngày: Apr 2006
Bài gửi: 6
:
Trích:
Nguyên văn bởi namqn
Thông thường người ta dùng một chuẩn giao tiếp nối tiếp nào đó để thực hiện công việc trong thực tế. Có nhiều chuẩn khác nhau đã được định nghĩa, nhưng nói chung người ta truyền một lần 7 hay 8 bit, không có chuẩn nào truyền theo kiểu bạn đang đề cập. Thực tế bạn đang làm gì thì nên trình bày rõ hơn.

Lấy ví dụ, nếu dùng chuẩn RS232 thì các đầu thu và phát đều tuân thủ theo chuẩn, do đó dữ liệu sẽ được truyền và nhận theo từng block 7 hay 8 bit, có các bit Start và Stop dùng để phát hiện việc truyền và thực hiện việc nhận. Lẽ đương nhiên không có chuẩn nào yêu cầu các bit được truyền là không độc lập. Một lần nữa, tôi cho rằng bạn nên mô tả rõ ràng hơn vấn đề bạn đang muốn làm. Với những gì mà bạn đang trình bày thì tôi nghĩ rằng bạn chưa hiểu lắm về giao tiếp nối tiếp.

Thân,
Thực tế phần em làm như sau:
8 bit song song ở đầu vào ( có thể là các công tắc) được chuyển đổi thành nối tiếp để đưa qua một mạch phát và thu (điều chế ASK) sau đó nhận nối tiếp và chuyển lại thành song song( đèn led chẳn hạn)
Phần giao tiếp nối tiếp và vi điều khiển em chưa rành lắm chỉ mới vọc đây thôi.
phần thu phát mình ok rồi còn phần chuyển đổi thì em còn bị chút khó khăn vì không có ai hướng dẫn
Mong anh giúp đở em phần này
thanks

thay đổi nội dung bởi: truongthinh, 31-05-2006 lúc 05:41 PM.
truongthinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 31-05-2006, 06:21 PM   #38
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
Bạn nên tìm hiểu xem mạch giải điều chế ASK có thể truyền tín hiệu theo chuẩn nào, sau đó tìm hiểu xem việc thực hiện chuẩn đó trên vi điều khiển có khả thi không, và nếu có nhiều chuẩn thì chọn chuẩn nào là thích hợp nhất.

PIC16F84A hiện nay được xem là lỗi thời, nó không tích hợp nhiều tính năng và ngoại vi lắm. Con PIC16F628A được hãng Microchip đưa ra để thay thế cho PIC16F84A, hoàn toàn tương thích với PIC16F84A và có module USART để thực hiện giao tiếp nối tiếp theo chuẩn RS232. Do đó, việc chuyển đổi từ nối tiếp sang song song được thực hiện bằng phần cứng bên trong module USART, bạn sẽ không phải băn khoăn về điều này khi sử dụng 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

thay đổi nội dung bởi: namqn, 13-06-2006 lúc 09:23 PM. Lý do: đánh sai một chữ
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 04-07-2006, 04:54 PM   #39
chuchinh
Đệ tử 1 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 23
:
Các bác kiểm tra hộ em lỗi này

Đoạn chương trình sau em viết cho PIC6F628A, khi biên dịch thì OK (chương trình copy từ học PIC trong 1 ngày mà). Thời gian trễ khi LED tắt quá nhỏ nên không nhìn thấy. Vì vậy, khi tắt LED em thêm một số lệnh gọi DELAY. Tuy nhiên, khi em chỉ cần thêm một dòng CALL DELAY nữa thì chương trình báo không thành công, hoặc là thêm một dòng BSF, BCF nữa cũng không được (những dòng này em đang cho dấu phẩy ở đầu).
Vậy đây là lỗi gì nhỉ? Các bác chỉ em với nhé.

ORG 0x0000
GOTO MAIN
ORG 0x0005
MAIN
BANKSEL TRISB
CLRF TRISB; d?t portb là output

MOVLW D'255'
MOVWF COUNT_L; COUNT_L là 1 byte

BANKSEL PORTB
LOOP
BSF PORTB,3
;BCF PORTB,4
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
BCF PORTB,3
;BSF PORTB,4
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
;CALL DELAY
CALL DELAY
GOTO LOOP

;================================================= ========
; Các chuong trình con
;================================================= ========
DELAY DECFSZ COUNT_L,F
GOTO DELAY
RETURN

;================================================= ========
GOTO $
END

thay đổi nội dung bởi: chuchinh, 04-07-2006 lúc 05:53 PM.
chuchinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 04-07-2006, 05:38 PM   #40
chuchinh
Đệ tử 1 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 23
:
Đoạn này em lấy được trong piclist.com, dùng để thực hiện trễ 1s với thạch anh 4MHz, em thay vào hàm delay trong đoạn chương trình trên nhưng chương trình biên dịch có lỗi. Đoạn này em cũng không hiểu lắm về cách làm của họ, mà trước hết là có lệnh cblock (?)
cblock
d1
d2
d3
endc

;999997 cycles
movlw 0x08
movwf d1
movlw 0x2F
movwf d2
movlw 0x03
movwf d3
Delay_0
decfsz d1, f
goto $+2
decfsz d2, f
goto $+2
decfsz d3, f
goto Delay_0

;3 cycles
goto $+1
nop
Đoạn link chương trình này: http://www.piclist.com/cgi-bin/delay...=Delay&CPU=PIC
Các bác xem giùm em luôn nhé.
chuchinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 04-07-2006, 06:05 PM   #41
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
cblock là từ khóa bắt đầu macro khai báo một khối hằng số. Trong chương trình của bạn, nó được dùng để khai báo 3 hằng số d1, d2, d3 (được dùng làm địa chỉ của 3 biến byte). Để chương trình có thể dịch được thì bạn phải cung cấp một hằng số sau cblock, đó chính là giá trị bắt đầu của các hằng số. Ví dụ
Code:
cblock 0x20
d1
d2
d3
endc
sẽ tạo ra 3 hằng số d1 = 0x20, d2 = 0x21, và d3 = 0x22.

Bạn phải xác định địa chỉ của khối biến cho thích hợp và đặt địa chỉ đầu của khối biến vào sau cblock.

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 05-07-2006, 09:31 AM   #42
chuchinh
Đệ tử 1 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 23
:
Oh, xin lỗi vì em cũng chỉ mới bắt đầu tìm hiểu về MPASM nên chưa hiểu nhiều về các cấu trúc của nó. Em đã thêm 0x023 vào sau cblock, nhưng chương trình vẫn báo lỗi này:
Error - section '.org_4' can not fit the absolute section. Section '.org_4' start=0x00000005, length=0x0000003c
Em gửi kèm theo file của em, anh xem hộ nhé:
File Kèm Theo
File Type: rar Test4.rar (752 Bytes, 32 lần tải)
chuchinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 05-07-2006, 06:59 PM   #43
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
Đã chỉnh lại chương trình cho em rồi đây. Em nhớ chọn chip từ lệnh mênu Configure > Select Device để có chip là 16F628A nhé. Sau đó có thể mở tập tin nguồn, chọn lệnh Quickbuild từ mênu Project (không cần phải tạo project cho chương trình chỉ có một tập tin .asm).

Đừng để ý cái warning về chip và cái message nhắc nhở là thanh ghi không nằm ở bank 0.

Thân,
File Kèm Theo
File Type: zip Test4new.zip (504 Bytes, 70 lần tải)
__________________
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 06-07-2006, 10:32 AM   #44
chuchinh
Đệ tử 1 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 23
:
Cảm ơn anh, cho em hỏi thêm

Em đã biết anh sửa chỗ nào nhưng cũng chưa hiểu sao cách khai báo đấy lại không được. Đang nghiên cứu quyển MPLAB IDE, hy vọng sau khi đọc xong sẽ bớt hỏi hơn.
Em muốn hỏi thêm: Em dùng thạch anh 11,0592MHz có được không? Vì em thấy thời gian trễ lâu quá, cả phút. Mặc dù em đã thay đổi d1, d2, d3 về 0x02 rồi mà vẫn thấy lâu.
Ngoài ra, chân RB4 của em không sáng được. Khi em cho chế độ test led (Sáng hết hoặc tắt hết) thì đo ngay tại chân RB4 thấy như nhau và luôn 0,42V. Liệu có thể hỏng tại đúng một chân không anh?
Muốn gửi đoạn chương trình test LED nhưng phần gửi gặp lỗi gì đó nên em không gửi được.

thay đổi nội dung bởi: chuchinh, 06-07-2006 lúc 11:15 AM.
chuchinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-07-2006, 08:12 PM   #45
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
Thạch anh 4 MHz là đủ để em học rồi.

Chương trình của em được viết theo kiểu "râu ông nọ cắm cằm bà kia", phản ứng của nó là khó xác định trước. Phần code đã sửa chỉ để hướng dẫn cho em cách viết cblock, nó không phải là một chương trình hoàn chỉnh. Em dùng lệnh gọi chương trình con DELAY, nhưng chương trình con đó lại không có lệnh return để trở về chương trình gọi. Ngoài ra, phần code để đặt d1, d2, và d3 hoàn toàn không được thực thi, nên có chỉnh chúng cũng không có tác dụng.

RB4 của 628A là một chân đặc biệt, nếu con chip của em mới tinh, và em không xóa bit cấu hình LVP, thì chân RB4 là ngõ vào, dùng để kích hoạt chế độ nạp chương trình ở điện áp thấp. Đó có thể là lý do khiến chân RB4 không phản ứng giống những chân kia.

Để hiểu thêm về hợp ngữ thì em đọc thêm tài liệu "MPASM™ Assembler, MPLINK™ Object Linker, MPLIB™ Object Librarian User’s Guide" (DS33014j), download tại đây:
http://ww1.microchip.com/downloads/e...Doc/33014J.pdf

Nếu không upload được chương trình lên forum thì có thể gửi email cho tôi, địa chỉ email của tôi có trong phần thông tin thành viê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

thay đổi nội dung bởi: namqn, 06-07-2006 lúc 08:27 PM.
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

Similar Threads
Ðề tài Người gửi Chuyên mục Trả lời Bài mới
Cho mình hỏi cách tạo xung mV hoặc microvon trungnnd PIC - Thiết kế và Ứng dụng 1 22-03-2013 02:30 PM


Múi giờ GMT. Hiện tại là 07:49 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