Ngườibáocáo: NguyễnChíLinh Tàiliệu: TUT01.01.PVN Ngày: 9/8/2006 Trang: 1/32 TUT01.01.PVN Gửiđến: www.picvietnam.com Nộidung: LậptrìnhchoPICbằngCCS ver3.242 MICROSOFTWORD Tómtắt: TàiliệuhướngdẫnsửdụngtrìnhbiêndịchCCScholậptrìnhPIC.TìmhiểutôngquanvềCCS vàcáchtạomộtProjecttrongCCS. ChươngtrìnhmẫuchoPIC16F877 Cácvídụlậptrìnhđơngiản:quétLED,ADC,RS232… 1. TổngquanvềCCS 1.1. VìsaotasửdungCCS? Sựrađờicủamộtloạiviđiềukhiểnđikèmvớiviệcpháttriểnphầnmềm ứngdụngcho việclậptrìnhchoconviđiềukhiểnđó.Viđiềukhiểnchỉhiểuvàlàmviệcvớihaiconsố0 và1.BanđầuđểviệclậptrìnhchoVĐKlàlàmviệcvớidãycácconsố0và1.Saunàykhi kiếntrúccủaViđiềukhiểnngàycàngphứctạp,sốluợngthanhghilệnhnhiềulên,việclập trìnhvớidãycácsố0và1khôngcònphùhợpnữa,đòihỏirađờimộtngônngữmớithay thế.VàngônngữlậptrìnhAssembly.ỞđâytakhôngnóinhiềuđếnAssmebly.Saunàykhi ngônngữCrađời,nhucầudùngngônngữCđềthaychoASMtrongviệcmôtảcáclệnh lậptrìnhchoViđiềukhiểnmộtcáchngắngọnvàdễhiểuhơnđãdẫnđếnsựrađờicủa nhiềuchươngtrìnhso ạnthảovàbiêndịchCchoViđiềukhiển:KeilC,HT‐PIC,MikroC, CCS… TôichọnCCSchobàigiớithiệunàyvìCCSlàmộtcôngcụlậptrìnhCm ạnhchoVi điềukhiểnPIC.NhữngưuvànhượcđiểmcủaCCSsẽđượcđềcậpđếntrongcácphần dướiđây. 1.2. GiớithiệuvềCCS? CCSlàtrìnhbiêndịchlậptrìnhngônngữCchoViđiềukhiểnPICcủahãngMicrochip. Chươngtrìnhlàsựtíchhợpcủa3trìnhbiêndichriêngbiếtcho3dòngPICkhácnhauđó là: ‐ PCBchodòngPIC12‐bitopcodes ‐ PCMchodòngPIC14‐bitopcodes ‐ PCHchodòngPIC16và18‐bit Tấtcả3trìnhbiêndichnàyđuợctíchhợplạivàotrongm ộtchươngtrìnhbaogồmcả trìnhsoạ nthảovàbiêndịchlàCCS,phiênbảnmớinhấtlàPCWHCompilerVer3.227 Ngườibáocáo: NguyễnChíLinh Tàiliệu: TUT01.01.PVN Ngày: 9/8/2006 Trang: 2/32 GiốngnhưnhiềutrìnhbiêndichCkhácchoPIC,CCSgiúpchongườisửdụngnắmbắt nhanhđượcviđiềukhiển PIC vàsửdụng PICtrong cácdựán. Cácchươngtrì nh diều khiểnsẽđượ cthựchiệnnhanhchóngvàđạthiệuquảcaothôngquaviệcsửdụngngôn ngữlạptrìnhcấpcao–NgônngữC Tàiliệuhướngdẫnsửdụngcórấtnhiều,nhưngchi tiếtnhấtchínhlàbảnHelpđikèm theophầnmềm(tàiliệuTiếngAnh).Trongbảntrợgiúpnhàs ảnxuấtđãmôtảrấtnhiềuvề hằng,biến,chỉthịtiềnxủalý,cấutrúccáccâulệnhtrongchươngtrình,cáchàmtạosẵncho ngườisửdụng…NgoàiravềTiếngViệtcũngcóbảndịchcủatácgiảTrầnXuânTrường, SVK2001DHBKHCM.TàiliệunàydịchtrêncơsởbảnHelpc ủaCCS,tuyrằngchưađầy đủnhưngđâylàmộttàiliệuhay,nếubạntìmhiểuvềPICvàCCSthìnêntìmtàiliệunày vềđọc.ĐịachỉDownloadtàiliệu:www.picvietnam.com‐>MụcnóivềCCS. 2. TạoPROJECTđầutiêntrongCCS ĐểtạomộtProjecttrongCCScónhiềucách,cóthểdùng ProjectWizard,ManualCreat, hayđơngiảnlàtạomộtFilesmớivàthêmvàođócáckhaibáobanđầucầnthiếtvà“bắt buộc”. Dướiđâysẽtrìnhbàycáchtạomộtprojecthợplệtheocả3phươngpháp.Mộtđiều ta cầnchúýkhitạomộtProjectđólà:khitạobắtcứmộtProjectnàomớithìtanêntạomột thưmụcmớivớitênliênquanđếnProjecttađịnhlàm,rồilưucácfilesvàođó.Khilập trìnhvàbiêndịch,CCSsẽtạorarấtnhiềufileskhácnhau,dođónếuđểchungcácProject trognmộtthưmụcsẽrấtmấtthờigiantrongviệctìmkiếmsaunày.Đâycũnglàquytắc chungkhitalàmviệcvớibấtkỳphầnmềmnào,thiếtkếmạchhaylậptrình. ViệcđầutiênbạncầnlàmlàkhởiđộngmáytínhvàbậtchươngtrìnhPICCCompiler. 2.1. TạomộtPROJECTsửdụngPICWizard Trướchếtbạnkhởiđộng chươngtrìnhlàmviệcPICCCompiler.Từgiaodiệnchương trìnhbạndichuộtchọnProject‐>New‐>PICWizardnhấnnúttráichuộtchọn. Ngườibáocáo: NguyễnChíLinh Tàiliệu: TUT01.01.PVN Ngày: 9/8/2006 Trang: 3/32 Saukhinhấnchuột,mộtcửasổhiệnrayêucầubannhậptênFilescầntạo.Bạntạomột thưmụcmới,vàothưmụcđóvàlưutênfilescầntạotạiđây. Hình2.0:CửasổSaveAs Nhưvậylàxongb ước đầutiên.SaukhinhấnnútSave,mộtc ửasổNewProjecthiệnra. Trongcủasổnàybaogồmrấtnhiều Tab,mỗiTabmôtảvềmộtvàitínhnăngcủaconPIC. TasẽchọntínhnăngsửdụngtạicácTabtươngứng. Dướiđâysẽtrìnhbàyýnghĩatừngmụcchọntrongm ỗiTab.Cácmục chọnnàychính làđềcậpđếncáctínhnăngcủamộtconPIC,tùytheotừngloạimàsẽcócácTabtươngứng. Đốivớitừngdựánkhácnhau,khitacầnsửdụngtínhnă ngnàocủaconPICthìtasẽchọn mụcđó.Tổngcộngcó13Tabđẻtalưachọn.Tôigiớithiệu nhữngTabchínhthườnghay đượcsửdụng. Ngườibáocáo: NguyễnChíLinh Tàiliệu: TUT01.01.PVN Ngày: 9/8/2006 Trang: 4/32 2.1.1. TabGeneral TabGeneralchophéptalựachọnloạiPICmàtasửdụngvàmộtsốlựachọn khácnhưchọntầnsốthạchanhdaođộng,thiếtlậpcácbitCONFIGnhằmthiết lập chếđộhoạtđộngchoPIC. Hình2.1:TabGeneral ‐ Device:LiệtkêdanhsáchcácloạiPIC12F,16F,18F…TasẽchọntênViđiềukhiển PICmàtasửdụngtrongdựán.LấyvídụchọnPIC16F877A ‐ OscilatorFrequency:Tầnsốthạchanhtasửdụng,chọn20MHz(tùytừngloại) ‐ Fuses:ThiếtlậpcácbitConfignhư:Chếđộdaođộng(HS,RC,Internal),chếđộbảo vệCode,Brownoutdetected… ‐ ChọnkiểucontrỏRAMlà16‐bithay8‐bit 2.1.2. TabCommunications TabCommunicationsliệtkêcácgiaotiếpnốitiếpmàmộtconPIChỗ trợ,thườnglà RS232vàI2C,cùngvớicáclựachọnđểthiếtlậpchếđộhoạtđộngchotừngloạigiaotiếp. GiaotiếpRS232 MỗimộtViđiềukhiểnPIChỗtrợmộtcổngtruyềnthôngRS232chuẩn.Tabnày chophéptalựachọnchânRx,Tx,tốcđộBaud,Databit,BitParity… GiaotiếpI2C ĐểsửdụngI2C tatíchvàonútchọnUseI2C,khiđótacócáclựachọn:Chân SDA,SCL,Tốcđộtruyền(Fast‐Slow),chếđộMasterhaySlave,địachỉchoSalve. Ngườibáocáo: NguyễnChíLinh Tàiliệu: TUT01.01.PVN Ngày: 9/8/2006 Trang: 5/32 Hình2.2:TabCommunications 2.1.3. TabSPIandLCD TabnàyliệtkêchongườidùngcáclựachọnđốivớigiaotiếpnốitiếpSPI,chuẩn giaotiếptốcđộcaomàPIChỗtrợvềphầncứng.Chúýkhi tadùngI2Cthìkhông thểdùngSPIvàngượclại.Đểcóthểsửdụngcảhaigiaotiếpnàycùngmộtlúcthì buộcmộttrong2giaotiếpphảilậptrìnhbằngphầnmềm(giồng nhưkhidùngI2C chocácchipAT8051,khôngcóhỗtrợphầncứngSSP). PhầncấuhìnhchoLCDdànhchocácchípdòng18Fvà30F. Hình2.3:TabSPIandLCD 2.1.4. TabTimer Liệtkêcácbộđếm/địnhthờimàcácconPICdòngMid‐rangecó:Timer0,timer1, timer2,WDT… Ngườibáocáo: NguyễnChíLinh Tàiliệu: TUT01.01.PVN Ngày: 9/8/2006 Trang: 6/32 Trongcác lựa chọncấuhìnhchocácbộđếm/địnhthời có: chọn nguồn xung đồnghồ(trong/ngoài),khoảngthờigianxảyratràn… Hình2.4:TabTimer 2.1.5. TabAnalog Liệtkêcáclựachọnchobộchuyểnđổitươngtự/số(ADC)củaPIC.Tùy vào từngICcụthểmàcócáclựachọnkhácnhau,baogồm: ‐ Lựachọncổngvào tươngtự ‐ Chọnchânđiệnáplấymẫu(Vref) ‐ Chọnđộphângiải:8‐bit=0~255hay10‐bit=0~1023 ‐ NguồnxungđồnghồchobộADC(tronghayngoài),từđómàtacóđược tốc độlấymẫu,thườngtachọnlàinternal2‐6us. ‐ KhikhôngsửdụngbộADCtachọnnone Hình2.5:TabAnalog Ngườibáocáo: NguyễnChíLinh Tàiliệu: TUT01.01.PVN Ngày: 9/8/2006 Trang: 7/32 2.1.6. TabOther TabnàychophéptathiếtlậpcácthôngsốchocácbộCapture/Comparator/PWM. Capture‐Bắtgiữ ‐ Chọnbắtgiữxungtheosườndương(risingedge)haysườnâm(fallingedge )của xungvào ‐ Chọnbắtgiữsau1,4hay16xung(copygiátrịcủaTimerXvàothanhghilưutrữ CCCPxsau1,4hay16xung). Compare‐Sosánh ‐ Tacócáclựachọnthựchiệnlệnhkhixayưrabằngnhaugiữa2đốitượngsosánhlà giátrịcủaTimer1vớigiátrịlưutrongthanhghiđểsosánh.Baog ồm: o Thựchiệnngắtvàthiếtlậpmức0 o Thựchiệnngắtvàthiếtlậpmức1 o ThựchiệnngắtnhưngkhôngthayđổitrạngtháicủachânPIC. o ĐưaTimer1về0nhưngkhôngthayđổitrạngtháichân. PWM‐Điềuchếđộrộngxung ‐ Lựachọnv ềtầnsốxungravàdutycycle.Tacóthểlựachọnsẵnhaytựchọntầnsố, tấtnhiêntầnsốraphảinằmtrongmộtkhoảngnhấtđịnh. Comparator‐Sosánhđiệnáp ‐ LựachọnmứcđiệnápsosánhVref.Córấtnhiềumứcđiệnápđểtalựachọn.Ngoài ratacòncóthểlựachọnchođầuvàocủacácbộsosánh. Hình2.6:TabOther Ngườibáocáo: NguyễnChíLinh Tàiliệu: TUT01.01.PVN Ngày: 9/8/2006 Trang: 8/32 2.1.7. TabInterruptsvàTabDriver TabInterruptschophéptalựachọnnguồnngắtmàtamuốnsửdụng.Tùyvàotừng loạiPIC màsốlượng nguồnngắt khácnhau,bao gồm:ngắtngoài 0(INT0), ngắtRS232, ngắtTimer,ngắtI2C‐SPI,ngắtonchangePORTB.v.v… TabDriversđượcdùngđểlựachọnnhữngngoạivimàtrìnhdịchđãhỗtrợcáchàm giaotiếp.ĐâylànhưngngoạivimàtasẽkếtnốivớiPIC,trongcácICmàCCShỗtrợ,đáng chú ý là các loại EEPROM như 2404, 2416, 2432, 9346, 9356…Ngoài ra còn có IC RAM PCF8570,ICthờigianthực DS1302,Keypad3x4,LCD,ADC…Chitiếttacóthểxemtrong thưmụcDrivercủachươngtrình:\ \PICC\Drivers Hình2.7:TabInterrupts Hình2.8:TabDriver Saucácbướcchọntrên,tanhấnOKđểkếtthúcquảtrìnhtạomộtProjecttrongCCS, mộtFilesten_project.cđượctạora,chứanhữngkhaibáocầnthiếtchoPICtrongmộ tFiles ten_project.h.Dướiđâylànộidungmộtfileschươngtrìnhmẫu. Ngườibáocáo: NguyễnChíLinh Tàiliệu: TUT01.01.PVN Ngày: 9/8/2006 Trang: 9/32 Chuong_trinh_mau.c #includeʺD:\1‐PICproject\chuongtrinhtest.HEX.hʺ #int_EXT EXT_isr() { //Codehere } VoidChuong_trinh_con() { //Codehere } voidmain() { setup_adc_ports(AN0); setup_adc(ADC_CLOCK_INTERNAL); setup_psp(PSP_DISABLED); setup_spi(FALSE); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_INTERNAL|T1_DIV_BY_1); setup_timer_2(T2_DISABLED,0,1); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); enable_interrupts(INT_EXT); enable_interrupts(INT_TBE); enable_interrupts(INT_RDA); enable_interrupts(GLOBAL); //Enteryourcodehere } Chuong_trinh_mau.h #include<16F877A.h> #deviceadc=8 #FUSESNOWDT,HS,NOPUT,NOPROTECT,NODEBUG, #usedelay(clock=20000000) #defineSRAM_SCLPIN_C3 #defineSRAM_SDAPIN_C4 #users232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=9) Ngườibáocáo: NguyễnChíLinh Tàiliệu: TUT01.01.PVN Ngày: 9/8/2006 Trang: 10/32 2.2. MẫuchươngtrìnhchuẩncholậptrìnhCCS PhầntrêntađãtìmhiểucáchtạomộtProjecttrongCCS,tuynhiêntheocáchđómất khánhiềuthờigian,mặtkhácmỗingườilậptrìnhsẽtạoranhưngformtàiliệutheocách riêngkhácnhau,khôngđồngnhất.Tàiliệukhôngđượcchuẩnhóasẽgâymộtsốkhókhăn chongườiđọc,ngườiđọccóthểkhônghiểuhếtnhữnggìmàngườilậptrìnhmuốndiễnđạt. VớimụcđíchđưaramộtformtàiliệuchuẩnchoviệclậptrìnhbằngCCS,quathamkhảo bảnmẫucholậptrìnhbằngASMcủaanhFalleaftrêndiễnđànWWW.PICVIETNAM.COM tôiđưarađâymộtformtàiliệuchoviệcviếtlậptrìnhbằngCCS.Đikèmvănbảnnàycòncó cácfilesnguồnchovănbảnmẫu,baogồmfileschoPIC16F877A,16F876A,16F88.Về saukhi lậptrìnhbạnchỉviệccopytàiliệunàyvàothưmụcchứaProjectcủabạn,sửađổitênfiles. KhicầnthayđổinộidungcấuhìnhchoPICbạnchiviệcthamkh ảoquaPICWizard,xem codevàcopyđưavàoProject. Môtảnộidungchươngtrình. ‐ #include16f877a.h:Đikèmchươngtrìnhdịch,chứakhaibáovềcácthanhghitrong mỗiconPIC,dùngchoviệccấu hìnhchoPIC. ‐ #includedef_877a.h:Filesdongườilậptrìnhtạora,chứakhaibáovềcácthanhghi trongPICgiúpchoviêclậptrìnhđượcdễdanghơnvídụtacothểgánPORTB= 0xAA(chitiếtfilesnàysẽtrìnhbàytrongphầndướiđây) ‐ #device*=16ADC=10:Khaibáodùngcontrỏ8hay16bit,bộADClà8hay10bit ‐ #FUSESNOWDT,HS:KhaibáovềcấuhìnhchoPIC ‐ #usedelay(clock=20000000):Tầnsốthạchanhsửdụng ‐ #users232(baud=9600,…):KhaibáochogiaotiếpnốitiếpRS232 ‐ #usei2c(master,SDA=PIN_C4,…):KhaibáodùngI2C,chếđộhoạtđộng ‐ #include<tên_file.c>:KhaibáocácfilesthưviệnđượcsửdụngvídụLCD_lib_4bit.c ‐ #INT_xxx:Khaibáođịachỉchươngtrìnhphụcvụngắt ‐ Voidtên_chương_trình(tên_biến){}:Chươngtrìnhchínhhaychươngtrìnhcon [...]...Người báo cáo: Nguyễn Chí Linh Tài liệu: TUT01.01.PVN Ngày: 9/8/2006 Trang: 11/32 Chương trình mẫu cho PIC16F877A //================================================= ======= // Ten chuong trinh : Mach test den LED_1 // Nguoi thuc hien ... #int_xxx // Khai bao chuong trinh ngat xxx_isr() { // Code here } void Ten_chuong_trinh_con(Ten_Bien) { // Code here } void main() { // Enter code here! } Người báo cáo: Nguyễn Chí Linh Tài liệu: TUT01.01.PVN Ngày: 9/8/2006 Trang: 12/32 Chương trình mẫu cho PIC16F876A //================================================= ======= // Ten chuong trinh : Mach test den LED_1 // Nguoi thuc hien ... #int_xxx // Khai bao chuong trinh ngat xxx_isr() { // Code here } void Ten_chuong_trinh_con(Ten_Bien) { // Code here } void main() { // Enter code here! } Người báo cáo: Nguyễn Chí Linh Tài liệu: TUT01.01.PVN Ngày: 9/8/2006 Trang: 13/32 Chương trình mẫu cho PIC16F88 //================================================= =======A // Ten chuong trinh : Mach test den LED_1 // Nguoi thuc hien ... #int_xxx // Khai bao chuong trinh ngat xxx_isr() { // Code here } void Ten_chuong_trinh_con(Bien) { // Code here } void main() { // Enter code here! } Người báo cáo: Nguyễn Chí Linh Tài liệu: TUT01.01.PVN Ngày: 9/8/2006 Trang: 14/32 3 Một số ví dụ cho lập trình CCS Với mục tiêu giúp người đọc nhanh chóng lắm bắt được cách lập trình C cho PIC thông qua chương trình dịch CCS. Dưới đây tôi giới thiệu một vài bài lập trình đơn giản cho PIC, ... người. Chúc thành công! Một điều chú ý là tất cả các mạch điện và code tôi trình bày dưới đây tôi đều đã lắp mạch thật trên bo cắm và chạy tốt. Người báo cáo: Nguyễn Chí Linh Tài liệu: TUT01.01.PVN Ngày: 9/8/2006 Trang: 15/32 3.1 Chương trình nhấp nháy LED Nhấp nháy LED có thể coi là một chương trình “Kinh điển”. Mỗi người khi bắt tay vào học VĐK thì bài học đầu tiên là làm nhấp nháy một hay vài con LED trên chân VĐK. Trong ... RE1/WR/AN6 RE2/CS/AN7 VSS VSS VDD VDD 15 16 17 18 23 24 25 26 19 20 21 22 27 28 29 30 8 9 10 11 32 VCC C2 22p Hình 3.1. Sơ đồ mạch nháy 8 LED tại PORTB Người báo cáo: Nguyễn Chí Linh Tài liệu: TUT01.01.PVN Ngày: 9/8/2006 Trang: 16/32 VCC VDD LM7805C/TO220 U3 1 3 IN OUT C4 100uF/50V C3 4.7uF/25V R11 R D9 LED Hình 3.2. Sơ đồ mach nguồn cho PIC Mã nguồn chương trình nạp vào PIC //================================================= ======= ... #include #device *=16 ADC=8 #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT #use delay(clock=20000000) void main() Người báo cáo: Nguyễn Chí Linh Tài liệu: TUT01.01.PVN Ngày: 9/8/2006 Trang: 17/32 { // Thiet lap che do cho PORTB TRISB = 0x00; // Tat ca PORTB deu la cong xuat du lieu PORTB = 0xFF; // Tat het cac LED While(1) { PORTB = 0; ... Vi điều khiển PIC là một trong những dòng Vi điều khiển có phần giao tiếp ngoại vi mạnh và đa dạng. Bên trong PIC đã được tích hợp sẵn một bộ ADC có độ phân giải tối đa Người báo cáo: Nguyễn Chí Linh Tài liệu: TUT01.01.PVN Ngày: 9/8/2006 Trang: 18/32 là 10‐bít (tùy chon là 8‐bit hay 10‐bit). Với bộ ADC trong PIC ta có thể làm được khá nhiều công việc, dưới đây tôi trình bày một ứng dụng của bộ ADC trong việc thiết kế mạch đo ... int1 do_F; void convert_bcd(int8 x); void bao_dong(); void test(); //‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ void main() { Người báo cáo: Nguyễn Chí Linh Tài liệu: TUT01.01.PVN Ngày: 9/8/2006 Trang: 19/32 float value; on_off =1; min =15; //nhiet do min default max =35; //nhiet do max default do_F =0 ; i = 50 ; mode =0 ; mode1 = 0 ; ... LCD_putcmd(0xC0); Printf(LCD_putchar,ʺKhoi tao xongʺ); while(1) { if (i==50) { value = read_adc(); Người báo cáo: Nguyễn Chí Linh Tài liệu: TUT01.01.PVN Ngày: 9/8/2006 Trang: 20/32 value=(value‐558.5)/2.048; if (do_F==1) value=1.8*value+32; convert_bcd((int8)value); printf(ʺ\n\rNhiet do phong: %uʺ,value);// Gui gia tri len may tinh . Ngườibáocáo: NguyễnChíLinh Tàiliệu: TUT01. 01. PVN Ngày: 9/8/2006 Trang: 1/32 TUT01. 01. PVN Gửiđến: www.picvietnam.com Nộidung: LậptrìnhchoPICbằngCCS. ộtchươngtrìnhbaogồmcả trìnhsoạ nthảovàbiêndịchlàCCS,phiênbảnmớinhấtlàPCWHCompilerVer3.227 Ngườibáocáo: NguyễnChíLinh Tàiliệu: TUT01. 01. PVN Ngày: 9/8/2006 Trang: 2/32 GiốngnhưnhiềutrìnhbiêndichCkhácchoPIC,CCSgiúpchongườisửdụngnắmbắt nhanhđượcviđiềukhiển. chươngtrìnhlàmviệcPICCCompiler.Từgiaodiệnchương trìnhbạndichuộtchọnProject‐>New‐>PICWizardnhấnnúttráichuộtchọn. Ngườibáocáo: NguyễnChíLinh Tàiliệu: TUT01. 01. PVN Ngày: 9/8/2006 Trang: 3/32 Saukhinhấnchuột,mộtcửasổhiệnrayêucầubannhậptênFilescầntạo.Bạntạomột thưmụcmới,vàothưmụcđóvàlưutênfilescầntạotạiđây. Hình2.0:CửasổSaveAs