1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Kỹ thuật bảng, Pic

14 162 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 14
Dung lượng 338,37 KB

Nội dung

Kỹ thuật bảng, Pic

Ngườibáocáo: NguyễnTrungChính Tàiliệu: TUT03.02 Ngày: 3/6/2006 Trang: 1/14 Tutorial03.02  Gửiđến: picvietnam@googlegroups.com Nộidung: Bài3:KĨTHUẬTBẢNG  MICROSOFTWORD  Tómtắt: Tutorialpostlênpicvietnam,topic“PIC16F877ATỪDỄTỚIKHÓ”thuộcluồng“CƠBẢNVỀ VIĐIỀUKHIỂN VÀPIC”vớinộidung: ‐ PhântíchgiảithuậtkĩthuậtbảngvàmộtsốứngdụnghiểnthịvớiLED.  1. Đặtvấnđề Trướckhiphântíchgiảithuậtcủakĩthuậtbảngtathựchiệnmộtứngdụngnhỏ,coinhư vừaônlạibàicũ,vừadặtracácvấnđềchobàimới.Ứngdụngnàysửdụngmạchnguyênlíđã đượcxâydựngởbài1. Ứngdụng1:ChomộtLEDchạytừtráisangphảisaumỗikhoảngthờigiandelay100ms. TađãxâydựngmộtmạchứngdụngbaogồmcácLEDđượcgắnvàoPORTBcủaviđiều khiểnPICthôngquacácđiệntrở,vàmuốnLEDnàosáng,cầnxuấtgiátrịlogic1rachân tươngứngcủaPORTB.Đểthuậntiệnchoviệctheodõi,sơđồm ạchsẽđươcđưalạitronghình dướiđây. R5 D2 4 MHz HI R6 D7 D5 D4 0 R2 R1 0 R9 D3 HI SW1 1 2 0 R7 D8 0 D1 0 R3 HI R4 PIC16F877A 8 9 10 12 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 1 13 2 3 4 5 6 7 33 34 35 36 37 38 39 40 11 32 RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7 GND OSC2/CLKOUT RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCK/SCL RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RC4/SDI/SDA RC5/SDO RC6/TX/CK RC7/RX/DT RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7 GND MCLR/VPP OSC1/CLKIN RA0/AN0 RA1/AN1 RA2/AN2/VREF-/CVREF RA3/AN3/VREF+ RA4/TOCKI/C1OUT RA5/AN4/SS/C2OUT RBO/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD VDD VDD R8 C1 30 pF D6 C2 30 pF Hình 1: Sơ đồ nguyên lí mạch ứng dụng. Ngườibáocáo: NguyễnTrungChính Tàiliệu: TUT03.02 Ngày: 3/6/2006 Trang: 2/14 TađãbiếtđượccáchthiếtlậpgiátrịchocácchânI/Ocủaviđiềukhiển(bài1),cáchviết chươngtrìnhdelay(bài2),vàmuốncácLEDdịchtừtráisangphải,tasửdụngmộttronghai lệnhsau: LệnhRLF Cúpháp: RLF thanh_ghi,noi_den Tácdụng:dịchtráicácbittrongthanhghi“thanh_ghi”thôngquacờcarryC (thanhghichứcnăngSTATUS).Kếtquảsaukhidịchđượclưuvàothanhghi ”thanh_ghi”nếuthamsố“noi_den”manggiatrị1hoặcthanhghiWnếutham số“noi_den”manggiátrị0.Cóthểhìnhdungcáchdịchcủalệnhnàytheo hìnhdưới.  LệnhRRF  Cúpháp: RRF thanh_ghi,noi_den Tácdụng:dịchphảicácbittrongthanhghi“thanh_ghi”thôngquacờcarry C(thanhghichứcnăngSTATUS).Kếtquảsaukhidịchđượclưuvàothanhghi ”thanh_ghi”nếuthamsố “noi_den”manggiatrị1hoặcthanhghiWnếutham số“noi_den”manggiátrị0.Cóthểhìnhdungcáchdịchcủalệnhnàytheo hìnhdưới.   Đếnđâyxemnhưtađãcóđầyđủcácthôngtinđểviếtchươngtrình.Giảithuậtcũng kháđơngiản,cácbướctiếnhànhlầnlượtnhưsau: ‐ ĐưavàothanhghiPORTBgiátrị10000000b(choLEDđầu tiênsáng). ‐ DịchphảigiátrịtrongthanhghiPORTB(LEDsángcũngđượcdịchtươngứng). ‐ Delay100ms. ‐ Lặplạibước2. Vàđây,chươngtrìnhcủaứngdụng: Chươngtrình3.1: ;============================================================================= ;WWW.PICVIETNAM.COM ;Laptrinh:  NGUYENTRUNGCHINH ;Ngaybatdau:  23thang01nam2006 Ngườibáocáo: NguyễnTrungChính Tàiliệu: TUT03.02 Ngày: 3/6/2006 Trang: 3/14 ;Ngayhoanthanh: 23thang01nam2006 ;Kiemtrachuongtrinh: picvietnam@googlegroups.com ;Ngaykiemtra:  ;SudungvidieukhienMicrochip: PIC16F877A title “chuongtrinh3‐1.asm” processor 16f877a include <p16f877a.inc> __CONFIG _CP_OFF&_WDT_OFF&_BODEN_OFF&_PWRTE_ON&_XT_OSC& _WRT_OFF&_LVP_OFF&_CPD_OFF ;Capnhatvabosung: ;Motachuongtrinh: ChuongtrinhdungdedieukhienmộtLEDsangdịchsangphaisau ;moikhoangthoigian100ms. ;Motaphancung: 8LEDduocganvaoPORTBthongquacacdientro,cac ;thanhphandikembaogomthachanh,machresetvanguon ;================================================================================ ;‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ ;Khoitaocacbien ;‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ count1 EQU 0x20 ;cacbiendungchodoanchuongtrinhdelay counta EQU 0x21 countb EQU 0x22 ;============================================================================= ;CHƯƠNGTRÌNHCHÍNH ;============================================================================= ORG 0x000 GOTO start start;chươngtrìnhchínhbắtđầutạiđây ;‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ ;KhởitạoPORTB ;‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ Ngườibáocáo: NguyễnTrungChính Tàiliệu: TUT03.02 Ngày: 3/6/2006 Trang: 4/14 BCF  STATUS,RP1 BSF STATUS,RP0 ;chọnBANK1 CLRF TRISB  ;PORTB<‐outputs BCF STATUS,RP0 ;chọnBANK0 MOVLW b’10000000’ ;bậtLEDđầutiênsánglên MOVWF PORTB ;PORTB<‐b‘10000000’  ;‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐  ;Vònglặpchínhcủachươngtrình   ;‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ loop CALL delay100ms ;gọichươngtrìnhcondelay100ms RRF PORTB,1 ;dịchphảithanhghiPORTB ;kếtquảsaukhidịchlưuvàothanhghiPORTB GOTO loop  ;vònglặpvôhạn ;================================================================================ ;CHƯƠ NGTRÌNHCON ;================================================================================ delay100ms;chươngtrìnhcondelay100ms MOVLW d’100’ MOVWF count1 d1 MOVLW 0xC7 MOVWF counta MOVLW 0x01 MOVWF countb delay_0  DECFSZ counta,1 GOTO $+2 DECFSZ countb,1 GOTO delay_0 Ngườibáocáo: NguyễnTrungChính Tàiliệu: TUT03.02 Ngày: 3/6/2006 Trang: 5/14 DECFSZ count1,1 GOTO d1 RETURN;trởvềchươngtrìnhchính END;kếtthúcchươngtrình ;================================================================================ Xong!Đếnđâytacóthểcảmnhậnđượcrằngdườngnhưviệcpháttriểncácứngdụng đãtrởnêndễdànghơntrước.TươngtựtacóthểđiềukhiểncácLEDdịchtừphảisangtrái (thaylệnhRRFbằnglênhRLF). Bâygiờ,giảsửyêucầucủaứngdụngkhôngphảilàdịchtráihaydịchphải,màlàdịch theomộtquiluậtphứctạpnàođóhoặcchẳngcầnquiluậtdịchnàocả.Rõràngcáclệnh RLFhayRRFkhôngđủkhảnănggiảiquyếtđượcvấnđề,hoặcnếucóthìgiảithuậtcho chươngtrìnhsẽrấtphứctạpvìphảitìmraquiluậtdịchLEDmàyêucầuđặtra.Tuynhiên mọikhókhăndườngnhưđềucócáchgiảiquyếtriêngcủanó,vàtậplệnhcủaPICcung cấpchotamộtcôngcụđểgiảiquyếtkhókhăntrên:lệnhRETLW.Cóthểchorằngđâylà mộtlệnhrấtquantrọngtrongviệcpháttriểncácứngdụngvàgiảithuậtchoviđiềukhiển PIC.Kĩthuậtbảngcũngđượcxâydựngdựatrênlệnhnày.Phầntiếptheosẽphântíchgiải thuậtcủakĩthuậtnày.  2. Kĩthuậtbảng 2.1. Cácthôngtincơsởđểxâydựngkĩthuậtbảng 2.1.1 Cáclệnhhỗtrợchokĩthuậtbảng. TrongbàitrướctatừngbiếtđếnlệnhRETLWvớivaitrònhưlệnhRETURN(trởvề chươngtrìnhchínhtừchươngtrìnhcon),tacũngđãbiếtđượ ccáchsửdụnglệnhnày nhưthếnào.Đểthuậntiệnchoviệctheodõi,lệnhRETLWcũngsẽđượcnhăclạiởđây cùngvớimộtsốlệnhđượcsửdụngchoviệcpháttriểnk ĩthuậtbảng. LệnhRETLW Cúpháp:RETLW k (0≤k≤255) Tácdụng:trởvềchươngtrìnhchínhtừchươngtrìnhconvớigiátrịkđược chứatrongthanhghiW. LệnhADDLW Cúpháp:ADDLW k (0≤k≤255) Tácdụng:cộnggiátrịkvàogiátrịchứatrongthanhghiW,kếtquảchứa trongthanhghiW. Lệnh nàyđược hỗ trợ bởi các bit trạng thái C, DC, Z trong thanh ghi Ngườibáocáo: NguyễnTrungChính Tàiliệu: TUT03.02 Ngày: 3/6/2006 Trang: 6/14 STATUS.Chứcnăngcáclệnhnàysẽđượcbànđếnkĩhơnkhicầnpháttriển cácứngdụngliênquanđếncácbittrạngtháinày. LệnhADDWF Cúpháp: ADDWF thanh_ghi,noi_den Tácdụng:CộnggiátrịchứatrongthanhghiWvàothanhghi“thanh_ghi”. Kếtquảđượcchứatrongthanhghi“thanh_ghi”nếuthamsố“noi_den”mang  giátrị1hoặcthanhghiWnếuthamsố“noi_den”manggiátrị0. LệnhnàycũngđượchỗtrợbởicácbittrạngtháiC,DC,Ztrongthanhghi STATUS. LệnhBTFSS Cúpháp: BTFSS thanh_ghi,bit (0≤bit≤7) Lệnh1 Lệnh2 ………  Tác dụng: kiểm tra bitđược chỉ định bởi tham số “bit” trong thanh ghi “thanh_ghi”.Nếubitđóbằng0,lệnh1đượcthựcthi.Nếubitđókhác0,lệnh1 đượcbỏquavàthayvàođólàlệnhNOP. LệnhBTFSC Cúpháp:  BTFSC thanh_ghi,bit (0≤bit≤7) Lệnh1 Lệnh2 ……………. Tác dụng: kiểm tra bitđược chỉ định bởi tham số “bit” trong thanh ghi “thanh_ghi”.Nếubitđób ằng1,lệnh1đượcthựcthi. Nếubitđóbằng0,Lệnh tiếptheođượcbỏquavàthayvàođóbằnglệnhNOP. Leänh INCF Cúpháp:INCF thanh_ghi,noi_den  Tácdụng:tanggiátrịthanhghi“thanh_ghi”len1đơnvị.Kếtquảđượclưu vàothanhghiWnếuthamsố“noi_den”bằng0hoặcthanhghi“thanh_ghi” nếuthamsố“noi_den”bằng1. LệnhnàyđượchỗtrợbởibitZtrongthanhghiSTATUS. Ngườibáocáo: NguyễnTrungChính Tàiliệu: TUT03.02 Ngày: 3/6/2006 Trang: 7/14 LệnhDECF Cúpháp:DECFthanh_ghi,noi_den Tácdụng:giảmgiátrịthanhghi“thanh_ghi”1đơnvị.Kếtquảđượcchứa trongthanhghiWnếu“noi_den”bằng0hoặcthanhghi“thanh_ghi”nếu “noi_den”bằng1. LệnhnàyđượchỗtrợbởibitZtrongthanhghiSTATUS. LệnhMOVF Cúpháp:MOVF thanh_ghi,noi_den Tácdụng:đưagiátrịtrongthanhghi“thanh_ghi”vàothanhghiWnếu thamsố“noi_den”bằng0hoặcthanhghi“thanh_ghi”nếuthamsố“noi_den” bằng1. Việcđưagiátrịtrongthanhghi“thanh_ghi”vàothanhghi“thanh_ghi”có vẻvônghĩa.ThôngthườngcôngviệcnàydùngđểthiếtlậpcácgiátrịchobitZ (thanhghiSTATUS).Tasẽbànđếnkĩhơnthaotácnàykhixâydựngcácứng dụngliênquanđếnnó. LệnhXORLW Cúpháp:XORLW k (0≤k≤255) Tácdụng:thựchiệnphéptoánXORgiữagiátrịkvảgiátrịtrongthanhghi W.KếtquảđượcchứatrongthanhghiW.Nếukếtquảphéptoánbằng0,bitZ (thanhghiSTATUS)sẽmanggiátrị1.Nếukếtquảphéptoánkhác0,bitZsẽ manggiátrị0. XembảngsauđểbiếtđượckếtquảlogickhithựchiệnphéptoánXOR giữahai thamsốAvàB: A B Kếtquả 0 0 0 0 1 1 1 0 1 1 1 0  Ngườibáocáo: NguyễnTrungChính Tàiliệu: TUT03.02 Ngày: 3/6/2006 Trang: 8/14 LệnhXORWF Cúpháp:XORWF thanh_ghi,noi_den Tácdụng:thựchiệnphéptoánXORgiữacácgiátrịchứatrongthanhghiW vàthanhghithanh_ghi.KếtquảđượcchứatrongthanhghiWnếuthamsố «noi_den»manggiátrị0hoặcthanhghi«thanh_ghi»nếuthamsố «noi_den»manggiátrị1. LệnhnàycũngđượchỗtrợbởibitZtrongthanhghiSTATUS.   TacómộtsốnhậnxétvềphéptoánXORnhưsau: ‐KhihaibiếnAvàBmanggiátrịgiốngnhau,kếtquảcủaphéptoánlà0 ‐KhihaibiếnAvàBmanggiátrịkhácnhau,kếtcủaquảphéptoánbằng1 Nhưvậy,giảsửAvàBbằngnhau,thìkếtquảphéptoán(AXORB)sẽbằng0,khi đó,trongtrườnghợpcấutạophầncứngcủaviđiềukhiểnPIC,bitZsẽmangmứclogic 1.CầnchúýlàtậplệnhPICkhôngcóphéptoánsosánh,nênlệnhXORLWvàbitZcủa thanhghiSTATUSđượcsửdụngđểxâydựnggiảithuậtthựchiệnviệcsosánhgiữa haisố.  2.1.2 ThanhghiPC. Tađãbiếtkhôngnhưvixửlíhayvihọđiềukhiển8051,doPICđượcthiếtkếtheo lốikiếntrúcHavardnênbộnhớchươngtrìnhvàbộnhớdữliệuđượctáchriêng.Vàđể thaotácđượcvớibộnhớchươngtrìnhtrongviđiềukhiểnPIC,thanhghiPCđượcđưa vàođểdùngchoviệctruyxuấtbộnhớchươngtrình.Đâylàthanhghichứađịachỉcác lệnhtiếptheosẽđượcthựcthitrongbộnhơchươngtrình. ĐốivớiviđiềukhiểnPIC16F877A,thanhghiPClàthanhghi13bit,baogồmhai thanhghiPCL(chứa8bitthấp)vàthanhghiPCH(chứacácbit caocònlại).Tạisaolà 13bit??Câutrảlờilàphảidùng13bitđểmãhóahếtđượcđịachỉcủabộnhớchương trìnhcódunglượnglà8KwordcủaPIC16F877A(8Kword=2 3 x2 10 word=2 13 word). Nhưvậymớibảođảmcóthểtruyxuấtđếnbấtkìônhớnàotrongbộnhớchươngtrình củaviđiềukhiển. TrướcmắttasẽkhôngcầnquantâmtớithanhghiPCH(vìthanhghinàykhông nằmtrongbộnhớdữliệu)màchỉquantâmtớithanhghiPCL.Thanhghinàycótrong bộnhớdữliệu,diềuđócónghĩanóchophépcácthaotácnhưmộtthanhghithông thường(ghi,xóa,truyxuất, ).ThayđổigiátrịtrongthanhghiPCLsẽlàmthayđổi quátrìnhtruyxuấtbộnhớchươngtrìnhcủaviđiềukhiển.Việcthaotáctrênthanhghi PCLcầnhếtsứccẩntrọngvìnósẽlàmthayđổiquátrìnhthựcthilệnhvàlàmảnh Ngườibáocáo: NguyễnTrungChính Tàiliệu: TUT03.02 Ngày: 3/6/2006 Trang: 9/14 hưởngnghiêmtrọngđếngiảithuậtcũngnhưtácdụngcủachươngtrình.Tuynhiên nếukiểmsátđược,tacóthểđiềukhiểnmộtcáchlinhđộngdòngchảycủachươngtrình khi viđiềukhiểnhoạtđộng.Cầnkiểmsoátmộtcáchchặtchẽviệcthaotáctrênthanh ghiPCL,đócũnglàyêucầuquantrọngcủakĩthuậtbảng. Cóthểtìmhiểuthêmthông tinvềthanhghinàytrongdatasheetcủanhàsảnxuất. Tacũngnêntìmhiểucácđểbiếtthêmvàđểkiếmchứnglạicácthôngtintrongbai, đồngthờigiúptacóthêmđượcmộtsốkĩnăngtrongviệckhaithácthôngtintrong datasheetcủamộtsảnphẩmđiệntử.Trongbàinàytachỉcầntìmhiểucácthôngtinđủ đểphụcvụchobài.  2.2. Phântíchgiảithuậtkĩthuậtbảng Tasẽphântíchkĩthuậtnàythôngquamộtứngdụng.Yêucầucủaứngdụngnhưứng dụng1màtađãthựchiệnthànhcôngởphần1,đólàchomộtLEDchạytừtráisangphải, nhưnglầnnàythayvìsửdụnglệnhRLFhayRRF,tasẽsửdụngkĩthuậtbảng.Việcứng dụngkĩthuậtbảngtrongtrườnghợpnàykhôngmangtínhchấttốiưu hóagiảithuật,mà chỉmangtínhchấttìmhiểumộtkĩthuậtviếtchươngtìnhmới. Chươngtrìnhtrongvídụ1đượcviếtlạinhưsau:  Chươngtrình3.2: ;============================================================================= ;WWW.PICVIETNAM.COM ;Laptrinh:  NGUYENTRUNGCHINH ;Ngaybatdau: 23thang01nam2006 ;Ngayhoanthanh: 23thang01nam2006 ;Kiemtrachuongtrinh:picvietnam@googlegroups.com ;Ngaykiemtra:  ;SudungvidieukhienMicrochip: PIC16F877A  title “chuongtrinh3‐2.asm” processor 16f877a  include <p16f877a.inc>  __CONFIG _CP_OFF&_WDT_OFF&_BODEN_OFF&_PWRTE_ON& _XT_OSC&_WRT_OFF&_LVP_OFF&_CPD_OFF ;Capnhatvabosung: Ngườibáocáo: NguyễnTrungChính Tàiliệu: TUT03.02 Ngày: 3/6/2006 Trang: 10/14 ;Motachuongtrinh: ChuongtrinhdungdedieukhiencacLEDganvao ;PORTBlầnlượtchạytừtráisangphảisaumoikhoangthoi ;gian100ms. ;   Sudungkithuatbang ;Motaphancung: 8LEDduocganvaoPORTBthongquacacdientro,cac ;thanhphandikembaogomthachanh,machresetvanguon ;============================================================================= ;‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ ;Khoitaocacbien ;‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ count1 EQU 0x20  ;Dùngchochươngtrìnhdelay counta EQU 0x21  ;Dùngchochươngtrìnhdelay countb EQU 0x22  ;Dùngchochươngtrìnhdelay count EQU 0x23  ;dùngđểtrabảngdữliệu ;============================================================================= ;CHUONGTRINHCHINH ;=============================================================================  ORG 0x000  GOTO start start ;‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ ;KhởitạoPORTB ;‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐  BCF  STATUS,RP1  BSF STATUS,RP0  ;chọnBANK1  CLRF TRISB  ;PORTB<‐outputs  BCF STATUS,RP0 ;chọnBANK0 ;‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ ;Vònglặpchínhcủachươngtrình ;‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ [...]... Ngày:  3/6/2006  Trang:  14/14  Ứng dụng của kĩ thuật bảng trong việc xây dựng các giải thuật cho chương trình viết cho vi  điều khiển PIC cũng rất đa dạng và thường xuyên. Nhận định này sẽ được thể hiện rõ ràng  hơn trong các bài sau. Có thể nói đây là một kĩ thuật quan trọng.   Thông qua bài này, ta cũng cảm nhận được một nhược điểm của họ vi điều khiển PIC cũng như các vi điều khiển RISC, đó là các lệnh hỗ trợ cho vi điều khiển không nhiều, dẫn đến ... thao tác nên thực hiện để giúp làm quen với kĩ thuật mới này.  Như thường lệ, sau đây sẽ là một số kết luận cho bài 3.    3 Kết luận  Kĩ thuật bảng được xây dựng dựa trên các thông tin về cấu tạo vi điều khiển PIC,  đó là các  thông tin về thanh ghi PC (Program Counter) và nguyên tăc hoạt động của nó. Bên cạnh đó là  thông tin về lệnh RETLW và cách ứng dụng của nó.   Sử dụng kĩ thuật bảng cho phép điều khiển một cách linh hoạt việc thay đổi dữ liệu trong ... thanh ghi W và thông qua đó, các dữ liệu sử dụng trong chương trình cũng sẽ được truy xuất  một cách linh hoạt hơn.   Giải thuậtthuật bảng cũng đòi hỏi việc sắp xếp và tổ chức chương trình ở một cấp độ  cao hơn, bằng chứng là yêu cầu khắt khe trong việc kiểm soát việc thực thi các lệnh trong  chương trình và các lệnh hỗ trợ cho kĩ thuật này cũng khá nhiều. Bên cạnh đó là yêu cầu trong  việc tổ chức và sắp xếp một cách hợp lí dữ liệu trong bảng. ... ;===========================================================================  ; Các chương trình con  ;===========================================================================  ;‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐  ; Chương trình con cho kĩ thuật bảng  ;‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐  table                ADDWF         PCL,1     ; cộng giá trị trong thanh ghi W vào thanh ghi  ; PCL, kết quả chứa trong thanh ghi PCL ... countb,1    GOTO    delay_0    DECFSZ  count1,1    GOTO    d1          RETURN            END    ;=============================================================================   Ta cùng phân tích giải thuật của chương trình dựa trên các thông tin đã được cung cấp  ở phần 2.1. Sau mỗi lần lệnh “CALL  table” đuợc gọi, lệnh RETLW trong chương trình con  “table” sẽ mang giá trị từ bảng dữ liệu chứa trong thanh ghi W trở về chương trình chính. ... dữ liệu chỉ chứa 8 giá trị), khi đó dòng chương trình thực thi sẽ không còn đúng như ta  mong muốn, biến count sau mỗi lần tăng sẽ được so sánh với giá trị “8” thông qua lệnh  “XORLW” và bit trạng thái Z được kiểm tra thông qua lệnh “BTFSC   STATUS,Z” (giái  thuật cho việc so sánh đã được đề cập ở phần trên). Nếu giá trị trong thanh ghi count chưa  bằng 8, bit Z chưa mang giá trị 0, lệnh “GOTO  Loop1” được bỏ qua và quá trình lấy dữ  liệu lai được tiếp tục thông qua các lệnh tiếp theo sau đó. Nếu thanh ghi count đã bằng 8, 

Ngày đăng: 28/03/2014, 00:04

TỪ KHÓA LIÊN QUAN

w