View Single Post
Old 20-02-2009, 02:52 PM   #5
nguyennam8888
Đệ tử 3 túi
 
Tham gia ngày: Dec 2008
Bài gửi: 50
:
Trích:
Nguyên văn bởi vuthien86 View Post
uh ý mình là thế đó ,mình mới học ccs và pic dc 4 ngày thôi ,có nghe đến ngắt nhưng chưa hiểu lắm ,và mình nghĩ là chắc phải dùng đến ngắt .
bạn có thể chỉ cho mình thêm về ngắt ,có đọc một số tài liệu nhưng ko hiểu lắm ,
cú pháp của nó như thế nào ?
theo như bạn nói ,một chương trình chính đang chạy có ngắt thì sẽ dừng lại để thực hiện trong ngắt ,vậy nếu chương trình chính là nháy chữ bên trong thì mỗi một "nháy" cua chương trình chính mình gọi ngắt ,chương trình chính sẽ dừng lại đê thực hiện ngắt ,
mình có đièu chỉnh đuọc thời gian ngắt ,.v.v. nói chung là bạn có thể cho mình những kiến thức cơ bản nhất vè ngắt .thanks
đi vào cái này mới thấy có nhiều vấn đề học mãi ko hết
các lệnh dùng cho ngắt trong CCs:
enable_interrupts(level);//cho phép ngằt kiểu level
disable_interrupts(level);//cấm ngắt kiểu level
ext_int_edge(edge);// chọn lấy xung cạnh thấp hay cao
level bao gồm:

GLOBAL : ngắt toàn cục
INT_RTCC : tràn TMR0
INT_RB : có thay đổi trạng thái một trong các chân RB4 đến RB7
INT_EXT : ngắt ngoài
INT_AD : chuyển đổi AD đã hoàn tất
INT_TBE : bộ đệm chuyển RS232 trống
INT_RDA : data nhận từ RS232 sẵn sàng
INT_TIMER1 : tràn TMR1
INT_TIMER2 : tràn TMR2
INT_CCP1 : có capture hay compare trên CCP1
INT_CCP2 : có capture hay compare trên CCP2
INT_SSP : có hoạt động SPI hay I2C
INT_PSP : có data vào cổng parallel slave
INT_BUSCOL : xung đột bus
INT_EEPROM : ghi vào eeprom hoàn tất
INT_TIMER0 : tràn TMR0
INT_COMP : kiểm tra bằng nhau comparator

edge bao gồm:

L_TO_H : cạnh lên
H_TO_L : cạnh xuống
vi du ban viết cho ngằt INT_RB ( ngắt khi có thay đổi trạng thái của các chân RB4 ->RB7)
#INT_RB
void chayvien()
{....code....ban viết để điều khiển viền theo ý bạn}
trong main bạn phai viết các lệnh trên dể có thể sử dụng nó ( cho phép nó và nó xày ra khi nào :xung thap hay cao )
nguyennam8888 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn