![]() |
|
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 | |
Đệ tử 5 túi
Tham gia ngày: Jun 2008
Bài gửi: 112
: |
Trích:
Bạn có thể mở các file .H trong bộ cài ở forder DRIVERS ra tìm hiểu Chúc may mắn ......
__________________
** xin hãy cho tôi là tượng đá ** Để muôn đời không nhớ thương ai ..!! |
|
![]() |
![]() |
![]() |
#2 | |
Đệ tử 2 túi
|
Trích:
Mình đã xem rồi. Các khai báo INT_RB6, INT_RB7 chỉ có trong 1 số file .h thôi. Riêng con 18F4550 thì không có!!! |
|
![]() |
![]() |
![]() |
#3 |
Đệ tử 2 túi
|
Mình đã điều khiển ngắt RB được rồi, mình gởi source để mọi người cùng tham khảo.
Port B được nối với keypad 4x4. Nếu nhấn 1 nút trên port B thì sẽ xuất 1 ký tự 'c' qua RS232. Nhưng có 1 chỗ mình chưa hiểu là nếu mình comment khối lệnh IF trong hàm ngắt RB_isr() thì ký tự 'a' được xuất ra liên tục(hàm ngắt xãy ra liên tục). Có ai giải thích dùm mình được không? Code:
#include <18F4550.h> #fuses HS,NOWDT,NOPROTECT,NOLVP #use delay(clock=20000000,crystal) #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) #byte portb = 0xf81 #use fast_io(B) static int old_b_state; #int_RB void RB_isr(void) { putc('a'); if (old_b_state != portb) { disable_interrupts(INT_RB); putc('c'); enable_interrupts(INT_RB); } } void main() { port_b_pullups(TRUE); output_b(0xf0); set_tris_b(0xf0); old_b_state = portb; enable_interrupts(INT_RB); enable_interrupts(global); while (TRUE) { } } thay đổi nội dung bởi: tranhuyky, 06-03-2009 lúc 10:02 AM. |
![]() |
![]() |
![]() |
|
|