You are on page 1of 7

Ghi chp

S lc v giao tip vi my tnh


qua cng COM vi VK PIC



Duy Thi
wonbinbk@gmail.com


Duy Thi giao tip PC vi PIC
Trang 2 / 7

I. Phn cng:

Phn cng n gin l mch vi iu khin PIC h tr UART (v d PIC 16F877A), c
y b dao ng, ngun, mch reset,, cng COM cm board v IC chuyn dng
h tr RS232 (MAX232A).
Ghi chp ny ch bn v giao tip ng b (Synchronous khng c bt tay) nn
cng COM ch cn s dng 3 chn Rx,Tx v GND l .
II. Phn mm:

Trn my tnh, chng ta dng Visual Basic (VB) vit giao tip.
VB h tr Component (module add-in) Mscomm. Component ny khng enabled mc
nh. s dng, trong VB, nhn Ctrl + T (Project -> Components), ko chut xung,
v tick vo Microsoft Comm Control 6.0.



Duy Thi giao tip PC vi PIC
Trang 3 / 7
Nhn OK, ngoi thanh cng c xut hin thm mt icon . Tip theo, add 1
Mscomm vo Form. N t ng c tn, chng hn Mscomm1.
Mscomm1 c nhng properties sau y:



CommPort: 1 = S dng COM 1.
Handshaking: 0- comNone = Khng dng bt tay.
InBufferSize: 1024 = B m nhn ( cng ln th cng tt).
InputLen: =chiu di (tnh bng Byte) ca gi tr gn cho Input Property.
(v d: =1 , data=mscomm1.input (data l s Int hoc Str). Nu
InputLen =0: Input s c chiu di bng s byte hin c trong Buffer.
Thng do VK ch c th send 1 Byte mi t nn thng set thuc
tnh ny bng 1.
InputMode: 0 = Text mode, byte nhn c chuyn sang ASCII tng
ng trc khi gn.
1 = Binary mode.
OutBufferCount: s Byte ang nm ch gi i trong Buffer.
OutBufferLen: chiu di Buffer tnh theo Byte.
Duy Thi giao tip PC vi PIC
Trang 4 / 7
Rthreshold: s Byte phi nhn trc khi Mscomm1 to ra 1 event (l
event OnComm, khi CommEvent = comEvRcv). C th hiu l s
Byte phi nhn trc khi Mscomm1 to ra 1 ngt, ngay khi c ngt, VB
nhy vo lm vic event OnComm.
Sthreshold: tng t Rthreshold nhng l dnh cho Xmit module. N l
s Byte nh nht c th truyn i trong b m truyn trc khi
Mscomm1 to ra event OnComm, CommEvent=ComEvSend. Thng ci
ny t khi s dng, khng cn quan tm n n cng c th send data to
PIC.
Settings: set Frame truyn. C dng sau: Settings=BBBB,P,D,S vi
BBBB l
BaudRate(110,300,600,1200,2400,4800,9600(default),14400,19200,2880
0,38400,56000,115200, 128000,256000) ; P l Parity bits
(Even,Mark,None,Odd,Space); D l s data bits (4,5,6,7,8 (default)); S
l Stopbits (1,1.5,2).

s dng Component Mscomm ny c data t VK, ta thc hin theo trnh t
sau:
Trong Form_load():

Dim Sinput as String Ki tu nhan vao
Mscomm1.settings=9600,N,8,1
Mscomm1.commPort=1
Mscomm1.PortOpen = 1
Mscomm1.rthreshold=1
Mscomm1.inbuffersize=1024

Va ri l on khi to Port.

Sau , bt c khi no c Event OnComm, chng trnh sau y c thc
hin:
Trong mscomm1_OnComm():

If mscomm1.commEvent = ComEvReceive then
sInput = mscomm1.Input
Duy Thi giao tip PC vi PIC
Trang 5 / 7
label1.caption = label1.caption + sInput hin th nhng g nhn c ln Form.
End If
Nu mun gi data cho VK, th d ang trong Command1_click():

Mscomm1.output = data_to_be_send
lu y : v d data_to_be_send=A kiu String, th PIC nhn c m ASCII ca A
(chng hn 0d123). ch ny hay b nhm ln.

Duy Thi giao tip PC vi PIC
Trang 6 / 7
III. Phn mm trn PIC (firmware):
S dng Compiler CCS C vi nhng lnh h tr sn, ta khng cn quan tm nhiu
n phn cng ca PIC (Registers, Protocol,) mc d nh vy c v khng chuyn
nghip. CCS C khng h tr tc ng n thanh ghi mt cch r rng nh HT-PICC,
mc d vn c th lm c.
tc ng n thanh ghi, ta khai bo #l ocat e tn_thanh_ghi a ch thanh ghi.
Tn thanh ghi khng cn ging trong datasheet cng c, a ch thanh ghi th bt
buc phi ging. V d: khai bo PORTA: #l ocat e PORTA=0x80, sau khi khai bo ri,
thay v g lnh di dng out put _a( 0xFF) ; , ta ch cn PORTA=0xFF; Nh vy r rng
l tin v quen thuc vi ngi tng dng ASM. Nu cn, c th #l ocat e nhiu thanh
ghi ca con PIC no , lu li vi tn 16F877A_r egs. h, t ln sau tr i, ch cn
#i ncl ude <16F877A_r egs. h> l thoi mi tc ng n thanh ghi.
Sau y l code v d n gin.

#i ncl ude <16F877A. h>
#f uses HS, NOWDT, PUT, NOLVP, NODEBUG, NOBROWNOUT
#use del ay( cl ock=20000000) //bt buc phi c Directive ny trc
#use r s232( baud=115200, xmi t =PI N_C6, r cv=PI N_C7) //ri mi vit Directive
ny. Directive ny thit lp PIC trong ch baud bao nhiu, chn xmit va
rcv, c th c databits, stopbit,nhng t khi cn.

/* Khai bo bin*/
I nt I nput ;
I nt num;

Voi d mai n ( voi d)
{
Num=123;
Set _t r i s_c( 0x80) ;
Pr i nt f ( / n/ r Hel l o Wor l d, t hi s i s Wonbi nbk f r omVI ETNAM) ;
Pr i nt f ( / n/ r Thi s i s t he number %d, num) ;
Pr i nt f ( / n/ r Type i n a key, j ust one key a t i me, man! ) ;
Whi l e( 1)
{
I nput =Get c( ) ; / / wai t i ng f or a key i nput f r omPC, t hen assi gn
i t t o I nput .
Pr i nt f ( / n/ r You t yped %c, di dn t you?, i nput ) ;
}
}

Nu dng ngt nhn, ta khng cn ch trong loop, m c th lm vic khc.

#i ncl ude <16F877A. h>
#f uses HS, NOWDT, PUT, NOLVP, NODEBUG, NOBROWNOUT
Duy Thi giao tip PC vi PIC
Trang 7 / 7
#use del ay( cl ock=20000000)
#use r s232( baud=115200, xmi t =PI N_C6, r cv=PI N_C7)

I nt i nput ;

#I NT_RDA
Voi d ngat _232( voi d)
{
I nput =get c( ) ;
Pr i nt f ( / n/ r You t yped %c, di dn t you?, i nput ) ;
}

Voi d mai n( voi d)
{
Set _t r i s_c( 0x80) ;
Enabl e_i nt er r upt s( I NT_RDA) ;
Enabl e_i nt er r upt s( GLOBAL) ;
Whi l e( 1)
{
Do_Somet hi ng_el se( ) ; / / bl ah, bl ah, bl ah
}
}

Thng tin thm v cc hm, cc lnh h tr, c bit lnh printf() c th c k trong
Help ca CCSC 3.249 (newest version).

You might also like