You are on page 1of 3

Vic giao tip gia Vi iu khin v my tnh l bi lp trnh kh quan trng khi ta lm vic vi cc dng Vi iu khin khc nhau.

Vi Vi iu khin PIC cng vy, trong mi IC PIC u c tch hp mt khi giao tip my tnh USART. Ta s dng khi giao tip ny truyn d liu ln my tnh v x l d liu ty vo mc ch ca ngi lp trnh. nhn d liu do Vi iu khin truyn ln my tnh ta c th s dng cc phn mm giao tip COM c sn hay vit mt chng trnh mi, s dng cc ngn ng lp trnh nh C++, VB hay Delphi Trong chng trnh v d di y ti s dng cng c sn c ca CCS l Serial Port Monitor truyn v nhn d liu t PIC. S mch in ORCAD. Mch s dng IC MAX232 kt ni n cng COM ca my tnh. Mch n gin ch nhm mc ch gii thiu khi giao tip my tnh ca PIC v cch lp trnh cho n trong CCS. Trong chng trnh ta c s dng hm x l ngt ni tip x l k t nhn c t my tnh. Khi c ngt xy ra, ta gi hm getc() s tr v k t va nhn c. Trn mn hnh LCD s hin th k t m ta g t bn phm my tnh.

Mch giao tip my tnh, hin th LCD M ngun chng trnh: #include <16f877a.h> #include <def_877a.h> #use delay(clock=20000000) #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT // Khai bo s dng giao tip ni tip RS232

#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=9) #include <lcd_lib_4bit.c> int8 count=0; char string_in[16]; #INT_RDA // Hm x l ngt ni tip Receive_isr() { char c; int8 i; count++; c = getc(); putc(c); if (c==c | c==C) { LCD_putcmd(0x01); //Clear Screen c=c; count=0; } if ((count<=16) && (c!=c)) LCD_putchar(c); if (count > 16) { count=0; LCD_putcmd(0xC0); } } void main() {

enable_interrupts(int_rda); enable_interrupts(GLOBAL); lcd_init(); // Khi to cho LCD lcd_putcmd(0x01); lcd_putcmd(line_1); printf(Enter a String.); printf(Or anything you want!); while (1) {} } M t chng trnh: Trn y l chng trnh giao tip vi my tnh, ta thy trong CCS s dng giao tip ni tip ta ch cn khai bo #use rs232(). Cc hm giao tip vi my tnh m CCS h tr l:

putc(char ky_tu) : Gi mt k t ASCII ln my tnh getc() : Hm tr v mt k t nhn c t my tnh printf(string): hm gi mt chui k t ln my tnh

You might also like