EMC8BIT單片機(jī)指令應(yīng)用的誤區(qū)及其技巧_第1頁(yè)
EMC8BIT單片機(jī)指令應(yīng)用的誤區(qū)及其技巧_第2頁(yè)
EMC8BIT單片機(jī)指令應(yīng)用的誤區(qū)及其技巧_第3頁(yè)
EMC8BIT單片機(jī)指令應(yīng)用的誤區(qū)及其技巧_第4頁(yè)
EMC8BIT單片機(jī)指令應(yīng)用的誤區(qū)及其技巧_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、更多企業(yè)學(xué)院: 中小企業(yè)管理全能版183套講座+89700份資料總經(jīng)理、高層管理49套講座+16388份資料中層管理學(xué)院46套講座+6020份資料國(guó)學(xué)智慧、易經(jīng)46套講座人力資源學(xué)院56套講座+27123份資料各階段員工培訓(xùn)學(xué)院77套講座+ 324份資料員工管理企業(yè)學(xué)院67套講座+ 8720份資料工廠生產(chǎn)管理學(xué)院52套講座+ 13920份資料財(cái)務(wù)管理學(xué)院53套講座+ 17945份資料銷售經(jīng)理學(xué)院56套講座+ 14350份資料銷售人員培訓(xùn)學(xué)院72套講座+ 4879份資料更多企業(yè)學(xué)院: 中小企業(yè)管理全能版183套講座+89700份資料總經(jīng)理、高層管理49套講座+16388份資料中層管理學(xué)院46套講

2、座+6020份資料國(guó)學(xué)智慧、易經(jīng)46套講座人力資源學(xué)院56套講座+27123份資料各階段員工培訓(xùn)學(xué)院77套講座+ 324份資料員工管理企業(yè)學(xué)院67套講座+ 8720份資料工廠生產(chǎn)管理學(xué)院52套講座+ 13920份資料財(cái)務(wù)管理學(xué)院53套講座+ 17945份資料銷售經(jīng)理學(xué)院56套講座+ 14350份資料銷售人員培訓(xùn)學(xué)院72套講座+ 4879份資料更多企業(yè)學(xué)院: 中小企業(yè)管理全能版183套講座+89700份資料總經(jīng)理、高層管理49套講座+16388份資料中層管理學(xué)院46套講座+6020份資料國(guó)學(xué)智慧、易經(jīng)46套講座人力資源學(xué)院56套講座+27123份資料各階段員工培訓(xùn)學(xué)院77套講座+ 324份資料員

3、工管理企業(yè)學(xué)院67套講座+ 8720份資料工廠生產(chǎn)管理學(xué)院52套講座+ 13920份資料財(cái)務(wù)管理學(xué)院53套講座+ 17945份資料銷售經(jīng)理學(xué)院56套講座+ 14350份資料銷售人員培訓(xùn)學(xué)院72套講座+ 4879份資料吧EMC8B扳IT單片機(jī)礙指令應(yīng)用的鞍誤區(qū)與技巧頒EMC8B板IT單片機(jī)礙從入門到精八通之二:指板令應(yīng)用的誤辦區(qū)與技巧 壩EMC的基笆本指令語(yǔ)法叭,其實(shí)也就氨57/58般條,如何變白化折騰,就傲看各位的修拔行造化了。把但是,新手襖上路總?cè)菀装}進(jìn)入一些誤鞍區(qū),而老鳥柏們的一些技懊巧也值得借柏鑒。百?gòu)U話少說,拜言歸正傳,礙且看匠人娓愛娓道來盎7。巴哎壩1.減法指懊令的誤區(qū)艾 之凹一:關(guān)

4、于A瓣CC奧 E俺MC的減法霸指令有三條埃,如下:霸藹 SU扳B A,R奧 (R-A跋A)靶按 SU按B R,A板 (R-A爸R)頒跋 SU俺B A,K隘 (K-A版A)敗 需靶要注意的是凹,不論A的啊位置在前面壩還是后面,挨A都是減數(shù)靶,不是被減鞍數(shù).安7。傲 也擺就是說如果拜我們想計(jì)算盎A-2的值骯,如果寫成搬:稗稗 SU斑B A,半2 岸 其埃實(shí)是執(zhí)行2絆-A半 扳 解俺決方法如下靶:拜挨 AD把D A,吧256-2氨 或巴熬 AD頒D A,把254藹 百b。阿 之辦二:關(guān)于C哀Y骯 一扳般來說,加稗/減法都會(huì)埃影響到進(jìn)位爸標(biāo)志CY.奧 在班其它一些單頒片機(jī)指令系把統(tǒng)中,當(dāng)減吧法發(fā)生借位

5、案時(shí),CY=骯1,未發(fā)生半借位時(shí)CY罷=0.澳 如擺果你以為E拜MC的減法耙也是如此,礙哈哈,你就扮要吃藥了!把 原敖來,在EMC的指令系叭統(tǒng)中.當(dāng)減鞍法發(fā)生借位暗時(shí),CY=愛0,未發(fā)生霸借位時(shí)CY埃=1.版 如凹果不注意這岸點(diǎn),很容易壩在一些運(yùn)算拌或判斷程序半中留下BU稗Gh。耙2.查表(笆散轉(zhuǎn))指令靶的誤區(qū)艾 伴 之傲一:關(guān)于白ADD R柏2,A指骯令半U(xiǎn)。胺 在擺EMC15氨3/156隘的指令系統(tǒng)扒中,沒有T白BL指令(奧這一點(diǎn)要切哎記),當(dāng)要骯查表時(shí)只好扳用ADD敖 R2,A辦(或MO捌V R2,跋A)來代替白 但哎是使用A愛DD R2擺,A時(shí)要礙注意,這條跋指令只能改敗變PC指針頒的

6、低8位(鞍即256字暗節(jié)),高位般其它位一律邦清零!昂 所絆以使用A岸DD R2昂,A時(shí)必胺須保證整個(gè)暗表格都在R昂OM的每一瓣頁(yè)的前25笆6字節(jié)區(qū)間藹內(nèi).(15傲3/156盎只有一頁(yè))扳W。擺 大艾表格的使用板受到了限制擺,而且為了背將表格擠邦入00H埃FFH的吧ROM空間叭,程序的結(jié)斑構(gòu)受到破壞敖.叭h。 芭 之半二:關(guān)于板TBL指骯令懊 剛傲才說道,八ADD R哀2,A指扮令使用的諸拔多不爽之處皚.半 為翱此,EMC斑在447/捌458及后爸續(xù)的芯片的安指令系統(tǒng)中白,增加了一盎條新指令就是巴TBL指令笆.八 T吧BL是查表艾指令.號(hào)稱班可以放在程跋序的任何位暗置.頒 但矮是且慢-版-八

7、T按BL指令的胺使用也要注安意如下:隘 首鞍先,表格不叭能跨頁(yè)(每岸1024字氨節(jié)為一頁(yè)(安PAGE)愛)氨 其壩次,表格也藹不能跨段奧哎 阿 何阿為段?敖爸段是匠人案自定義的一百個(gè)概念:將敖每一頁(yè)分為佰4段,每一盎段256個(gè)叭字節(jié)(如:版00HF哀FH是一段柏,100H把1FFH敗又是一段)暗 哀 氨 也安就是說,每凹一個(gè)查表程懊序,除了T搬BL本身占扒用了一個(gè)字埃節(jié)以外表格拌長(zhǎng)度必須邦=255字挨節(jié).而且整凹個(gè)查表程序案必須在同一板段內(nèi)阿 翱 這俺個(gè)問題真是扒一個(gè)大大的鞍陷阱! 有皚時(shí)明明你的安程序都已經(jīng)哀調(diào)試好了,拜無意間調(diào)整靶了程序模塊百間的順序或阿增加/減少爸了幾條指令俺后,程序就翱

8、不正常了.俺 嘿按嘿,檢查你巴的LST文捌件吧,八成哎是TBL在罷做怪!叭 霸 另疤外,TBL安還是沒有解阿決大表格的芭查表問題,拌(只好象切翱豆腐一樣,芭將大表格切辦成一個(gè)個(gè)小懊于255字敖節(jié)的小表格礙去查了)皚f。藹3.關(guān)于“骯MOV R白,R”指令靶 伴 這懊是一條很奇擺特的指令,笆首先,閣下岸不要誤認(rèn)這靶條指令,以扮為它是將一安個(gè)寄存器的耙數(shù)據(jù)送到另白一個(gè)寄存器癌中去。匠人耙開始接觸E岸MC 8b暗it IC懊時(shí),就曾經(jīng)稗“中招”!吧后經(jīng)過高手八指點(diǎn),方得奧解脫我愛佛慈悲,嘔癌米脫佛!芭t。安 看扳清楚了:巴MOV R熬,R 中隘的兩個(gè)R是擺同一個(gè)寄存稗器,而它的暗動(dòng)作是將寄骯存器的內(nèi)

9、容懊送到本身。骯g。捌 如扒果你認(rèn)為這爸是無意義的藹動(dòng)作,那就凹大錯(cuò)特錯(cuò)了柏。礙 白 按暗匠人的經(jīng)驗(yàn)礙,這條指令扮至少有兩個(gè)癌用處:傲a。捌用處之一:鞍判零班 此巴指令的用意柏在于它能影跋響Zero礙 Flag盎,辨別寄存頒器的內(nèi)容是笆否為零。骯e。跋 如壩果要辨別某懊一個(gè)寄存器俺的值是否為案零,一般我班們會(huì)用艾拜 MO把V 巴A,R班敗 JB吧S 班STTS,邦Z絆 ;瓣 R3,Z跋ero F柏lag絆 這安兩個(gè)指令,皚但是這會(huì)影罷響ACC原奧先的內(nèi)容。傲若不要使用矮ACC,可奧能寫成皚巴 IN擺C 霸R罷俺 DE笆C 爸R奧骯 JB哎S 般STTS,辦Z霸 這班會(huì)用到三個(gè)哀指令。若使阿用M

10、OV 熬R,R的指跋令,不僅可盎達(dá)成相同功擺能,也可減凹少指令數(shù)目吧,可說是一胺舉兩得。扮班 MO百V 拌R,R暗挨 JB敗S 胺STTS,藹Z敗q。隘用處之二:哀將I/O口皚的外部電平埃狀態(tài)存入鎖八存器芭 鞍 說壩到這里,要隘先介紹一下板EMC的I拔O口特性了骯。叭 E擺MC的IO阿口一般都是敖三態(tài),可設(shè)凹置為巴 高阻(輸捌入);或輸頒出狀態(tài)吧 當(dāng)阿IO口設(shè)置為輸入狀態(tài)愛時(shí),只能“頒讀”,不能耙“寫”,C辦PU通過I班O口直接“癌讀”外部電哀平,如果這版時(shí)發(fā)生“寫扒”動(dòng)作,則阿數(shù)據(jù)并不會(huì)版輸出,而是澳被存放到一凹個(gè)鎖存器中矮,待到IO暗口變成輸出暗狀態(tài)時(shí),再柏將鎖存器中拔的數(shù)據(jù)送到背IO口上

11、。熬 辦注意:在隘這里,源寄氨存器和目的骯寄存器雖然按地址相同,辦但實(shí)質(zhì)不是巴一回事了。按(相當(dāng)于一矮個(gè)門牌住著扒兩戶人家)熬9。捌 假凹如有這么一絆條指令:M啊OV敖 R6,R白6骯 分艾析:先將R芭6口的外部礙電平狀態(tài)讀岸入,再送到R6的鎖存敖器里。擺E。奧 比版如:R6口伴作電平翻轉(zhuǎn)隘喚醒功能時(shí)案,必須先將扒其外部電平扒保存到鎖存班器中頒伴 MO哀V 搬R6,R6哀 然扒后開啟R6把口電平翻轉(zhuǎn)扒喚醒功能,拌當(dāng)R6口狀啊態(tài)與鎖存器瓣中發(fā)生變化百時(shí),即可觸翱發(fā)相應(yīng)中斷擺。盎 (稗R6的相應(yīng)瓣口必須設(shè)置柏為輸入狀態(tài)安) 佰F。盎再次提醒,頒“ MOV壩 R,R”傲指令 不能氨用作兩個(gè)寄靶存器間

12、送數(shù)盎用,如果要辦在兩個(gè)寄存瓣器間送數(shù),挨一定要通過傲中介公司頒ACC。澳 翱 如礙果想減輕寫拜程序的勞累白,那就把下按面這段宏插按入到你的程艾序中去:盎哎 MO藹V敖 MACR拜O 拔REG1,骯REG2捌板佰 MOV襖 A佰,REG2按白吧 MOV哎 R半EG1,A疤把 EN扳DM疤 這邦樣,當(dāng)你寫暗“MOV 暗REG1,哀REG2”霸時(shí),系統(tǒng)會(huì)凹自動(dòng)幫你轉(zhuǎn)捌化成兩條指拜令: 昂藹頒 MOV按 A芭,REG2礙頒拌 MOV巴 R辦EG1,A搬I。襖 澳領(lǐng)悟了否吧?我佛慈悲安,嘔米脫佛捌!扮一個(gè)按鍵稗的多次擊鍵礙組合判別技胺巧大話篇芭 盎小匠自從上傲次在舊社區(qū)俺發(fā)表了一篇矮大話篇板后,好久敖

13、沒有發(fā)表跋高論了.襖急壞了一幫霸MM,以為氨小匠退隱江艾湖了。擺U。岸(斑竹在旁擺問道:“M敖M”不是“熬Mie M百ie”,而艾是 “Ma瓣 Ma” 搬吧?)敖O。半論壇內(nèi)外謠骯言四起,有擺人說小匠改伴行了,不做白程序匠,改絆做泥水匠了白;還有人說安小匠上阿富版汗反恐怖去案了;其實(shí)非案也,只因新班板論壇啟用佰后,小匠一半直用不慣.板擺d。捌(斑竹在旁疤笑道:是“頒用不來”吧阿?)皚今天,小匠愛再次隆重登搬壇獻(xiàn)演。貼按一個(gè)小程序氨段辦.芭(斑竹道:艾我看是“蹬疤痰現(xiàn)眼”吧跋?)藹(程序匠人耙貼完帖子,笆下到后臺(tái),昂一邊洗著手暗上殘余的漿扳糊,一邊哼八著小曲:“柏如果你的氨芯是一座耙作坊,我愿皚

14、作那不知疲澳倦的程序匠霸,”)芭(一黑客悄巴悄貼近匠人瓣,將一個(gè)廢埃棄的漿糊桶版扣到匠人頭拔上巴.)頒(匠人忙問捌:“斑竹,斑誰(shuí)把燈給關(guān)扒了?”)版(眾人哈哈大笑!.八)襖H。埃一個(gè)按鍵的岸多次擊鍵組礙合判別技巧昂有時(shí)在設(shè)計(jì)藹中,往往要板用一個(gè)按鍵板來輸入多種胺信息。如:凹單擊/雙擊愛/三擊、短絆擊/長(zhǎng)擊、疤還有各種組敗合擊鍵方式百。可以用以版下程序來做稗。辦如果按鍵閉瓣合時(shí)間5瓣00MS,靶判斷為一次邦長(zhǎng)擊(1)胺;愛兩次擊鍵時(shí)捌間間隔應(yīng)笆700MS按,如果按鍵埃釋放后70柏0MS內(nèi)無奧鍵按下,則胺結(jié)束讀鍵。稗讀鍵完畢返擺回一個(gè)鍵號(hào)拜值KEY_擺NUM。其百意義如下:巴K。矮KEY_N靶UM

15、扒 藹意義懊 無拌鍵按下過藹 無凹意義案 單扒次短擊辦 單擺次長(zhǎng)擊奧 短啊擊 + 短斑擊頒 短安擊 + 長(zhǎng)唉擊挨 長(zhǎng)稗擊 + 短半擊按 長(zhǎng)傲擊 + 長(zhǎng)罷擊頒按 笆敗 7癌次短擊頒 7奧次長(zhǎng)擊絆1。辦上表中的K稗EY_NU艾M值的規(guī)律佰是,從左向把右看,第一盎個(gè)1后伴面的每一位艾代表一次擊搬鍵;0壩代表短擊,巴1代表哎長(zhǎng)擊。掌握皚該規(guī)律后,案我們可將任巴何一個(gè)8位阿的二進(jìn)制數(shù)拔翻譯成背一種擊鍵組唉合。例如:氨,代表的是叭:短+長(zhǎng)+罷短+長(zhǎng)+短霸+長(zhǎng)。八該程序最多癌可識(shí)別7次跋連續(xù)擊鍵,凹共254種版組合。但并板非每個(gè)程序搬中用得上。拜在大多數(shù)程跋序中,能判阿斷雙擊即可跋以了,這時(shí)頒可將程序中捌的

16、ZHBI懊T定義為2吧。同理,如癌果要判斷3搬次按鍵,將愛ZHBIT擺定義為3即搬可。耙當(dāng)ZHBI壩T=1時(shí),拜程序僅能判巴斷一次擊鍵半,包括2種啊組合(短擊昂/長(zhǎng)擊);頒當(dāng)ZHBI礙T=2時(shí),八程序還能判岸斷兩次擊鍵壩,包括6(斑2+4)種按組合(短擊跋/長(zhǎng)擊/(按短+短)/百(短+長(zhǎng))艾/(長(zhǎng)+短哀)/(長(zhǎng)+版長(zhǎng));以耙次類推,當(dāng)按ZHBIT鞍=3時(shí),程扳序能判斷三霸次擊鍵,包安括14(2拔+4+8)盎種組合。奧X。背ZHBIT阿 組絆合種類擺1 2矮2 埃2+4=6邦3 叭2+4+8疤=14瓣4 奧2+4+8辦+16=3矮0敗5 絆2+4+8俺+16+3礙2=62背6 癌2+4+8罷+1

17、6+3背2+64=跋126艾7 芭2+4+8挨+16+3傲2+64+辦128=2按54哎C。八下面這段程跋序摘自小匠藹的一個(gè)智能絆充電器程序懊(MCU是百EM78P扮458),翱如下:熬C。埃;*拔*百*柏*版*半*扒*礙;讀鍵子程柏序捌;出口:邦 KE捌Y_NUM奧 =罷鍵號(hào)值辦;中間:艾 KE斑Y_DL懊 =計(jì)癌數(shù)器敖;說明:班/*扮短擊:鍵按阿下時(shí)間5斑00MS霸兩次按鍵間白隔時(shí)間矮 鍵號(hào)低位挨;=昂=襖=藹=皚READK骯EYA:澳 C隘LR礙 KEY_皚DL拔 挨;清計(jì)數(shù)器昂READK斑EYB:礙 C壩ALL氨 DL1版0MS盎 I哎NC挨 KEY_霸DL背 M般OV骯 A,5皚0敗

18、 S跋UB癌 A,KE唉Y_DL埃 J霸BC阿 R3,C盎拜 扒 J埃MP盎 READ板KEYC白 ;計(jì)白數(shù)器溢出跳奧 J按KON案 REA愛DKEYB矮 ;霸鍵未釋放跳把 B鞍C 半R3,C敗俺 ;C=半0 巴 J芭MP班 READ班KEYD奧;=芭=辦=矮READK把EYC:傲 W翱DTC佰愛 絆;喂狗翱 J凹KON拔 REA絆DKEYC皚 ;岸鍵未釋放跳把 B吧S 澳R3,C斑按 ;C=稗1挨READK佰EYD:擺 R百LLC捌 KEY傲_NUM翱隘 ;鍵號(hào)胺左移一位,矮C - 扳鍵號(hào)低位靶 J案BC辦 KEY_絆NUM,Z案HBIT半 ;按柏鍵檢測(cè)未完哀成繼續(xù)奧 R拌ET白;=盎=伴=

19、壩=安 C霸LR昂 KEY_佰DL敗 半;清計(jì)數(shù)器耙READK啊EYE:敗 C拌ALL辦 DL1奧0MS八 I皚NC芭 KEY_艾DL哎 M霸O(shè)V百 A,7按0鞍 S愛UB佰 A,KE跋Y_DL凹 J按BC熬 R3,C襖暗 吧READK半EYF:爸 R矮ET俺巴 ;版計(jì)數(shù)器溢出八返回按 J半KOFF頒 RE唉ADKEY班E 芭;鍵未按下白跳八 J壩MP隘 READ哎KEYA捌 ;再白次檢測(cè)傲;=耙=埃=版;鍵閉合跳稗(宏)吧;=頒=背=白=稗JKON白 MA搬CRO鞍 ADD拔RESS捌 J哎BS百 R5,K艾EY半般 ;捌鍵斷開跳暗百 胺 F唉JMP半 ADD按RESS懊昂 ;鍵閉半合跳矮

20、C哀ALL唉 DL1百0MS吧艾 隘;延時(shí)去抖辦動(dòng) 百 J班BS敖 R5,K百EY鞍疤 ;凹鍵斷開跳板翱 半 F絆JMP絆 ADD癌RESS鞍疤 ;鍵閉敗合跳癌ENDM藹矮 安;=搬=扒=骯=鞍;鍵斷開跳白(宏)版;=昂=阿=罷=跋JKOFF叭 M懊ACRO啊 AD搬DRESS凹 J扒BC拔 R5,K拔EY熬頒 ;吧鍵閉合跳版傲 疤 F壩JMP啊 ADD班RESS芭癌 ;鍵斷擺開跳胺 C啊ALL拔 DL1鞍0MS敗哎 岸;延時(shí)去抖瓣動(dòng) 胺 J拔BC襖 R5,K板EY擺班 ;扒鍵閉合跳跋絆 伴 F霸JMP霸 ADD芭RESS襖藹 ;鍵斷百開跳奧ENDM巴1。班多個(gè)按鍵阿的連按處理八技巧大話礙篇

21、案咚咚嗆!咚捌咚嗆!咚咚愛嗆!伴-鑼鼓三響笆,小匠出場(chǎng)芭:“如果你阿的芯是一座般作坊,我愿藹做那不知疲頒倦的程序匠霸”班v。八臺(tái)壩下,鮮花共哀爛西紅柿一隘色,飛向臺(tái)板前鞍匠巴人連忙舉起疤一個(gè)鍵盤,半左遮右擋癌昂c。跋話說小匠的疤大話篇,自癌隆重推出以叭來,篇篇都背考了個(gè)CO壩OL,一時(shí)皚間人氣大震扳。截止昨天霸,共結(jié)交了頒N位好友,澳眾多MM紛吧紛到斑竹那擺里打聽小匠吧的婚否情況板礙B。絆西吧紅柿再次飛澳向臺(tái)前扒上次貼了一阿篇一個(gè)按斑鍵的多種擊跋鍵組合判別巴技巧,這壩次再貼個(gè)姊啊妹篇上來班g。版匠懊人正在貼貼熬子,被值勤扒的斑竹逮個(gè)佰正著:“好拌??!我才打疤掃干凈,你艾又給糟蹋了按”胺匠懊人忙

22、堆起一翱臉的媚笑:扳“斑竹大人瓣,我貼的可暗是大話篇,艾麻煩你再給白個(gè)COOL熬”懊斑佰竹恍然:“艾哦,原來滿辦紙胡言,通安篇詆毀我斑艾竹光輝形象八的那個(gè)匠人般,就是你?藹!”白匠傲人一看情形把不對(duì),正想阿開溜澳只懊見一道白光藹一晃白3氨個(gè)時(shí)辰之后霸,有人發(fā)現(xiàn)笆昏迷不醒的唉程序匠人躺唉在血泊之中絆案墻盎上提著一行暗血字:“十白步殺一匠,藹千里不留行愛。事了拂衣擺去,深藏身般與名?!卑装頡。芭好拔了,言歸正凹傳,請(qǐng)看下芭文:靶 礙多個(gè)按鍵的胺連按處理技敖巧般 在凹設(shè)計(jì)中,常鞍常用UP鍵案和DOEN皚來調(diào)節(jié)參數(shù)八。這種鍵在背處理時(shí),要案考慮連按的半問題。而且奧希望鍵連續(xù)哀按下的時(shí)間絆越長(zhǎng),動(dòng)作搬的

23、響應(yīng)速度暗越快(即加吧速度處理)叭在連按的處藹理過程中,暗要考慮3個(gè)般時(shí)間常數(shù):澳 1般、連按響應(yīng)霸時(shí)間常數(shù)(笆首次值),班該值用于區(qū)稗分連按/單頒按。扒骯 a)暗當(dāng)按鍵閉和敗的時(shí)間該擺參數(shù)時(shí),判巴為連按;案 2礙、連按緩沖皚時(shí)間常數(shù)(叭最大值)。板壩 在連阿按操作剛開岸始時(shí),按鍵昂響應(yīng)速度較慢,這個(gè)參板數(shù)就是用于按決定每次動(dòng)伴作之間的最班大時(shí)間。扒 3昂、連按緩沖癌時(shí)間常數(shù)(板最小值)盎伴 在連板按的過程中翱,響應(yīng)的速白度越來越快哀,但也不能斑無限快。這斑個(gè)參數(shù)就是哎用于決定每癌次動(dòng)作之間安的最小時(shí)間矮。暗 還熬有一個(gè)要考佰慮的問題是阿,可能并不哎是所有按鍵骯都具有連按稗功能。這時(shí)辦,可用一

24、個(gè)吧標(biāo)志位來區(qū)頒分。在讀鍵百子程序中返壩回鍵值的同俺時(shí),也返回礙這個(gè)標(biāo)志,翱告訴鍵盤監(jiān)挨控程序是否八要做連按處靶理。凹A。氨 下藹面的一段例俺程中,可以叭識(shí)別單按/扒連按,并可吧處理加速度巴問題。只要在主程序中礙調(diào)用即可。暗程序中的延按時(shí)用現(xiàn)實(shí)程辦序來代替。哀A。巴;*芭*疤*隘*絆*啊*盎*邦;按鍵處理奧模塊傲;*盎*扳*柏*稗*昂*皚*捌;時(shí)間常數(shù)邦定義奧KEY_T背骯 =稗 2澳50哀 唉;連按響應(yīng)藹時(shí)間常數(shù)(瓣首次值)骯KEY_T柏MAX翱 =拜 12扒0把 ;般連按緩沖時(shí)扮間常數(shù)(最擺大值)哀KEY_T辦MIN半 =稗 30奧懊 ;連班按緩沖時(shí)間芭常數(shù)(最小罷值)挨;*傲*唉*辦*敗

25、*扒*澳*凹KEYWK拔:凹 M澳OV隘 A,K耙EY_T矮 M扮OV斑 KEY_敗JS,A傲安 ;連按板計(jì)數(shù)器置初背值板 B癌C 頒TT1,K暗EY般辦 ;傲清連按標(biāo)志稗 M疤OV霸 A,K氨EY_TM耙AX-KE柏Y_TMI氨N啊 M柏OV挨 KEY_癌JSJS,靶A把 ;捌連按加速計(jì)捌數(shù)器置初值辦 C擺ALL邦 REA瓣DKEY拌盎疤 ;讀鍵絆 J哀BS啊 R3,C唉敖按 ;有鍵傲按下跳拜 RET頒 F唉CALL哎 MO搬VLCD埃胺愛 ;顯示延礙時(shí)八 C埃ALL安 REA昂DKEY百扒安 ;讀鍵半 J盎BS癌 R3,C吧把按 ;確實(shí)白有鍵按下跳阿 R芭ET跋;=拔確實(shí)有鍵按瓣下翱 M斑

26、OV俺 KEY_按BUF,A安阿 ;保拜存鍵值跋 扳KEY1:疤 F搬CALL拔 MO澳VLCD盎安靶 ;顯示延瓣時(shí)班 C藹ALL八 REA啊DKEY翱頒跋 ;讀鍵叭 J耙BS斑 R3,C敗懊拌 ;鍵未靶釋放跳把 J靶MP擺 KEY5叭;=熬連按判斷矮 J絆BS啊 TT1,澳KEY_E俺N叭 ;把連按功能有斑效跳瓣 J靶MP矮 KEY1翱背癌 ;禁止伴連按跳哎 J鞍BC愛 TT1,霸KEY扮艾 熬;不是連按鞍跳俺 J芭MP KEY2哀 D懊JZ昂 KEY_擺JS愛跋 ;百連按計(jì)數(shù)器鞍-1=0跳百 J般MP頒 KEY1骯 B百S 罷TT1,K岸EY絆 ;白置連按標(biāo)志板 J俺MP佰 KEY1吧;=

27、昂連按處理瓣KEY2:盎 C稗ALL案 DOK氨EY巴頒 ;班執(zhí)行按鍵功頒能 拜 M半OV艾 WK_M版ODE,A稗版 ;刷胺新模式背;連按加速把計(jì)數(shù)器-1擺 D耙JZ俺 KEY_邦JSJS笆半 辦 J哀MP百 $+2氨 I背NC哀 KEY_氨JSJS半;連按計(jì)數(shù)安器置延時(shí)值案 M皚OV跋 A,K澳EY_TM巴IN昂 A伴DD盎 A,KE哎Y_JSJ搬S般 壩 M靶OV凹 KEY_柏JS,A礙爸 ;連按半計(jì)數(shù)器置延懊時(shí)值罷KEY4:佰 F耙CALL阿 MO瓣VLCD氨板笆 ;顯示延捌時(shí)隘 D頒JZ罷 KEY_跋JS拔佰 ;安連按計(jì)數(shù)器捌-1=0跳埃 J辦MP伴 KEY4挨 J熬MP敖 KEY1

28、頒;=背單按處理懊KEY5:艾 F班CALL靶 MO愛VLCD翱般佰 ;顯示延班時(shí)叭 C絆ALL笆 REA拔DKEY耙襖捌 ;讀鍵敖 J胺BC柏 R3,C伴班岸 ;鍵確斑實(shí)已釋放跳襖 J辦MP版 KEY1疤 J吧BC爸 TT1,安KEY礙柏 矮;不是連按跋跳八 R把ET昂;按鍵發(fā)聲扮 B敗S 版TT1,K敗EY_SP澳板 ;開敖蜂鳴器藹 F礙CALL凹 MO拔VLCD芭 C拔ALL岸 DOK八EY挨邦 ;巴執(zhí)行按鍵功邦能 拜 M藹OV扒 WK_M瓣ODE,A暗跋 ;刷隘新模式霸 B頒C 哀TT1,K爸EY_SP伴鞍 ;關(guān)頒蜂鳴器挨 F壩CALL搬 MO敗VLCD版 R凹ET俺;*八*吧*奧*班

29、*搬*哀*頒;讀鍵子程板序啊;出口:稗 A=搬鍵號(hào)值(0扒=無,1=擺K2定時(shí),芭2=K3功熬率選擇,3吧=K4水溫巴上調(diào),4=把K5水溫下耙調(diào),班;哀扮 5=壩K6時(shí)鐘上跋調(diào),6=K矮7時(shí)鐘下調(diào)翱,7=K8八時(shí)段設(shè)置)奧; 矮C:八 扳(0=無,稗1=有)挨; 白TT1,K氨EY_EN叭: 背當(dāng)前鍵連按捌有效標(biāo)志(板0=禁止連鞍按,1=可背連按)佰; 佰(K4/K擺5/K6/按K7有連按挨功能)拔;*翱*捌*拜*盎*巴*霸*襖READK瓣EY:佰 BS 傲R3,C岸;不可連按罷的按鍵胺 B扳C 跋TT1,K佰EY_EN扒 J哎BS笆 R7,6胺般般 ;K2暗未閉合跳扮 R愛ETL岸 01鞍啊

30、耙 ;返回壩A=01背 襖 J埃BS搬 R7,0按擺岸 ;K3骯未閉合跳般 R拔ETL邦 02埃昂按 ;返回敖A=02埃 捌 J愛BS佰 R7,5凹凹俺 ;K8懊未閉合跳把 R鞍ETL百 07捌把版 ;返回捌A=07邦 拌;可連按的稗按鍵昂 B霸S 耙TT1,K柏EY_EN敗 JBS昂 R7,1哀般胺 ;K4絆未閉合跳拌 R阿ETL疤 03擺叭埃 ;返回?cái)=03礙 伴 J翱BS辦 R7,2耙阿佰 ;K5巴未閉合跳按 R埃ETL敖 04矮癌八 ;返回板A=04哎 板 J邦BS板 R7,3哎氨盎 ;K6壩未閉合跳佰 R案ETL板 05芭盎敗 ;返回辦A=05吧 絆 J啊BS跋 R7,4叭拜扳 ;

31、K7愛未閉合跳把 R捌ETL拜 06絆昂絆 ;返回搬A=06藹 艾 B奧C 安R3,C稗 R扒ETL俺 00澳埃昂 ;返回罷A=00 罷m。絆結(jié)吧束案用變址尋礙址原理突破壩EEPRO哎M存儲(chǔ)器的癌擦寫壽命極白限大話篇版 背 時(shí)擺 間絆:今晚敖 地礙 點(diǎn)斑:“砍彈片艾雞”論壇癌 劇傲 名:大話篇扒第五場(chǎng)邦 領(lǐng)凹銜主演:程澳序匠人、斑藹竹埃 啊 跋邦n。背 疤觀眾們蜂扮擁而至,紛礙紛搶占有利伴地形巴 阿鼓響三聲搬,小匠上場(chǎng)氨百 感謝各位對(duì)小爸匠的大話篇扮的支持。小板匠的大話篇襖,自推出以襖來,收視率拜一直居高不板下,好評(píng)如傲潮(斑耙竹按:此處白刪除自吹自挨擂詞語(yǔ)20熬0個(gè))胺2。般 但埃是,也有一

32、埃些網(wǎng)友提出哀了批評(píng),說矮:前面的大暗話倒是不錯(cuò)罷,惟獨(dú)后面盎的程序太臭艾,有狗尾續(xù)盎貂之嫌,捆擺綁銷售之意隘、賣弄才華敖之疑、嘩眾芭取寵之心哎疤s。白 斑臺(tái)下,眾懊網(wǎng)友紛紛點(diǎn)骯頭半 所佰以,這次,叭小匠決定不佰再帖程序了絆,帖段文字癌了事吧。拔 熬匠人轉(zhuǎn)身擺下場(chǎng),斑竹稗問:“匠人胺,今天的大熬話篇完了?阿”百 安“對(duì),完辦了!”頒 般斑竹一把澳揪住匠人:拜“好啊,你半這個(gè)匠人,海報(bào)上寫得隘明明白白,愛是我倆共同俺領(lǐng)銜主演,皚我還沒上場(chǎng)版露臉呢,你拔倒宣布劇終絆了?。俊币\I。靶 骯“乒、乒扮、乓、乓芭”的一陣疤劇響靶 板小匠鼻青哀臉腫地剛離癌開論壇,又挨被一群MM伴圍住。絆 阿“匠人,巴你上場(chǎng)

33、才2捌分鐘不到,跋就想開溜,翱這擺明了是昂騙取門票收按入。哪里走壩,吃偶們一絆噸粉拳!昂!”靶z。百 按“乒、乒拌、乓、乓敗”的又一半陣劇響白 礙大話篇第澳五場(chǎng),匆匆矮落幕班 把導(dǎo)演忙著襖招呼眾群眾跋演員:“大版伙快點(diǎn),把敖匠人抬到醫(yī)霸院去”昂 靶a。捌 按用變址尋址壩原理突破E拔EPROM八存儲(chǔ)器的擦跋寫壽命極限扳霸 一昂般地,EE哀PROM存爸儲(chǔ)器(如9瓣3C46/艾56/66靶系列)的擦班寫次數(shù)為1壩0萬(wàn)次,超哀過這一極限隘時(shí),該單元般就無法再使耙用了。但在敖實(shí)際應(yīng)用中柏,可能有些拔數(shù)據(jù)要反復(fù)辦改寫。這時(shí)板,可通過變白址尋址的方叭式來突破E岸EPROM爸存儲(chǔ)器的擦版寫壽命極限盎。凹y。藹

34、 比斑如,我們有按一個(gè)單字節(jié)的數(shù)據(jù)要保岸存在E2P愛ROM(9傲3C56)啊中,可按以挨下方法來做胺:叭b。把 1白、將93C芭56的00伴H單元定義版為地址指針半存放單元。 2骯、將要尋址巴的單元地址背(假設(shè)為0敗1H)放入扮93C56癌的00H地柏址中。拌 3安、每次要對(duì)襖E2PRO吧M中的數(shù)據(jù)吧進(jìn)行讀寫時(shí)傲,先讀取0盎0H中的數(shù)笆據(jù),并以讀把出的值為地懊址,訪問其斑指向的單元暗。矮 4吧、在每次寫哀完數(shù)據(jù)后,捌立即將數(shù)據(jù)壩再讀出,并班與寫入的地唉址做比較。挨翱 A、敖如果相等,懊則代表本次襖寫入數(shù)據(jù)成疤功。板霸 B、氨如果不相等稗,則代表本阿次寫入數(shù)據(jù)巴失敗。這時(shí)按,將00H白中的值+1

35、疤,讓其指向癌后一個(gè)新的挨地址單元,斑再將數(shù)據(jù)寫拌入新的地址叭單元。壩 絆 9背3C56共挨有128個(gè)扮字節(jié)單元,骯按照以上方傲法,可將數(shù)斑據(jù)的擦寫次霸數(shù)提升12吧0多倍!達(dá)昂到1200啊多萬(wàn)次!案R。把 對(duì)絆于24C1骯6/32/岸64系列的百芯片,也可拔采用這種方瓣法。奧 這藹個(gè)方法,小芭匠使用過多懊次,證明是奧可行的。埃24CXX凹系列讀寫程俺序(EMC扮指令版)暗大話篇 岸話說程序匠案人,自進(jìn)論岸壇以來,天哀天勤練,日按日苦修(花搬了我東家的般不少上網(wǎng)費(fèi)奧!),以瓣大話篇瓣系列,嬴得背了無數(shù)MM版得芳心翱終于將積分氨修到500吧分以上(呵斑呵,以后可伴以貼圖片了霸,如果那位哎MM想一睹

36、隘匠人的“浴辦”照,說一柏聲,小匠一捌定滿足)安7。跋 身后哎突然傳來一氨聲呵斥:“皚休不休啊你隘?”傲 匠人耙心頭一驚,罷驀然回首,襖那人(不是邦MM,是斑伴竹)正在燈安火闌珊處(俺手中正握著伴那把失而復(fù)頒得的大砍刀跋)拜 匠人奧暗自慶幸還骯沒有把對(duì)斑拔竹不敬的話耙語(yǔ)說出來奧爸8。哀在論壇懊中,小匠結(jié)稗識(shí)了許多高岸手好友,并奧得到不少幫愛助,感激不絆盡。但也有瓣一些MM好斑報(bào)打不平,疤覺得小匠在傲大話篇捌中老是受斑盎竹的欺負(fù)吧艾L。耙 一道艾寒光映入眼澳簾,匠人發(fā)澳現(xiàn)自己好象啊說漏了嘴柏?cái)?再看邦斑竹手中的八刀,已經(jīng)從壩刀鞘中抽出敗了兩公分敖把i。唉其實(shí),挨那都是大伙敖的誤解絆其實(shí),小匠邦一

37、直非常感哎謝斑竹的厚扒道和寬容,般沒有將小匠耙的一些大話唉帖子DEL鞍ETE掉哀白J。盎 匠人搬好象聽到了襖砍刀緩緩入耙鞘的金屬聲笆跋 暗呼敖:“好險(xiǎn)!般”搬 匠人疤再次悄悄回俺頭,只見斑耙竹大人已經(jīng)柏遠(yuǎn)遠(yuǎn)去了(叭頭上頂著一哎頂精致的蘭胺花大高帽)N。扳最近,敗連續(xù)看到好笆幾篇討論2霸4CXX系芭列應(yīng)用的帖邦子。正好,捌小匠最近用跋EMC的指翱令也做了一襖段程序。不壩如無私奉獻(xiàn)阿一下(如果辦哪位MM有半疑問,可來霸函、來電、敖來EMAI背L、來FA版X、來人,按或者約下第礙一次親密約襖會(huì),探討探邦討)阿x。邦;*岸*癌*巴*把*柏*傲*擺*埃*巴;* 2跋4CXX吧 接口I2扳C總線讀/礙寫的

38、程序罷;* 擺(所有時(shí)序叭均基于4M佰HZ晶體震扒蕩器頻率)熬;*鞍*鞍*安*癌*奧*澳*吧*擺/*班;*愛*芭*挨*半*半*翱;隨機(jī)讀寫瓣測(cè)試程序(礙示范程序)百;*壩*般*熬*凹*辦*爸TEST:耙 M敗OV胺 A,0俺XAE礙阿 ;A2=哀A1=A0擺=1搬 M啊OV伴 SLAV罷E_24,阿A 擺;設(shè)置器件昂碼盎 M按OV皚 A,2翱吧 ;R按/W LO藹C. = 拔2澳 M拌OV版 ADDR吧_24,A搬 ;氨設(shè)置地址碼愛 M氨O(jiān)V皚 A,5霸5俺 ;扳 M佰OV稗 DATA敗_24,A搬 ;愛寫55到E爸2PROM百 C礙ALL叭 WRB熬YTE胺斑 ;寫一個(gè)爸字節(jié)笆 C頒ALL啊

39、 DL1拔0MS澳靶 ;延時(shí)1拌0MS,等澳待寫操作完扒成(注意,哎此語(yǔ)句非常背重要)絆 C隘ALL拜 RD懊BYTE邦吧 ;讀回胺原數(shù)據(jù)半 M搬OV襖 A,5般5愛 ;按 X罷OR扳 A,DA皚TA_24艾 ;巴 J哎BS叭 R3,Z版般 ;讀柏出數(shù)據(jù)=寫拔入數(shù)據(jù)跳壩WRONG矮:百 J熬MP拔 WRON挨G安 ;拔校驗(yàn)失敗辦CORRECT:捌 JMP稗 CORR板ECT擺疤 ;校驗(yàn)通版過艾DL10M耙S:熬 R哀ET扒 艾;*岸*扳*礙*辦*罷*哎;存儲(chǔ)器定義邦;*懊*隘*笆*胺*白*挨PROT_艾I2C唉 EQU奧 0拜X05伴 ;I2霸C操作口襖 S半DA霸 EQU暗 3皚 ;數(shù)安據(jù)腳

40、癌 S扒CL般 EQU暗 2版 ;時(shí)哀鐘腳瓣j。唉ADDR_辦24按 EQU盎 0X邦1B笆 唉;地址寄存壩器懊DATA_捌24案 EQU襖 0X俺1C背 氨;寫入/讀疤自I2C的拌數(shù)據(jù)寄存器拌SLAVE霸_24 E八QU辦 0X1D疤版 ;從靶器件地址寄矮存器(1010XXX叭0)盎DBUF_辦24胺 EQU岸 0X扳1E氨 把;發(fā)送/接癌受自SDA安口的數(shù)據(jù)緩擺沖器藹COUNT疤_24 E搬QU拜 0X1F皚啊 ;位拜計(jì)數(shù)器耙TT_24版 E八QU癌 0X20稗擺 ;標(biāo)氨志寄存器爸 R邦END_2礙4 芭EQU隘 1礙 ;讀完絆畢標(biāo)志(0澳=未完畢,吧1=完畢)盎NUM_2般4 擺EQU懊

41、 0X2俺1伴 ;岸頁(yè)寫/頁(yè)讀稗字節(jié)數(shù)哀n。班*/爸;*翱*霸*俺*懊*唉*扳;宏定義擺;*愛*芭*翱*辦*霸*翱;=鞍=懊=皚=耙;設(shè)置SC皚L,SDA胺為輸出口笆;=壩=唉=版=埃SDA_O頒UT阿 MACR哀O氨 M凹OV哎 A,0捌B 奧 I按OW骯 PROT奧_I2C藹ENDM盎;=挨=佰=辦=胺;設(shè)置SC芭L為輸出口凹,SDA為礙輸入口拌;=半=埃=把=吧SDA_I吧N 辦MACRO班 M愛OV挨 A,0背B搬 I稗OW巴 PROT捌_I2C班ENDM拜;*耙*班*疤*頒*跋;字節(jié)寫程奧序搬;功能:辦 寫一把個(gè)字節(jié)到E巴EPROM拌器件澳;入口:巴 DA把TA_24扮 =霸要寫的數(shù)

42、據(jù)靶; 昂ADDR_扳24頒 =數(shù)據(jù)地鞍址邦; 頒SLAVE啊_24=從岸器件地址1扳010XX佰X0)安;*哎*半*把*耙*翱*頒WRBYT哎E:安 M班OV叭 A,SL暗A(chǔ)VE_2頒4澳百捌 班 M搬OV澳 DBUF板_24,A百阿 扳 C叭ALL唉 BST奧ART艾般 爸;送起始位啊 C凹ALL盎 TX般暗按 ;送從器霸件地址并檢唉測(cè)應(yīng)答信號(hào)敖 M柏OV扮 A,AD奧DR_24骯伴 捌 M哀OV翱 DBUF俺_24,A背埃 壩 C板ALL敖 TX把霸 ;送數(shù)據(jù)捌地址并檢測(cè)柏應(yīng)答信號(hào)啊 M絆OV昂 A,DA岸TA_24暗熬 藹 M岸OV跋 DBUF壩_24,A哀懊 佰 C癌ALL罷 TX礙

43、挨吧 ;送數(shù)據(jù)柏并檢測(cè)應(yīng)答叭信號(hào)笆 C叭ALL埃 BST佰OP奧哀 ;埃送停止位矮 R把ET瓣;*芭*凹*爸*熬*愛*啊;字節(jié)讀程板序半;功能:半 從E啊EPROM襖器件讀一個(gè)背字節(jié)跋;入口:奧 AD邦DR_24傲 =藹數(shù)據(jù)地址爸; 背SLAVE邦_24=從笆器件地址(癌1010X盎XX0)矮;出口:唉 DA愛TA_24邦 =愛讀到的數(shù)據(jù)鞍;*隘*熬*吧*按*礙*哎RDBYT挨E:般 M頒OV稗 A,SL壩AVE_2藹4拔 M耙OV埃 DBUF耙_24,A靶 C爸ALL BST伴ART耙岸 傲;送起始位壩 C板ALL唉 TX吧襖叭 ;送從器安件地址并檢半測(cè)應(yīng)答信號(hào)霸 M背OV叭 A,AD疤DR

44、_24埃啊 跋 M按OV傲 DBUF版_24,A阿 C翱ALL唉 TX耙扳靶 ;送數(shù)據(jù)耙地址并檢測(cè)擺應(yīng)答信號(hào)耙;轉(zhuǎn)入讀狀胺態(tài) 癌 C把ALL艾 BST柏ART擺傲 吧;送起始位扳 襖 M芭OV瓣 A,SL頒AVE_2俺4般按 辦 M愛OV按 DBUF敗_24,A按 B版S稗 DBUF把_24,0哎骯 搬 C艾ALL白 TX捌邦骯 ;送從器盎件地址并檢澳測(cè)應(yīng)答信號(hào)稗 B拌S 瓣TT_24罷,REND斑_(dá)24斑暗 澳 C啊ALL啊 RX半昂熬 ;讀數(shù)據(jù)扮并發(fā)送應(yīng)答拜信號(hào)吧 C唉ALL靶 BST埃OP絆擺 ;扮送停止位叭 M唉OV敖 A,DB吧UF_24鞍稗 岸 M傲OV捌 DATA頒_24,A愛靶

45、 ;保擺存數(shù)據(jù)到D啊ATA_2澳4俺 R般ET斑;*氨*靶*霸*癌*藹*爸;頁(yè)寫程序叭;功能: 寫一伴個(gè)字節(jié)到E辦EPROM扮器件澳;入口:礙 R4叭 =挨要寫的數(shù)據(jù)叭在RAM中拌存放首地址熬; 拌NUM_2耙4 巴=字節(jié)數(shù)芭; 埃ADDR_罷24藹 =數(shù)據(jù)地挨址; 版SLAVE扮_24=從罷器件地址1芭010XX辦X0)埃;*隘*芭*拜*熬*襖*澳WRPAG按E:藹 M拜OV安 A,SL骯AVE_2唉4跋拌礙 捌 M靶OV爸 DBUF拌_24,A隘版 絆 C罷ALL凹 BST阿ART叭巴 瓣;送起始位耙 C拜ALL藹 TX暗辦埃 ;送從器哎件地址并檢霸測(cè)應(yīng)答信號(hào)吧 M哀OV巴 A,AD岸DR

46、_24唉扒 笆 M癌OV翱 DBUF爸_24,A把把 伴 C扒ALL壩 TX斑百拌 ;送數(shù)據(jù)哎地址并檢測(cè)俺應(yīng)答信號(hào)癌WRPAG岸E1:芭 M絆OV百 A,R0昂把 岸 M盎OV柏 DBUF佰_24,A鞍吧 哎 C絆ALL俺 TX澳把唉 ;送數(shù)據(jù)半并檢測(cè)應(yīng)答鞍信號(hào)拜 I耙NC捌 R4芭 D岸JZ按 NUM_安24阿 J澳MP辦 WRPA白GE1安巴 百;未寫完繼芭續(xù)骯 C啊ALL版 BST艾OP傲擺 ;版送停止位 R矮ET哎;*版*艾*百*罷*俺*罷;頁(yè)讀程序拔;功能:胺 從E班EPROM搬器件讀一個(gè)佰字節(jié)拜;入口:絆 AD跋DR_24捌 =啊數(shù)據(jù)地址背; 鞍SLAVE柏_24=從版器件地址(暗

47、1010X翱XX0)氨; 罷NUM_2扮4 白=字節(jié)數(shù)暗;出口:霸 R4氨 =背讀到的數(shù)據(jù)拔在RAM中凹存放首地址俺;*傲*頒*百*俺*啊*霸RDPAG壩E:疤 M扒OV半 A,SL伴AVE_2藹4鞍 M柏OV矮 DBUF班_24,A耙 C柏ALL澳 BST盎ART敖捌 擺;送起始位頒 C半ALL罷 TX扮胺藹 ;送從器拜件地址并檢擺測(cè)應(yīng)答信號(hào)擺 M頒OV絆 A,AD罷DR_24百暗 壩 M白OV壩 DBUF埃_24,A俺 C佰ALL皚 TX哎靶疤 ;送數(shù)據(jù)巴地址并檢測(cè)疤應(yīng)答信號(hào)稗;轉(zhuǎn)入讀狀邦態(tài) 百 C案ALL隘 BST隘ART唉巴 絆;送起始位板 柏 M胺OV罷 A,SL斑AVE_2氨4埃邦

48、 擺 M佰OV暗 DBUF白_24,A巴 B跋S傲 DBUF佰_24,0笆八八 胺 C搬ALL班 TX敖礙辦 ;送從器拌件地址并檢邦測(cè)應(yīng)答信號(hào)拜RDPAG柏E1:巴 M白OV伴 A,1襖 X搬OR氨 A,NU皚M_24熬 B疤S 稗TT_24岸,REND翱_24板襖 拌 J擺BS叭 R3,Z罷半芭 ;NU背M_24=敗1跳;判斷板是否最后一邦個(gè)字節(jié),決辦定應(yīng)答信號(hào)稗 唉 B班C 罷TT_24氨,REND疤_24捌奧 般 C癌ALL耙 RX背愛安 ;讀數(shù)據(jù)笆并發(fā)送應(yīng)答版信號(hào)擺 M暗OV襖 A,DB吧UF_24俺跋 版 M艾OV搬 R0,A礙懊澳 ;保存愛數(shù)據(jù)到R0笆 I爸NC案 R4扮 D巴JZ

49、阿 NUM_佰24絆 J皚MP搬 RDPA礙GE1稗把 澳;未讀完繼暗續(xù)挨 C八ALL霸 BST皚OP熬壩 ;叭送停止位傲 R礙ET頒;*吧*班*搬*拜*敗*啊;I2C操柏作子程序(按時(shí)序)集合阿;*岸*熬*罷*吧*搬*骯;=扮=叭=安=爸;發(fā)送起始疤位程序敖;說明:佰 當(dāng)S熬CL=1時(shí)爸,向SDA拌發(fā)一個(gè)下降巴沿礙;=矮=白=鞍=斑BSTAR埃T:絆 S襖DA_OU熬T盎耙芭 ;設(shè)置骯SDA為輸捌出口柏 B藹S 凹PROT_搬I2C,S半DA半 哀;SDA=搬1安 N哎OP扳胺懊 ;延癌時(shí)0.6U按S扮 B藹S 奧PROT_氨I2C,S挨CL扒 襖;SCL=熬1熬 N哀OP案靶靶 ;延把時(shí)0

50、.6U八S辦 B昂C 吧PROT_皚I2C,S罷DA靶 把;SDA=叭0皚 N癌OP靶壩笆 ;延挨時(shí)0.6U巴S板 B盎C 巴PROT_背I2C,S背CL板 巴;SCL=斑0搬 N巴OP敖擺絆 ;延案時(shí)0.6U阿S挨 R白ET懊;=敗=皚=熬=艾;發(fā)送結(jié)束拜位程序爸;說明:安 當(dāng)S板CL=1時(shí)背,向SDA邦發(fā)一個(gè)上升背沿板;=挨=敗=哀=昂BSTOP熬:昂 S霸DA_OU岸T挨胺埃 ;設(shè)置柏SDA為輸霸出口板 B昂C 扳PROT_捌I2C,S捌DA哎 皚;SDA=芭0爸 N岸OP藹扮俺 ;延罷時(shí)0.6U鞍S暗 B埃S 艾PROT_靶I2C,S捌CL芭 奧;SCL=爸1八 N奧OP稗哀矮 ;延矮

51、時(shí)0.6U癌S阿 B安S 暗PROT_熬I2C,S傲DA版 扒;SDA=扮1藹 N巴OP芭骯芭 ;延奧時(shí)0.6U把S敗 R矮ET傲;=稗=傲=礙=案;位輸入子暗程序辦;說明:阿 當(dāng)S岸CL=1時(shí)鞍,從SDA案上讀電平敖;出口:跋 C=耙從SDA上疤讀入的位值拜 矮;=白=佰=耙=熬BITIN哎:邦 S罷DA_IN鞍懊頒傲 ;設(shè)置S捌DA為輸入柏口板 B般S 斑PROT_凹I2C,S柏DA白 拌;SDA=按1柏 N絆OP版敗捌 ;延般時(shí)0.6U矮S哀 B疤S 傲PROT_版I2C,S稗CL艾 胺;SCL=澳1笆 N扒OP皚芭案 ;延傲?xí)r0.6US氨 B扳C 拜R3,C佰 J阿BC懊 PROT懊_

52、I2C,矮SDA阿奧 八 B胺S 絆R3,C愛艾頒 ;C=S礙DA奧 N絆OP靶奧挨 ;延俺時(shí)0.6U安S奧 B扮C 暗PROT_氨I2C,S扒CL擺 皚;SCL=奧0笆 N罷OP矮啊跋 ;延耙時(shí)0.6U暗S皚 R白ET邦;=澳=皚=拔;位輸出子愛程序柏;說明:佰 每當(dāng)邦SCL=0扳時(shí),改寫S疤DA上的電擺平半;入口:霸 C=盎要寫到SD扳A上的位值凹;=凹=岸=笆=癌BITOU癌T:捌 S吧DA_OU八T頒藹版 ;設(shè)置版SDA為輸搬出口邦 J絆BS爸 R3,C笆 J唉MP熬 BIT0哎 B拔S 稗PROT_礙I2C,S斑DA昂 跋;SDA=隘C=1靶 J絆MP熬 CLK1斑 扮BIT0:襖

53、B跋C 安PROT_拜I2C,S氨DA埃 扳;SDA=艾C=0拔CLK1:盎 N昂OP扒挨疤 ;延時(shí)0.6U艾S爸 B案S 奧PROT_昂I2C,S百CL敗 半;SCL=叭1胺BIT2:骯 N矮OP胺 N霸O(shè)P皚 B隘C 澳PROT_凹I2C,S瓣CL敖 邦;SCL=癌0凹 R扳ET扒;=柏=拜=骯=柏=霸=哎;接收數(shù)據(jù)壩子程序擺;入口:捌 TT按_24.R挨END_2疤4 安=讀完畢標(biāo)凹志班;出口:拜 DB疤UF_24昂 =癌接受到的數(shù)阿據(jù)(8_B笆IT)笆;=伴=版=埃=邦=疤=爸RX:暗 M芭OV襖 A,8擺頒霸 ;循環(huán)爸次數(shù)=8吧 M叭OV扒 COUN搬T_24,翱A盎 C霸LR班 D

54、BUF疤_24絆RXLP:氨 C奧ALL扮 BIT靶IN耙懊 ;叭輸入1_B哎IT罷 R矮LC敖 DBUF暗_24搬隘 澳;左移(帶澳C)絆 D熬JZ暗 COUN班T_24啊拜 ;循環(huán)霸結(jié)束?安 J襖MP翱 RXLP背;設(shè)置應(yīng)答搬信號(hào)位,如礙果讀完畢則白送1(NO霸_ACK)扮停止接受,礙否則送0(爸ACK)繼氨續(xù)接受奧 B背S 壩R3,C耙擺 隘 J擺BS靶 TT_2胺4,REN扮D_24拌版 ;讀完芭畢信號(hào)-把C疤 B啊C 案R3,C白百 壩 C奧ALL般 BIT版OUT安按 礙;應(yīng)答白斑 按 R奧ET按;=礙=爸=壩=哎=絆;發(fā)送數(shù)據(jù)罷子程序辦;入口:吧 DB霸UF_24愛 =捌要發(fā)送的

55、數(shù)哀據(jù)(8_B把IT)耙;=矮=扒=半=半=唉=藹TX:昂 M凹OV頒 A,8扒邦跋 ;循環(huán)胺次數(shù)=8罷 M柏OV敖 COUN稗T_24,拜A邦TXLP:叭 R叭LC靶 DBUF皚_24捌半 敖;左移(帶班C)埃 C背ALL岸 BIT骯OUT頒班 八;輸出1_扳BIT熬 D矮JZ阿 COUN隘T_24安罷 ;循環(huán)愛結(jié)束?俺 J艾MP芭 TXLP扮阿 佰 C八ALL耙 BIT懊IN斑半 ;襖讀應(yīng)答信號(hào)艾 R辦ET板F。俺;*奧*壩*罷*拜*扳*岸;I2C總胺線讀/寫的版程序全部結(jié)皚束 !阿;*八*案*礙*拌*盎*敗B。安看程序的藝骯術(shù)(或曰“暗技術(shù)”)凹1、善用原板理圖“叭順藤摸瓜”霸大法埃順斑

56、著程序的流暗程一邊看一胺邊畫原理圖巴,一遍看完隘后,原理圖岸出來了,程矮序的大體設(shè)版計(jì)思想和設(shè)岸計(jì)結(jié)構(gòu)也就版凸現(xiàn)出來了矮。隘把2、建立R傲AM分配表擺“按圖昂索驥”大法拔將埃所有的RA半M的功能登扒記下來,當(dāng)耙你再看到程挨序?qū)δ硞€(gè)已埃經(jīng)登記過的版RAM單元案操作時(shí),就襖能猜出大概盎的功能來。背3、模塊化澳“庖丁笆解?!贝蠓ò犊窗桃粋€(gè)8K的安大程序是很疤累人的,而岸看8個(gè)1K搬的小程序則傲似乎容易些笆。皚要八將一個(gè)看似頒完整的程序奧分割開來,背其實(shí)并不難襖,只要你找哎到程序的縫拔隙,一刀下巴去,程序就疤分開了。胺縫柏隙在哪里呢版,就在“J矮MP”、“埃RET”之版類指令的后拔面。那里相哎當(dāng)于兩條

57、肋哎骨的間隙。白后唉記:其實(shí)9岸9%的程序搬都不值一看邦這些程胺序在完成其暗特定的功能岸方面,也許鞍是稱職的,敗但是從美學(xué)礙的意義上來絆說,則毫無“藝術(shù)”可啊言。所以看懊這樣的程序礙僅是一種勞絆苦的技術(shù)活凹,而不是藝鞍術(shù)活。皚還哀要說一點(diǎn)的疤是,所謂盜熬亦有道。爸高艾明者看他人辦的程序僅為佰了了解他人稗的編程思想八,佰中絆庸者看他人柏的程序是為俺了學(xué)習(xí)他人搬的編程技巧傲,辦蠢暗笨者看他人叭的程序是為隘了抄襲盜版把,哀無扒恥者看他人把的程序卻為半了解密篡改安。白S。鞍MC68H岸C908J礙L8半匠人熬應(yīng)用手記前言傲匠人最近開挨始和MC6半8HC90板8JL8的皚親密接觸.皚(忙著和它辦約會(huì)連上

58、網(wǎng)哎次數(shù)也少了把許多,嘿嘿熬)班a。辦作為一個(gè)長(zhǎng)伴期用匯編的澳工程師轉(zhuǎn)鞍行用C寫傲程序,感覺哎挺累人,不安過苦中也有愛樂.愿將原澳汁原味的手般記與大家分跋享.這篇手暗記將隨著匠斑人的經(jīng)驗(yàn)值跋不斷升級(jí)而敗不斷更新,安其中會(huì)有心哎得,也會(huì)有頒困惑,權(quán)當(dāng)拔是一個(gè)過程按的見證吧.襖X。靶首先得聲明皚,匠人是第瓣一次用摩托礙羅拉的芯片鞍,也是第一把次用ANS藹I_C語(yǔ)言爸,所以手記拜中如有錯(cuò)誤哀和問題,望盎大伙指點(diǎn).吧w。辦01.礙C芭語(yǔ)言中嵌入柏匯編的皚6捌種方式哀:靶/嵌入?yún)R把編方式1(八宏): 扮Enabl捌eInte艾rrupt叭s; 爸 柏 埃 擺 拌/ 開中愛斷八氨 爸B。翱/嵌入?yún)R皚編方式

59、2(叭可嵌入多條伴指令):辦asm 熬藹柏敖俺扒凹耙襖矮皚翱 lda叭 _PTB埃 ;吧俺版爸瓣盎捌/嵌入?yún)R礙編方式3(拌單條指令)俺:把a(bǔ)sm 芭eor #把0b ;暗鞍asm n跋op ;板/嵌入?yún)R稗編方式4(熬單條指令)鞍:安asm 傲nop;案/嵌入?yún)R擺編方式5(盎單/多條指邦令):啊asm (壩 eor拜 #4 罷);靶鞍搬壩asm (按nop;邦 nop艾);拜 俺asm(板nopn扮 nop板);扮/嵌入?yún)R哀編方式6(礙可嵌入多條俺指令):#asmnopnop敗#enda斑sm暗02.拔C愛語(yǔ)言中數(shù)的半表示方式藹:背*舉霸例如下:盎二進(jìn)制:辦藹 0b半十進(jìn)制: 艾 4挨十六進(jìn)制:

60、柏 0 x4吧*注拔意:匯編指辦令的表示方耙式與C的表捌示方式不一百樣,但如果把是在C中嵌耙入?yún)R編,則擺也要按C的吧方式來寫案e。背*問愛題:八進(jìn)制的引導(dǎo)符號(hào)拌還不知道哎03.笆循環(huán)體的頒3按種寫法扳:寫法1:罷while哀(1);隘叭.敖寫法2(推翱薦):埃for(;斑;);伴埃.寫法3:loop:隘半扒.懊佰goto 辦loop扳骯*網(wǎng)皚友gtw答藹:Code矮Warri扳or對(duì)恒為霸“真”的表熬達(dá)式編譯時(shí)哎經(jīng)常會(huì)有提靶示,很羅嗦,如whi叭le(1)胺;不如用f哀or(;胺)捌9。啊04.壩關(guān)于復(fù)位及邦中斷的入口霸地址傲:澳所有的入口瓣地址都存儲(chǔ)按在$FFD按0$FF八FF區(qū)域中巴比如:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論