PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > PIC - Thiết kế và Ứng dụng

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

PIC - Thiết kế và Ứng dụng Ý tưởng cho các sản phẩm sử dụng PIC/dsPIC và các sản phẩm của Microchip

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 28-04-2011, 11:47 AM   #1
7291665
Nhập môn đệ tử
 
Tham gia ngày: Oct 2008
Bài gửi: 3
:
Help ! Ngắt RB

Phần cứng mình lỡ thiết kế các chân RB4-RB7 nối qua nút nhấn rồi xuống mass ( đã mô phỏng chạy trường hợp nối lên nguồn còn nối xuống mass thì bó tay) . Vậy các Pro nào có thể chỉ mình cách viết code để thực hiện ngắt RB trogn trường hợp các chân này nối xuống mass ko?
Trích vài đoạn quan trọng

....................................( đã định nghĩa chân đầy đủ )
#int_RB
void interrupts_RB()
{
if(RBIF&&RBIE)
{
if(RB4==0)
{

}
if(RB5==0)
{
}
if(RB6==0)
{
}
if(RB7==0)
{
}
RBIF=0 ;
}
}
................... khởi tạo trong main
trisb = 0xf0;
portb = 0x0f;
enable_interrupts(int_RB);
ext_int_edge(H_to_L);
enable_interrupts(GLOBAL);
7291665 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 28-04-2011, 02:29 PM   #2
tdm
Đệ tử 7 túi
 
Tham gia ngày: May 2005
Bài gửi: 258
:
Trích:
Nguyên văn bởi 7291665 View Post
Phần cứng mình lỡ thiết kế các chân RB4-RB7 nối qua nút nhấn rồi xuống mass ( đã mô phỏng chạy trường hợp nối lên nguồn còn nối xuống mass thì bó tay) . Vậy các Pro nào có thể chỉ mình cách viết code để thực hiện ngắt RB trogn trường hợp các chân này nối xuống mass ko?
Trích vài đoạn quan trọng

....................................( đã định nghĩa chân đầy đủ )
#int_RB
void interrupts_RB()
{
if(RBIF&&RBIE)
{
if(RB4==0)
{

}
if(RB5==0)
{
}
if(RB6==0)
{
}
if(RB7==0)
{
}
RBIF=0 ;
}
}
................... khởi tạo trong main
trisb = 0xf0;
portb = 0x0f;
enable_interrupts(int_RB);
ext_int_edge(H_to_L);
enable_interrupts(GLOBAL);
thêm lệnh này vào hàm main: port_b_pullups(TRUE);//dung r keo len nguon
nếu không dùng lệnh này thì tại chân rb4....rb7 mỗi chân nối với r=10k lên nguồn dương.
__________________
viết chương trình cho vdk chạy ổn định là cả một vấn đề.
tdm vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 28-04-2011, 04:09 PM   #3
7291665
Nhập môn đệ tử
 
Tham gia ngày: Oct 2008
Bài gửi: 3
:
Cám ơn bạn nhiều để mìh thử lại xem sao
7291665 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 28-04-2011, 04:13 PM   #4
7291665
Nhập môn đệ tử
 
Tham gia ngày: Oct 2008
Bài gửi: 3
:
Ok , đã thử thành công , cám ơn ban nhiều nhiều
7291665 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-05-2011, 01:45 AM   #5
alycuong
Đệ tử 1 túi
 
Tham gia ngày: Apr 2010
Bài gửi: 16
:
Trích:
Nguyên văn bởi tdm View Post
thêm lệnh này vào hàm main: port_b_pullups(TRUE);//dung r keo len nguon
nếu không dùng lệnh này thì tại chân rb4....rb7 mỗi chân nối với r=10k lên nguồn dương.
Cho e hỏi lệnh này có nghĩa là gì vậy: port_b_pullups(TRUE)

E cảm ơn!
alycuong vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-05-2011, 11:18 AM   #6
stupid11
Đệ tử 6 túi
 
stupid11's Avatar
 
Tham gia ngày: Dec 2009
Nơi Cư Ngụ: TP.Hồ Chí Minh
Bài gửi: 133
:
Send a message via Yahoo to stupid11
Trích:
Nguyên văn bởi alycuong View Post
Cho e hỏi lệnh này có nghĩa là gì vậy: port_b_pullups(TRUE)

E cảm ơn!
Lệnh này cho phép thiết lập port b có điện trở kéo lên Vcc....Khi bạn dùng nút nhấn ở portb..nếu không muốn dùng các điện trở kéo lên ở ngoài phần cứng thì dùng lệnh này..rất tiện lợi..
stupid11 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 18-05-2011, 01:12 PM   #7
alycuong
Đệ tử 1 túi
 
Tham gia ngày: Apr 2010
Bài gửi: 16
:
A cho em hỏi lệnh break co thoát ra khỏi vòng lặp luôn luôn đúng while(true) dc k ah?

...
while(true)
{
...
if(...) break;
}
alycuong vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 18-05-2011, 04:48 PM   #8
nguyen_de89
Đệ tử 1 túi
 
nguyen_de89's Avatar
 
Tham gia ngày: Sep 2010
Bài gửi: 21
:
Trích:
Nguyên văn bởi alycuong View Post
A cho em hỏi lệnh break co thoát ra khỏi vòng lặp luôn luôn đúng while(true) dc k ah?

...
while(true)
{
...
if(...) break;
}
Lệnh break là thoát khỏi vòng lặp 1 cách cưỡng bức bạn à
nguyen_de89 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 18-05-2011, 05:40 PM   #9
alycuong
Đệ tử 1 túi
 
Tham gia ngày: Apr 2010
Bài gửi: 16
:
Trích:
Nguyên văn bởi nguyen_de89 View Post
Lệnh break là thoát khỏi vòng lặp 1 cách cưỡng bức bạn à
Mình biềt là vậy, nhưng ví dụ như thế này:

Void ct_con()
{
while(true)
{
x++;
if(x==200) break;
}
}

Void main()
{
...
ct_con();
...
}

Như bài thì có dùng lệnh for. Nhưng mình muốn hỏi khi vào chạy chương trình con thì khi x=200 thì break, vậy thì nó có thoát ra dc để tiếp tục vào chạy chương trình chính k, điều kiện ở trên là while(true).
alycuong vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 18-05-2011, 09:19 PM   #10
hcmut.khoamaisi
Đệ tử 4 túi
 
hcmut.khoamaisi's Avatar
 
Tham gia ngày: Dec 2009
Nơi Cư Ngụ: TPHCM
Bài gửi: 79
:
Send a message via Yahoo to hcmut.khoamaisi
Trích:
Nguyên văn bởi alycuong View Post
Mình biềt là vậy, nhưng ví dụ như thế này:

Void ct_con()
{
while(true)
{
x++;
if(x==200) break;
}
}

Void main()
{
...
ct_con();
...
}

Như bài thì có dùng lệnh for. Nhưng mình muốn hỏi khi vào chạy chương trình con thì khi x=200 thì break, vậy thì nó có thoát ra dc để tiếp tục vào chạy chương trình chính k, điều kiện ở trên là while(true).
có bạn ah!
__________________
My blog: http://autumnneverreturn.blogspot.com/
Đối thủ khó chiến thắng nhất là bản thân !!!
hcmut.khoamaisi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 18-05-2011, 10:47 PM   #11
nguyen_de89
Đệ tử 1 túi
 
nguyen_de89's Avatar
 
Tham gia ngày: Sep 2010
Bài gửi: 21
:
Trích:
Nguyên văn bởi alycuong View Post
Mình biềt là vậy, nhưng ví dụ như thế này:

Void ct_con()
{
while(true)
{
x++;
if(x==200) break;
}
}

Void main()
{
...
ct_con();
...
}

Như bài thì có dùng lệnh for. Nhưng mình muốn hỏi khi vào chạy chương trình con thì khi x=200 thì break, vậy thì nó có thoát ra dc để tiếp tục vào chạy chương trình chính k, điều kiện ở trên là while(true).
Chắc chắn là thoát khỏi While(1) chứ bạn,ép buộc thoát mà
nguyen_de89 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-06-2011, 04:06 AM   #12
alycuong
Đệ tử 1 túi
 
Tham gia ngày: Apr 2010
Bài gửi: 16
:
Trích:
Nguyên văn bởi stupid11 View Post
Lệnh này cho phép thiết lập port b có điện trở kéo lên Vcc....Khi bạn dùng nút nhấn ở portb..nếu không muốn dùng các điện trở kéo lên ở ngoài phần cứng thì dùng lệnh này..rất tiện lợi..


CHo e hỏi là nếu dùng lệnh port_b_pullups(TRUE) như a giải thích thì phím ma trận thực tế thiết kế như trường hợp B có dc k. Còn nếu dùng lệnh trên mà trở kéo xuống Mass như trường hợp A thì lệnh port_b_pullups(TRUE) có dùng dc nữa k a? A giải thích giúp e với. E cám ơn.
alycuong vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-06-2011, 02:06 PM   #13
stupid11
Đệ tử 6 túi
 
stupid11's Avatar
 
Tham gia ngày: Dec 2009
Nơi Cư Ngụ: TP.Hồ Chí Minh
Bài gửi: 133
:
Send a message via Yahoo to stupid11
Talking

-Nếu trên mạch của bạn sử dụng B0-B3 là ngõ ra,B4-B7 là ngõ vào thì cả 2 trường hợp trên đều được...
-Trường hợp B thì không cần bàn nữa rồi phải không ?
-Còn trường hợp A thì mình chưa làm bao giờ,tuy nhiên trên lý thuyết là được..
Bạn xem hình dưới chắc cũng hiểu vì sao mà được..hihi.Chúc bạn vui...

stupid11 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-07-2011, 11:45 PM   #14
ocean_86
Đệ tử 1 túi
 
Tham gia ngày: Mar 2010
Bài gửi: 12
:
anh ơi!
em muốn đo hệ số COSj của lưới điện dùng ngắt ngoài trên chân RBO của pic 16f877a
em đã đuă dòng và áp sau khi chuyển từ song sin sang sóng vuông và cho qua con 74ls86 để so pha rồi bây giờ không biêt viêt chương trình làm sao
anh có thể giúp em được không? . em dung timer1. phần đo điện áp và dòng điện thì em đã làm chạy rồi
em cám ơn anh nhiều
ocean_86 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à 02:13 AM.


Đượ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