Ngườibáocáo:PhmĐứcMnhTàiliu:TUT03.01
Ngày:2/9/2006Trang:1/9
Tutorialno03.02
Giđến:picvietnam@googlegroups.com
Nidung:KếtniPICviEEPROM,DS1307dùngI2C
MICROSOFTWORD
Tómtt:
TrongTutorialcabnNgôHiBcđãphnhướngdnvềcáchlptrìnhgiaotiếpcngCom
trongPCdùngVC++6.0.Hômnaymìnhsẽgiithiuchocácbncáchthclptrìnhgiaotiếpni
tiếpUARTtrênPIC:
1. GiaotiếpnitiếpdùngUART
ViếtttcaUniversalAsynchronousReceiverTransmitterthườngmtmch
tíchhpđưcsửdngtrongvictruyndndữliunitiếpgiamáytínhthiếtbị
ngoivithôngquacngnitiếp.RtnhiuviđiukhinhinnayđãtíchhpUART.Để
btđuvictruyndữliubngUART,mtstartbitđưcgiđi,sauđó58bitdữ
liu,sauđóstopbit.Startbittrngtháingượcvitrngtháibìnhthườngcađưng
truyndữliu.Stopbitcùngtrngtháivitrngtháibìnhthườngcađưngtruyn
dữliu.TcđcaUARTđưcquyđnhbitcđbaud.Mtsốinterfacechunca
UARTEIA,RS232,RS422RS485.
NhưvyđểlàmvicviUARTchúngtaphiquantâmđếncácthôngsốsau:
TcđộBaud:thường9600
SốbítđượcdùngđểtruynData:từ5đến8(thường8)
BítStop1,hay2thườngchn1
Bitchnlẻ
2.GiaotiếpUARTtrongPIC16F877A
2.1.CácthanhghiđượcsửdngtrongPIC16F877A
TrongPIC16F877Attcả5thanhghichoquatrìnhđiukhinUART:Trongđó
2thanhghichcnăngTXSTA,RCSTA,2thanhghidữliuRCREG,TXREG.,thanh
ghitcđộBaud:SPBRG.
Ngườibáocáo:PhmĐứcMnhTàiliu:TUT03.01
Ngày:2/9/2006Trang:2/9
ThanhghiTXSTA
CSRC:
TX9 :chnchếđộchuyn9bit:(=1:9bit,=0:8bit)
TXEN:Chophéptruyn
SYNC:Chnchếđộtruynđngbộhaykhôngđngb:(=1:đngb,=0:
khôngđồngbộ)
BRGH:chnchếdộtruyncaohaythp(=1HIGH,=0:LOW)
TRMT:bítbáotrngtháicabộđệm:=1:TSRrng(dữliuđãđoctruyn
xong),=0:TSRđầy(dữliucòntrongbộđệmcaUART)
TX9D:giátrịcabítthứ9trongchếđộtruyn9bit.Bitnàythểdùngđ
lưubitParity;
ThanhghiRCSTA
SPEN:chophépsửdngbộUART
RX9 :chpnhnchếđộnhn9bit
SREN:khôngdùngvitrườnghpAsychoronous
CREN :tiếptcnhndữliu
ADDEN:dùngtrongchếđộchn9bit:(master,slave)
Ngườibáocáo:PhmĐứcMnhTàiliu:TUT03.01
Ngày:2/9/2006Trang:3/9
FERR:bítbáohiuliđườngtruyn
OERR :báohiuliđườngtruyn
RX9D:giátrịbítthứ9trongquátrìnhReceiveđượclưutiđây.
ThanhghiTXREG:dùngđểchadữliutruynđitrongquátrìnhTransmit
ThanhghiRCREG:dùngđểlưudữliutừngoàivàotrongquátrìnhReceive
Thanhghi:SPBRGthanhghithiếtlptcđộbaudcaPIC
TrongPIC16F877AhaichếđộtruynHighspeed,Lowspeedđượcquyđịnhbi
bitBRGHcathanhghiTXSTA.Vicphânchiahaimctcđộnàyđểsựchnlacho
trườnghpsaisốvitcđbaudchuncaPC:trongPCcácmcchun:300,
2400,9600,19200,28800.Cácbnthểthamkhobng103ởtrang114đểbiêtđượccác
mctcđộ:
Hình1:BAUDRATEFORASYNCHORONOUSMODE(BRGH=0)
Ngườibáocáo:PhmĐứcMnhTàiliu:TUT03.01
Ngày:2/9/2006Trang:4/9
Hình2:BAUDRATEFORASYNCHRONOUSMODE(BRGH=1)
Thôngquabngtrêntathyứngvitnsốthchanh4Mđchnchotcđbaud
9600tathểchnhaigiátrịcathanhghiSPBRGởhaitrườnghp:SPBRG=25ứng
viBRGH=1cóisaisố0.15SPBRG=6ứngviBRGH=0saisố6.99.ràngta
chngiatrịnàosaisốbếnhtứngviVDtrêntanênchnSPBRG=25,BRGH=1
saisốnhỏhơntrườnghpkia.Nhưvyứngvitrườnghpnàosaisốnhỏ
hơntronghaigiátrịthìtasẽchncáiđó.
2.2. QuátrìnhtruynnhncaPICviPC
TrongPIC16F877Anhiuchếđộtruynnhnkhácnhau:chếđộtruynnhndùng
bit9đđnhchnl,haychomngVĐK1masternhiuslave.chếđộchuyn
đồngbộngdngchovicgiaotiếpviA/D,D/AhayvicácEEPRO.ttnhiêncác
chếdộnàysẽđượcthiếtlpbicácbittrongthanhghiTXSTA,TCSTA.Tuynhiên
trongtutorialnàychỉxingiithiuchếđộtruynnhn8bitgiaotiếpviPCmt
trongcácchcnăngcabộAUSARTcaPIC
Quátrìnhnhndữliu
TrongPIC16F877Ađnhnbiếtđưcdữ liutruyntingườitadùngbitcờ RCIF
trongthanhghiPIR1.NhưvykhithanhghiđmdữliuchadữliuthìRCIFsẽđược
đưalên1.chínhcờnàychophépPIC16F877Ahaiphươngthcđnhnbiếtlúc
nàodữliutruynti.SửdngngtsửdngkiuPolling(quayvòng)
Ngườibáocáo:PhmĐứcMnhTàiliu:TUT03.01
Ngày:2/9/2006Trang:5/9
KiuPolling:liêntckimtracờRCIFnếu=1thìđcdữliu:Phươngthcnàyưu
đimdẽlâptrình,phùhpvinhngứngdngnh.
Kiudùngngăt:đưcthiếtlpbngcáchchoRCIE=1đchophépngt.Tcmi
khidữliutruyntiRCREGthìsinhramtngtPICsẽtmdngchươngtrình
hinthiđểxửdữliuvanhnđược.Cáchnàychủyếuđượcsửdng
NhưvycácbướcchoquátrìnhnhndữliucaquátrìnhsửdngINTERUPTbao
gm:
1.Khitotcđộbaud:ởthanhghiSPBRG.ChoSPBRG=25,BRGH=1ứngvitc
độ9600(thchanh4M)
2.ChophépquátrìnhtruynkhôngđồngbộbngcáchthiếtlpSPEN=1,SYNC=0;
3.Chophépngtquátrìnhnhndữliu:RCIE=1
4Chophépnhndữliu:CREN=1
5.ChophépngttoànccbăngvicGIE=1,PEIE=1(GIE,PEIEtrongthanhghi
INTCON)
6.Xửcácphnkhácchươngtrìnhkhingtxyrathìxửdữliu
VD:nhndữliutừPCvitcđộbaud:96000sửdngngt

BSF TXSTA,BRGH;ChoBRGH=1
 MOVLW Dʹ25ʹ ;Chonchedo9.600
 MOVWF SPBRG
BSF RCSTA,SPEN;SPEN=1
BCF TXSTA,SYNC ;SYNC=0
BSF TXSTA,CREN
BSF PIE,RCIE ;RCIE=1
BSF INTCON,GIE
BSF INTCON,PEIE
........................
;Hàmngtxửdữliu:
 MOVF RCREG,W;NhandulieutuRCREGchuyenchothanhghiW
MOVWFPORTB ;DuadulieuraPORTB
......................