12/10/2556 20:04 น. |
คือตอนนี้การทดลองของPIC 16F877A สามารถรับค่าจากคอม 2 เครื่องที่ส่งมาและส่งกกลับได้แล้วครับ ทีBaud rate ค่าหนึ่งถ้าคอม 2 เครื่องนี้เปลี่ยน baud rate ไป อยากให้สามารถปรับ Baud Rate อัตโนมัติ สามารถทำได้ไหมครับ โค้ดผมได้ดังนี้ครับ #include <16f877A.h> #fuses NOWDT,HS, NOPROTECT,NOLVP #use delay (clock=20000000) #use rs232(baud=9600,rcv=PIN_B4,stream=A) #use rs232(baud=9600,xmit=PIN_C6,rcv=PIN_C7,stream=B) #include "lcd.c" char c[50],d[50]; int s1,s2; int push0=0,push1=0; int da=0,db=0; int buad=0; #INT_RB void IntRB_isr(void){ c[s1]=getc(A); lcd_init(); lcd_gotoxy(1,1); printf(lcd_putc,"%c 1",c[s1]); s1++; if(input(PIN_B1)){ disable_interrupts(GLOBAL); disable_interrupts(INT_RDA); disable_interrupts(INT_RB);break;} } #INT_RDA void IntRDA_isr(){ d[s2]=getc(B); lcd_init(); lcd_gotoxy(1,2); printf(lcd_putc,"%c 2",d[s2]); s2++; if(input(PIN_B1)){ disable_interrupts(GLOBAL); disable_interrupts(INT_RDA); disable_interrupts(INT_RB);break;} } void main(void) { lcd_init(); lcd_gotoxy(1,1); printf(lcd_putc,"select buad rate"); while(1) { if(input(PIN_A1)){ while(1){ enable_interrupts(GLOBAL); enable_interrupts(INT_RDA); enable_interrupts(GLOBAL); enable_interrupts(INT_RB); if(input(PIN_B1)){ disable_interrupts(GLOBAL); disable_interrupts(INT_RDA); disable_interrupts(INT_RB);break;} } } if(input(PIN_A2)) { lcd_init(); lcd_gotoxy(1,1); printf(lcd_putc,"A is :n%c%c%c%c%c",c[push0],c[push0+1],c[push0+2],c[push0+3],c[push0+4]); delay_ms(200); push0++; } if(input(PIN_A3)) { lcd_init(); lcd_gotoxy(1,1); printf(lcd_putc,"A is :n%c%c%c%c%c",c[push0],c[push0+1],c[push0+2],c[push0+3],c[push0+4]); delay_ms(200); push0--; } if(input(PIN_A4)) { lcd_init(); lcd_gotoxy(1,1); printf(lcd_putc,"B is :n%c%c%c%c%c",d[push1],d[push1+1],d[push1+2],d[push1+3],d[push1+4]); delay_ms(200); push1++; } if(input(PIN_A5)) { lcd_init(); lcd_gotoxy(1,1); printf(lcd_putc,"B is :n%c%c%c%c%c",d[push1],d[push1+1],d[push1+2],d[push1+3],d[push1+4]); delay_ms(200); push1--; } } } |
13/11/2556 12:59 น. |
ทำไม ไม่ใช่ LAN ครับ ใช้ TCP protocal |