![]() |
|
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 |
|
![]() |
#1 | |
Trưởng lão PIC bang
|
Trích:
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 |
|
![]() |
![]() |
![]() |
#2 | |
Trưởng lão PIC bang
|
Trích:
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 |
|
![]() |
![]() |
![]() |
#3 | |
Nhập môn đệ tử
Tham gia ngày: Apr 2006
Bài gửi: 6
: |
Trích:
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. |
|
![]() |
![]() |
![]() |
#4 |
Trưởng lão PIC bang
|
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ữ |
![]() |
![]() |
![]() |
#5 |
Đệ 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. |
![]() |
![]() |
![]() |
#6 |
Đệ 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é. |
![]() |
![]() |
![]() |
#7 |
Trưởng lão PIC bang
|
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 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 |
![]() |
![]() |
![]() |
Ðiều Chỉnh | |
Xếp Bài | |
|
|
![]() |
||||
Ðề 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 |