Pic 16f877a nhận ký tự từ rs232 hiển thị trên led 7 thanh
1 Attachment(s)
đây là codec của mình, khi chạy tất cả các led đều tắt, khi nhập kí tự thì tất cả các led đều cho giá trị 0 , các bạn xem giúp mình với
#include <16f877a.h> #include <def_877a.h> #use delay(clock=20000000) #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=9) unsigned char dig[10]={ 0b00001001,//0 0b00111111,//1 0b10010001,//2 0b00010011,//3 0b00100111,//4 0b01000011,//5 0b01000001,//6 0b00011111,//7 0b00000000,//8 0b00000010,//9 }; int8 count=0; char string_in[8]; #INT_RDA Receive_isr() { int8 c; count++; c=getc(); putc(s); if (s=='s' | s=='S') {Output_b (0) ;count=0;} //Clear Screen if (count<=8) output_b (dig[10]); else {count=0;Output_b( 0 );} } void main() { int led1,led2,led3,led4,led5,led6; led1=getc()/100000; led2=(getc() - led1*100000)/10000; led3=(getc()- led1*100000 - led2*10000)/1000; led4=(getc()- led1*100000 - led2*10000 - led3*1000)/100; led5=(getc()- led1*100000 - led2*10000 - led3*1000 - led2*100)/10; led6=(getc()- led1*100000 - led2*10000 - led3*1000 - led2*100 - led2*100000)%10; set_tris_b(0); set_tris_d(0); output_high(pin_D0) ; output_b(dig[led1]) ; //led1 delay_ms(100); output_low(pin_D0); output_high(pin_D1) ; output_b(dig[led2]) ; //led2 delay_ms(100); output_low(pin_D1); output_high(pin_D2) ; output_b(dig[led3]) ; //led3 delay_ms(100); output_low(pin_D2); output_high(pin_D3) ; output_b(dig[led4]) ; //led4 delay_ms(100); output_low(pin_D3); output_high(pin_D4) ; output_b(dig[led5]) ; //led5 delay_ms(100); output_low(pin_D4); output_high(pin_D5) ; output_b(dig[led6]) ; //led6 delay_ms(100); enable_interrupts(int_rda); enable_interrupts(global); while (1) {} } |
nhưng mạch lại ko chạy
|
Múi giờ GMT. Hiện tại là 11:28 AM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam