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 30-12-2009, 03:59 PM   #1
yingkui
Nhập môn đệ tử
 
Tham gia ngày: Nov 2009
Bài gửi: 10
:
Mấy bác vào xem giùm em với !!!

Tình hình là có cái mạch đơn giản gồm 1 con pic6f877a đã được cấp nguồn và dao động thạch anh rồi,chân ccp2 của nó nối vào 1 đầu nút nhấn,đầu kia nút nhấn nối với nguồn 5v,chân ccp được hoạt động ở chế độ bắt xung,chân rb1 của pic được nối với 1 kon led,em lập trình cho con pic như sau :

include <16F877A.h>
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, PARITY=N, BITS =8)
#bit rb1 =0x06.1
#bit ccp2if = 0x0d.0
void main()
{
setup_timer_1(T1_DIV_BY_4);
setup_ccp2(CCP_CAPTURE_RE); //dung timer 1,khi co xung len o chan ccp thi gia tri thanh ghi trm1 se dua vao thanh ghi ccp2,co ccp2if dc set

if(ccp2if) //co ccp2if = 1
output_high(PIN_B1); // ngo ra rb1 duoc set,làm led sáng
}

em không biết lập trình cho chức năng bắt xung như vậy đúng không mà sao khi giả lập nó không chạy.Mục tiêu của em là khi nhấn nút đèn led sáng (không quan tâm đến cờ ccp2if có được xóa hay không).Bác nào biết thì chỉ giùm em với . Ths các bác trước
yingkui vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-12-2009, 05:04 PM   #2
nghia_tdh21
Đệ tử 3 túi
 
nghia_tdh21's Avatar
 
Tham gia ngày: Oct 2006
Bài gửi: 46
:
Mình thấy bạn chưa thiết lập in/out các port theo yêu cầu chẳng hạn như nếu muốn làm led sáng thì phải thiết lập chân đó là output, nếu nối với nút nhấn thì phải đặt thành input. Nếu bạn chờ sự kiện nút nhấn xuống thì phải đặt nó trong vòng lặp chứ nhỉ?
ví dụ:
Code:
while(1){
if(ccp2if) //co ccp2if = 1
output_high(PIN_B1); // ngo ra rb1 duoc set,làm led sáng
}
__________________
http://www.hieunghia.info
Lướt web thoải mái với USB3G của Viettel
http://www.hieunghia.info/tin-cong-n...3g-vietel.html
-----------------------------------------------------------------------------------
Một chút giận,hai chút tham,lận đận cả đời ri cũng khổ.
Trăm điều lành,ngàn điều nhịn,thong dong tấc dạ rứa mà vui
nghia_tdh21 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-12-2009, 06:29 PM   #3
yingkui
Nhập môn đệ tử
 
Tham gia ngày: Nov 2009
Bài gửi: 10
:
ý của em là khi nhấn nút nhấn thì sẽ tạo ra sự kiện là có cạnh lên ngay chân ccp,lúc đó cờ ccpif sẽ bằng 1,sau đó lệnh if sẽ đúng và tự set chân rb1 lên mức cao làm led sáng,trên chương trình e chỉ dùng 1 chân rb1 chứ không dùng cả port nên e chỉ khai báo 1 chân.Đoạn code của anh thế vào chương trình của e củng không chạy anh à
yingkui vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-12-2009, 10:36 PM   #4
nghia_tdh21
Đệ tử 3 túi
 
nghia_tdh21's Avatar
 
Tham gia ngày: Oct 2006
Bài gửi: 46
:
Trích:
Nguyên văn bởi yingkui View Post
chân ccp2 của nó nối vào 1 đầu nút nhấn,đầu kia nút nhấn nối với nguồn 5v
Bạn phải thêm con trở kéo xuống ở ccp2, bạn phải thử trên mạch thật. Tuy nhiên chương trình của bạn như vậy khó mà biết được cờ CCP2IF có được bật hay không, bạn nên đặt một đoạn chương trình như sau: (mình ko dùng ccs nên nếu sai bạn phải chỉnh lại cho đúng)
Code:
while(1){
if(ccp2if) //co ccp2if = 1
output_high(PIN_B1); // ngo ra rb1 duoc set,làm led sáng
delay_ms(1000);  //làm trễ một giây bạn phải chỉnh lại chỗ này vì minh ko nhớ cú pháp ccs(mình dùng MikroC)
output_low(PIN_B1); // ngo ra rb1 duoc clear,làm led tắt
delay_ms(1000);
}
}
Khi cờ CCP2IF được set thì sẽ làm nhấp nháy led.
__________________
http://www.hieunghia.info
Lướt web thoải mái với USB3G của Viettel
http://www.hieunghia.info/tin-cong-n...3g-vietel.html
-----------------------------------------------------------------------------------
Một chút giận,hai chút tham,lận đận cả đời ri cũng khổ.
Trăm điều lành,ngàn điều nhịn,thong dong tấc dạ rứa mà vui
nghia_tdh21 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 31-12-2009, 11:27 AM   #5
yingkui
Nhập môn đệ tử
 
Tham gia ngày: Nov 2009
Bài gửi: 10
:
chân ccp2 của em lúc này được lập trình ở chế độ bắt xung nên khi có hiện tượng ở chân ccp2 ( khi nút nhấn được nhấn) thì cờ ccp2if sẽ được set lên 1 ( đặc tính của chế độ bắt xung ).Em nghỉ là không cần vòng lặp vì led của em sáng luôn là điều mong muốn,không biết suy nghỉ đó có đúng không.Khi led sáng thì chứng tỏ chân ccp2 đã hoàn thành nhiệm vụ bắt xung
yingkui 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à 03:34 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