![]() |
Dùng ngắt ngoài để đếm xung!!!
các anh cho em hỏi chương trình sau bị lỗi gì mà sao em dùng ngắt ngoài để đếm xung mà chỉ hiện lên số 0 ak??? thanks all!!!
#include <16F877A.h> #fuses NOWDT,PUT,XT,NOPROTECT #use delay(clock=20000000) #use fast_io(b) #use fast_io(d) #priority ext,timer1 int16 dem,j,x,count,nghin,tram,chuc,dv; unsigned char MA7DOAN[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D, 0x7D,0x07,0x7F,0x6F}; #int_ext void ngat_RB0() { ++count; x=count; } void main() { set_tris_b(0b00000001); set_tris_d(0); set_tris_c(0); enable_interrupts(global); enable_interrupts(int_ext); ext_int_edge(H_to_L); //count=0; while(1) { nghin=x/1000; x=x%1000; tram=x/100; dem=x%100; chuc=x/10; dv=x%10; for(j=0;j<=100;j++) { output_d(0xbf); output_c(MA7DOAN[dv]); delay_us(1000); output_d(0xdf); output_c(MA7DOAN[chuc]); delay_us(1000); output_d(0xef); output_c(MA7DOAN[tram]); delay_us(1000); output_d(0Xf7); output_c(MA7DOAN[nghin]); delay_us(1000); } } } |
Bạn thay XT = HS trong dòng này , thạch anh hơn 10Mhz thì phải set là HS bạn ơi . #fuses NOWDT,PUT,XT,NOPROTECT
Sau đó từ từ tính tiếp . |
anh ơi em sửa như anh nói ma sao không được!! vẫn cứ hiện lên số 0, mong anh giúp cho ak!! em cảm ơn nhiều lắm!! mà anh có code mẫu về phần này cho em xin với??
|
Bạn bỏ tiếp mấy dòng này đi.
#use fast_io(b) #use fast_io(d) #priority ext,timer1 Và nữa là: biến x của bạn sẽ bị chia liên tục trong khi chờ đợi xung tiếp theo đến (việc chia liên tục sẽ làm cho x=0) Ý tưởng sửa như thế này. Bỏ biến X đi, dùng trực tiếp biến count: Code:
nghin=count/1000; |
Chương trình chạy ngon lành nè!!!!,...
Hiển thị led chậm lại, lặp lại ít lần để dễ quan sát trên Protues!!!. Seg a,b,c,d,e,f,g....lần lượt nối với C0, C1,....C6 #include <16F877A.h> #include <DEFS_16F877A.h> #fuses NOWDT,PUT,XT,NOPROTECT #use delay(clock=20000000) #use fast_io(b) #use fast_io(d) #priority ext,timer1 int16 dem,j,x,count=0,nghin,tram,chuc,dv,y; unsigned char MA7DOAN[] = {0x40,0x79,0xa4,0x30,0x19,0x12, 0x02,0x78,0x00,0x10}; #int_ext void ngat_RB0() { char c; c=input_b(); ++count; x=count; } void main() { set_tris_b(0b00000001); set_tris_d(0); set_tris_c(0); enable_interrupts(global); enable_interrupts(int_ext); ext_int_edge(H_to_L); //count=0; while(TRUE) { nghin=x/1000; y=x%1000; tram=y/100; dem=y%100; chuc=dem/10; dv=dem%10; for(j=0;j<=10;j++) { output_d(0xbf); output_c(MA7DOAN[dv]); delay_ms(10); output_d(0xdf); output_c(MA7DOAN[chuc]); delay_ms(10); output_d(0xef); output_c(MA7DOAN[tram]); delay_ms(10); output_d(0Xf7); output_c(MA7DOAN[nghin]); delay_ms(10); } } } |
Mô phỏng
1 Attachment(s)
Chịu khó luyện tay nghề mới "lên" được!!!..
|
output_d(0xbf);
output_c(MA7DOAN[dv]); delay_ms(10); output_d(0xdf); output_c(MA7DOAN[chuc]); delay_ms(10); output_d(0xef); output_c(MA7DOAN[tram]); delay_ms(10); output_d(0Xf7); output_c(MA7DOAN[nghin]); delay_ms(10); led 7SEG này anot chung sao set muc "0" nhỉ output_d(0xbf)=10111111 nêu mình nghĩ đúng thì phải set mức "1" thì led mới sáng được chứ nhỉ output_d(0x40) = 01000000 tương ứng hàng đơn vị. mong bạn giải thích dùm . mới tìm hiểu về lĩnh vực về pic |
output_d(0xbf);
output_c(MA7DOAN[dv]); delay_ms(10); output_d(0xdf); output_c(MA7DOAN[chuc]); delay_ms(10); output_d(0xef); output_c(MA7DOAN[tram]); delay_ms(10); output_d(0Xf7); output_c(MA7DOAN[nghin]); delay_ms(10); led 7SEG này anot chung sao set muc "0" nhỉ output_d(0xbf)=10111111 nêu mình nghĩ đúng thì phải set mức "1" thì led mới sáng được chứ nhỉ output_d(0x40) = 01000000 tương ứng hàng đơn vị. mong bạn giải thích dùm . mới tìm hiểu về lĩnh vực về pic |
Trích:
Mạch sử dụng transistor PNP, loại này phải kích mức thấp mới dẫn, dòng kích sẽ chạy từ cực E ---> B. Kích trasistor NPN thì kích mức 1, dòng kích sẽ chạy từ cực B ---> E, kích kiểu này có nhiều "hạn chế", chủ yếu dùng kể "kích dẫn nối mass",...nếu dùng kích ở phía Vcc thay cho transistor như sơ đồ ở trên...thì áp ra bị sụt áp phía đầu Anot của led 7 đoạn,...áp sẽ < 4.3V. (Cái sơ đồ ở trên đáng lẽ phải có các điện trở hạn dòng vô port_C,..tại làm biếng vẽ nên nó vậy). |
Múi giờ GMT. Hiện tại là 03:04 PM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam