![]() |
![]() |
#1 | |
Đệ tử 2 túi
Tham gia ngày: Jan 2011
Bài gửi: 36
: |
Nhờ các anh so sánh đoạn code này ...!
Đọc về kỹ thuật tạo ngắt ưu tiên của anh ChiBang bên điễn đàn điện tử em cũng tập tành viết đoạn code đọc xung encode nhưng có một vài điều thắc mắc ...
Trích:
Code:
#include <16F877A.h> #include <DEF_877A.h> #device *=16 adc=10 #FUSES NOWDT, HS, NOPUT, NOPROTECT, NOLVP #use delay(clock=20000000) //#define LCD_DATA_PORT getenv("SFR:PORTD") #define LCD_ENABLE_PIN PIN_E0 //// #define LCD_RS_PIN PIN_E1 //// #define LCD_RW_PIN PIN_E2 #define LCD_DATA4 PIN_D4 //// #define LCD_DATA5 PIN_D5 //// #define LCD_DATA6 PIN_D6 //// #define LCD_DATA7 PIN_D7 #include <lcd.c> int16 h=0,chuc,tram,h1,donvi,k=0; int16 count=0; #int_RB void ngat_RB() { disable_interrupts(int_rb); // tắt tất cả các ngắt disable_interrupts(int_timer0); GIE =1; if(RBIF) { if(RB0==1||RB0==0) // kiểm tra cạnh lên và xuống .. h++; // đếm xung RBIF=0; } } #int_timer0 void ngat_timer0() { disable_interrupts(int_timer0); // tắt ngắt timer0 GIE =1; if(tmr0if) { ++count; if(count==5000) { count=0; h1=h; k = h1+10; h=0; // reset lại giá trị biến h set_timer0(6); tmr0if=0; } } } void main() { set_tris_b(0b11110001); lcd_init(); delay_ms(100); enable_interrupts(int_timer0); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2); set_timer0(6);// T_dinhthi = 2*(256 - 6)*1us = 500us enable_interrupts(int_rb); ext_int_edge(L_to_H); enable_interrupts(global); while(1) { tram =h1/100; // hiển thị gia trị của h1 và k lên LCD h1=h1%100; chuc=h1/10; donvi=h1%10; lcd_gotoxy(1,1); LCD_Putc(tram+0x30); LCD_Putc(chuc+0x30); LCD_Putc(donvi+0x30); tram =k/100; k=k%100; chuc=k/10; donvi=k%10; lcd_gotoxy(1,2); LCD_Putc(tram+0x30); LCD_Putc(chuc+0x30); LCD_Putc(donvi+0x30); } } ![]() Không có gì xảy ra hết .... ???? Các anh có thể cho em biết đoạn code trên sai chổ nào ko ??? mò mẩm từ sáng qua tới giờ ..... hixxx ![]() thay đổi nội dung bởi: ElecTel, 02-01-2012 lúc 05:34 AM. |
|
![]() |
![]() |
![]() |
|
|