|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
|
Ðiều Chỉnh | Xếp Bài |
26-11-2012, 01:48 AM | #1 |
Nhập môn đệ tử
|
Pic 16f877a nhận ký tự từ rs232 hiển thị trên led 7 thanh
đâ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) {} } thay đổi nội dung bởi: quanghuan299, 26-11-2012 lúc 08:24 AM. |
|
|