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 01-01-2009, 05:08 PM   #1
dientudong
Đệ tử 5 túi
 
Tham gia ngày: Oct 2008
Bài gửi: 95
:
cứu tôi với

sao bài mình gởi bên kia không ai thèm trả lời giúp vậy ! Vấn đề của mình là khi nhấn nút thì led hoạt động chớp tắt < nhưng sao mình chưa nhấn mà nó đã chớp tắt.Cảm ơn các bạn !
File Kèm Theo
File Type: rar led.rar (11.9 KB, 23 lần tải)
dientudong vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-01-2009, 08:42 PM   #2
kimhuynguyen
Đệ tử 3 túi
 
Tham gia ngày: Nov 2007
Nơi Cư Ngụ: Vietnam
Bài gửi: 48
:
Code:
#include "C:\Program Files\PICC\Examples\led.h"

#byte portB =0x06
#byte portA =0x05
#bit RA0 =portA.0
#use delay(clock=20000000)

void main()
{
// Thiet lap che do cho PORTB
set_tris_b(0x00);    // Tat ca PORTB deu la cong xuat du lieu
PORTB = 0x00;    // Tat het cac LED
set_tris_a(0xff);
if(RA0=1)
{
While(1)
{


   PORTB = 0xff;   // Cho các LED sáng
   delay_ms(500);   // T?o th?i gian tr? 250ms
   portB = 0x00;
   delay_ms(500);

}
}
}
Ở ngay dòng lệnh "if (RA0=1)" là lệnh gán cho RA0 bằng 1 chứ không phải so sánh RA0 có bằng 1 hay không. Có thể thay "if (RA0)" là đủ.
__________________
More friends more foods
kimhuynguyen vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-01-2009, 09:12 PM   #3
vdtk3
Đệ tử 2 túi
 
Tham gia ngày: Jun 2007
Bài gửi: 30
:
" if (RA0 = 1) "thay bang (if RA0 == 1) .
vdtk3 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-01-2009, 09:17 PM   #4
love_ac
Đệ tử 4 túi
 
Tham gia ngày: Apr 2008
Nơi Cư Ngụ: Hanoi
Bài gửi: 78
:
@dientudong:lần sau bạn nên chụp sơ đồ kết nối của bạn(vì hình như bạn vẽ bằng orcad sẽ có ít người không dùng thì sẽ không giúp được bạn--nếu gặp câu khó mà anh Nam định giúp mà anh không thấy hình thì bạn ...)
@kimhuynguyen:nếu lệnh if đó như thế thì trình dịch có báo lỗi không nhỉ (đây có thể bạn đó gõ lên nhầm chăng) .
Giả sử bạn đó gõ nhầm,mình không xem được sơ đồ nguyên lý nên mình đoán nếu chân RA0 luôn nối lên nguồn thì chương trình này luôn nháy là phải rồi.
love_ac vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-01-2009, 11:02 PM   #5
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
Với phát biểu if (RA0 = 1), biểu thức điều kiện luôn luôn mang giá trị TRUE.

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 02-01-2009, 07:51 AM   #6
kimhuynguyen
Đệ tử 3 túi
 
Tham gia ngày: Nov 2007
Nơi Cư Ngụ: Vietnam
Bài gửi: 48
:
@love_ac:if(RA0=1) là một phát biểu (statement) đúng cú pháp nên trình dịch sẽ không báo lỗi. Đây là một lỗi rất thường gặp.
@vdtk3: thay if(RA0=1) bằng if(RA0) là đủ
__________________
More friends more foods
kimhuynguyen vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-01-2009, 03:57 PM   #7
dientudong
Đệ tử 5 túi
 
Tham gia ngày: Oct 2008
Bài gửi: 95
:
Code:
#include "C:\Program Files\PICC\Examples\led.h"
 #byte PORTA =0x05
 #byte PORTB =0x06
#bit RA0 =0x05.0
 #bit RB0 =0x06.0
#use delay(clock=20000000)

void main()
{
//set_tris_a(0xff);
if(RA0)
{
While(1)
{
   // Thiet lap che do cho PORTB
   set_tris_b(0x00);   
   RB0 = 1;   
   delay_ms(500);  
   RB0 = 0;
   delay_ms(500);

}
}
}
các bạn cho mình hỏi là set_tris_a(0xff);sao mình thấy dòng lệnh này không có ảnh hưởng gì cả.
Hình Kèm Theo
File Type: bmp mach.bmp (66.9 KB, 7 lần tải)

thay đổi nội dung bởi: namqn, 02-01-2009 lúc 05:12 PM.
dientudong vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-01-2009, 04:00 PM   #8
dientudong
Đệ tử 5 túi
 
Tham gia ngày: Oct 2008
Bài gửi: 95
:
có bạn nào biết ở đâu có mở lớp dạy học PIC không. Cảm ơn các bạn !
dientudong vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-01-2009, 04:01 PM   #9
dientudong
Đệ tử 5 túi
 
Tham gia ngày: Oct 2008
Bài gửi: 95
:
Mình ở quận Phú Nhuận ,TpHCM
dientudong vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-01-2009, 04:31 PM   #10
kimhuynguyen
Đệ tử 3 túi
 
Tham gia ngày: Nov 2007
Nơi Cư Ngụ: Vietnam
Bài gửi: 48
:
Bạn liên hệ thử:

Công ty TNHH Thương mại và Giao nhận R&P
http://dientu.rpc.vn/
__________________
More friends more foods
kimhuynguyen vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-01-2009, 04:42 PM   #11
kimhuynguyen
Đệ tử 3 túi
 
Tham gia ngày: Nov 2007
Nơi Cư Ngụ: Vietnam
Bài gửi: 48
:
Trích:
Nguyên văn bởi dientudong View Post
các bạn cho mình hỏi là set_tris_a(0xff);sao mình thấy dòng lệnh này không có ảnh hưởng gì cả.
Dòng lệnh này chỉ có tác dụng khi dùng với:
#use fast_io(A)

Mặc định, trình biên dịch sẽ tự động thay đổi direction register trong mỗi thao tác I/O.

nếu sử dụng #use fast_io(A) với set_tris_a(0xff), sẽ tiết kiệm được thời gian và bộ nhớ hơn.
__________________
More friends more foods
kimhuynguyen vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-01-2009, 03:52 AM   #12
dientudong
Đệ tử 5 túi
 
Tham gia ngày: Oct 2008
Bài gửi: 95
:
Code:
#include "C:\Program Files\PICC\Examples\led.h"
 #byte PORTA =0x05
 #byte PORTB =0x06
#bit RA0 =0x05.0
 #bit RB0 =0x06.0
#use delay(clock=20000000)

void main()
{

//set_tris_a(0xff);//dong lenh nay chi co tac dung khi su dung use fast_io(A)
if(RA0)//luu y la neu vong if de ngoai vong while thi se khong hoat dong
{
While(1)
{

   // Thiet lap che do cho PORTB
   set_tris_b(0x00);   
   RB0 = 1;   
   delay_ms(500);  
   RB0 = 0;
   delay_ms(500);

}
}
}
các bạn cho mình hỏi sao :để vòng if ngoài vòng while thì nhấn nút mạch không hoạt động,còn để vòng while ngoài vòng if thì hoạt động bình thường.

thay đổi nội dung bởi: namqn, 03-01-2009 lúc 04:37 AM.
dientudong vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-01-2009, 07:52 AM   #13
kimhuynguyen
Đệ tử 3 túi
 
Tham gia ngày: Nov 2007
Nơi Cư Ngụ: Vietnam
Bài gửi: 48
:
@dientudong:
nội dung chương trình bạn nên để trong thẻ "[c ode] và [/c ode]"
tránh làm mất thời gian của mod namqn phải chỉnh sửa lại.
(Chú ý là chữ code viết liền với nhau)

về câu hỏi ở trên, bạn ngồi suy luận 1 chút có lẽ là ra ngay.
__________________
More friends more foods
kimhuynguyen vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-01-2009, 11:14 AM   #14
ranhcon
Nhập môn đệ tử
 
Tham gia ngày: Jul 2007
Bài gửi: 7
:
trong vòng lặp while bạn nên cho câu lệnh để cho nó thoát khỏi vòng lặp (ko nháy led nữa) khi nhấn 1 nút khác hoặc nhấn chính nút đấy 1 lần nữa, mình hay dùng lệnh goto label
ranhcon vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-01-2009, 11:33 AM   #15
dientudong
Đệ tử 5 túi
 
Tham gia ngày: Oct 2008
Bài gửi: 95
:
mình thấy nó vẫn vậy mà bạn có cần thêm gôt label khong
dientudong 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à 12:27 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