![]() |
|
![]() |
#1 |
Đệ tử 3 túi
Tham gia ngày: Jun 2006
Bài gửi: 50
: |
Mình muốn ngắt bằng cạnh lên phải làm sao
Mình viết 1 đoạn code muốn ngắt bằng cạnh lên mong các bác chỉ giáo
#include "16f877a.h" #use delay(clock=20000000) #fuses HS,NOWDT,NOPROTECT,NOLVP #use rs232(baud=9600,parity=n,xmit=pin_c6,rcv=pin_c7) #include "lcd.c" #include "kbd.c" #byte port_b=6 int dem; char a1,a2,b1,b2,c1,c2; //khai bao cac bien dai dien cho gio, phut ,giay) #int_timer0 /*ngat do bo dinh thoi 1 */ ngat_timer0() { dem++; if(dem==1) { dem=0; lcd_putc(a1); lcd_putc(a2); lcd_putc(":"); lcd_putc(b1); lcd_putc(b2); lcd_putc(":"); lcd_putc(c1); lcd_putc(c2); c2=c2+1; if (c2>=':') { c2='0'; c1=c1+1; } if (c1>='6') { c1='0'; b2=b2+1; } if (b2>=':') { b2='0'; b1=b1+1; } if (b1>='6') { b1='0'; a2=a2+1; } if (a2>=':') { a2='0'; a1=a1+1; } if (a1>='2' & a2=='4') { a1='0'; a2='0'; } lcd_putc("\f"); } } #int_rb ngat_rb() { if(bit_test(port_b,4)==1) { b2=b2+1; } if(bit_test(port_b,5)==1) { a2=a2+1; } } void main(void) { a1=a2=b1=b2=c1=c2='0'; //setup cho dong ho chay thu 00:00:00 enable_interrupts(global); enable_interrupts(int_timer0); enable_interrupts(int_rb); setup_timer_0(rtcc_internal|rtcc_div_2); lcd_init(); while(1) { } } |
![]() |
![]() |
![]() |
#2 |
Đệ tử 9 túi
|
Rất đơn giản trong phần khởi tạo ngắt.Ví dụ như ngắt ngoài RB,thì:
Code:
enable_interrupts(INT_RB); ext_int_edge(L_to_H); // low to high // nếu muốn ngắt cạnh xuống thì H_to_L Không biết bạn có edit lại file 16F877A.h không? PORTB chứ không PORT_B
__________________
Ngày mai bắt đầu từ ngày hôm nay Bạn có thắc mắc, bạn cần sự hỗ trợ của các thành viên. Hãy đọc luồng này: http://www.picvietnam.com/forum//showthread.php?t=1263 |
![]() |
![]() |
![]() |
#3 |
Đệ tử 3 túi
Tham gia ngày: Jun 2006
Bài gửi: 50
: |
Cám ơn bạn bây giờ thì mình đã hiểu
|
![]() |
![]() |
![]() |
#4 |
Đệ tử 1 túi
Tham gia ngày: Mar 2006
Bài gửi: 22
: |
Cảm ơn các bác!!!
|
![]() |
![]() |
![]() |
|
|