第一篇:寫代碼總結(jié)
一、排版:
1.關(guān)鍵詞和操作符之間加適當(dāng)?shù)目崭瘛?/p>
2.相對獨(dú)立的程序塊與塊之間加空行
3.較長的語句、表達(dá)式等要分成多行書寫。
4.劃分出的新行要進(jìn)行適應(yīng)的縮進(jìn),使排版整齊,語句可讀。
5.長表達(dá)式要在低優(yōu)先級操作符處劃分新行,操作符放在新行之首。
6.循環(huán)、判斷等語句中若有較長的表達(dá)式或語句,則要進(jìn)行適應(yīng)的劃分。
7.若函數(shù)或過程中的參數(shù)較長,則要進(jìn)行適當(dāng)?shù)膭澐帧?/p>
8.不允許把多個(gè)短語句寫在一行中,即一行只寫一條語句。
9.函數(shù)或過程的開始、結(jié)構(gòu)的定義及循環(huán)、判斷等語句中的代碼都要采用縮進(jìn)風(fēng)格。
10.C/C++語言是用大括號?{?和?}?界定一段程序塊的,編寫程序塊時(shí)?{?和
?}?應(yīng)各獨(dú)占一行并且位于同一列,同時(shí)與引用它們的語句左對齊。在函數(shù)體的開始、類的定義、結(jié)構(gòu)的定義、枚舉的定義以及if、for、do、while、switch、case語句中的程序都要采用如上的縮進(jìn)方式。
二、注釋
1.注釋要簡單明了。
2.邊寫代碼邊注釋,修改代碼同時(shí)修改相應(yīng)的注釋,以保證注釋與代碼的一致性。
3.在必要的地方注釋,注釋量要適中。注釋的內(nèi)容要清楚、明了,含義準(zhǔn)確,防止注釋二義性。保持注釋與其描述的代碼相鄰,即注釋的就近原則。
4.對代碼的注釋應(yīng)放在其上方相鄰位置,不可放在下面。
5.對數(shù)據(jù)結(jié)構(gòu)的注釋應(yīng)放在其上方相鄰位置,不可放在下面;對結(jié)構(gòu)中的每個(gè)域的注釋應(yīng)放在此域的右方;同一結(jié)構(gòu)中不同域的注釋要對齊。
6.變量、常量的注釋應(yīng)放在其上方相鄰位置或右方。
7.全局變量要有較詳細(xì)的注釋,包括對其功能、取值范圍、哪些函數(shù)或過程存取它以及存取時(shí)注意事項(xiàng)等的說明。
8.在每個(gè)源文件的頭部要有必要的注釋信息,包括:文件名;版本號;作者;生成日期;模塊功能描述(如功能、主要算法、內(nèi)部各部分之間的關(guān)系、該文件與其它文件關(guān)系等);主要函數(shù)或過程清單及本文件歷史修改記錄等。
9.在每個(gè)函數(shù)或過程的前面要有必要的注釋信息,包括:函數(shù)或過程名稱;功能描述;輸入、輸出及返回值說明;調(diào)用關(guān)系及被調(diào)用關(guān)系說明等。
三、命名
1.較短的單詞可通過去掉“元音”形成縮寫;
2.較長的單詞可取單詞的頭幾發(fā)符的優(yōu)先級,并用括號明確表達(dá)式的操作順序,避免使用默認(rèn)優(yōu)先級。
3.使用匈牙利表示法
四、可讀性
1.避免使用不易理解的數(shù)字,用有意義的標(biāo)識來替代。
2.不要使用難懂的技巧性很高的語句。
3.源程序中關(guān)系較為緊密的代碼應(yīng)盡可能相鄰。
五、變量
1.去掉沒必要的公共變量。
2.構(gòu)造僅有一個(gè)模塊或函數(shù)可以修改、創(chuàng)建,而其余有關(guān)模塊或函數(shù)只訪問的公共變量,防止多個(gè)不同模塊或函數(shù)都可以修改、創(chuàng)建同一公共變量的現(xiàn)象。
3.仔細(xì)定義并明確公共變量的含義、作用、取值范圍及公共變量間的關(guān)系。
4.明確公共變量與操作此公共變量的函數(shù)或過程的關(guān)系,如訪問、修改及創(chuàng)建等。
5.當(dāng)向公共變量傳遞數(shù)據(jù)時(shí),要十分小心,防止賦與不合理的值或越界等現(xiàn)象發(fā)生。
6.防止局部變量與公共變量同名。
7.仔細(xì)設(shè)計(jì)結(jié)構(gòu)中元素的布局與排列順序,使結(jié)構(gòu)容易理解、節(jié)省占用空間,并減少引起誤用現(xiàn)象。
8.結(jié)構(gòu)的設(shè)計(jì)要盡量考慮向前兼容和以后的版本升級,并為某些未來可能的應(yīng)用保留余地(如預(yù)留一些空間等)。
9.留心具體語言及編譯器處理不同數(shù)據(jù)類型的原則及有關(guān)細(xì)節(jié)。
10.嚴(yán)禁使用未經(jīng)初始化的變量。聲明變量的同時(shí)對變量進(jìn)行初始化。
11.編程時(shí),要注意數(shù)據(jù)類型的強(qiáng)制轉(zhuǎn)換。
六、函數(shù)、過程
1.函數(shù)的規(guī)模盡量限制在200行以內(nèi)。
2.一個(gè)函數(shù)最好僅完成一件功能。
3.為簡單功能編寫函數(shù)。
4.函數(shù)的功能應(yīng)該是可以預(yù)測的,也就是只要輸入數(shù)據(jù)相同就應(yīng)產(chǎn)生同樣的輸出。
5.盡量不要編寫依賴于其他函數(shù)內(nèi)部實(shí)現(xiàn)的函數(shù)。
6.避免設(shè)計(jì)多參數(shù)函數(shù),不使用的參數(shù)從接口中去掉。
7.用注釋詳細(xì)說明每個(gè)參數(shù)的作用、取值范圍及參數(shù)間的關(guān)系。
8.檢查函數(shù)所有參數(shù)輸入的有效性。
9.檢查函數(shù)所有非參數(shù)輸入的有效性,如數(shù)據(jù)文件、公共變量等。
10.函數(shù)名應(yīng)準(zhǔn)確描述函數(shù)的功能。
11.避免使用無意義或含義不清的動詞為函數(shù)命名
12.函數(shù)的返回值要清楚、明了,讓使用者不容易忽視錯誤情況。
13/明確函數(shù)功能,精確(而不是近似)地實(shí)現(xiàn)函數(shù)設(shè)計(jì)。
14.減少函數(shù)本身或函數(shù)間的遞歸調(diào)用。
15.編寫可重入函數(shù)時(shí),若使用全局變量,則應(yīng)通過關(guān)中斷、信號量(即P、V操作)等手段對其加以保護(hù)。
七、可測性
1.在編寫代碼之前,應(yīng)預(yù)先設(shè)計(jì)好程序調(diào)試與測試的方法和手段,并設(shè)計(jì)好各種調(diào)測開關(guān)及相應(yīng)測試代碼如打印函數(shù)等。
2.在進(jìn)行集成測試/系統(tǒng)聯(lián)調(diào)之前,要構(gòu)造好測試環(huán)境、測試項(xiàng)目及測試用例,同時(shí)仔細(xì)分析并優(yōu)化測試用例,以提高測試效率。
八、程序效率
1.編程時(shí)要經(jīng)常注意代碼的效率。
2.在保證軟件系統(tǒng)的正確性、穩(wěn)定性、可讀性及可測性的前提下,提高代碼效率。
3.不能一味地追求代碼效率,而對軟件的正確性、穩(wěn)定性、可讀性及可測性造成影響。
4.編程時(shí),要隨時(shí)留心代碼效率;優(yōu)化代碼時(shí),要考慮周全。
5.要仔細(xì)地構(gòu)造或直接用匯編編寫調(diào)用頻繁或性能要求極高的函數(shù)。
6.通過對系統(tǒng)數(shù)據(jù)結(jié)構(gòu)劃分與組織的改進(jìn),以及對程序算法的優(yōu)化來提高空間效率。
7.在多重循環(huán)中,應(yīng)將最忙的循環(huán)放在最內(nèi)層。
8.盡量減少循環(huán)嵌套層次。
9.避免循環(huán)體內(nèi)含判斷語句,應(yīng)將循環(huán)語句置于判斷語句的代碼塊之中。
10.盡量用乘法或其它方法代替除法,特別是浮點(diǎn)運(yùn)算中的除法。
九、質(zhì)量保證
1.在軟件設(shè)計(jì)過程中構(gòu)筑軟件質(zhì)量。
代碼質(zhì)量保證優(yōu)先原則
(1)正確性,指程序要實(shí)現(xiàn)設(shè)計(jì)要求的功能。
(2)穩(wěn)定性、安全性,指程序穩(wěn)定、可靠、安全。
(3)可測試性,指程序要具有良好的可測試性。
(4)規(guī)范/可讀性,指程序書寫風(fēng)格、命名規(guī)則等要符合規(guī)范。
(5)全局效率,指軟件系統(tǒng)的整體效率。
(6)局部效率,指某個(gè)模塊/子模塊/函數(shù)的本身效率。
(7)個(gè)人表達(dá)方式/個(gè)人方便性,指個(gè)人編程習(xí)慣。
2.只引用屬于自己的存貯空間。
3.防止引用已經(jīng)釋放的內(nèi)存空間。
4.過程/函數(shù)中分配的內(nèi)存,在過程/函數(shù)退出之前要釋放。
5.過程/函數(shù)中申請的(為打開文件而使用的)文件句柄,在過程/函數(shù)退出前要關(guān)閉。
6.防止內(nèi)存操作越界。
7.時(shí)刻注意表達(dá)式是否會上溢、下溢。
8.認(rèn)真處理程序所能遇到的各種出錯情況。
9.系統(tǒng)運(yùn)行之初,要初始化有關(guān)變量及運(yùn)行環(huán)境,防止未經(jīng)初始化的變量被引用。
10.系統(tǒng)運(yùn)行之初,要對加載到系統(tǒng)中的數(shù)據(jù)進(jìn)行一致性檢查。
11.嚴(yán)禁隨意更改其它模塊或系統(tǒng)的有關(guān)設(shè)置和配置。
12.不能隨意改變與其它模塊的接口。
13.充分了解系統(tǒng)的接口之后,再使用系統(tǒng)提供的功能。
14.要時(shí)刻注意易混淆的操作符。當(dāng)編完程序后,應(yīng)從頭至尾檢查一遍這些操作符。
15.不使用與硬件或操作系統(tǒng)關(guān)系很大的語句,而使用建議的標(biāo)準(zhǔn)語句。
16.建議:使用第三方提供的軟件開發(fā)工具包或控件時(shí),要注意以下幾點(diǎn):
(1)充分了解應(yīng)用接口、使用環(huán)境及使用時(shí)注意事項(xiàng)。
(2)不能過分相信其正確性。
(3)除非必要,不要使用不熟悉的第三方工具包與控件。
十、代碼編譯
1.編寫代碼時(shí)要注意隨時(shí)保存,并定期備份,防止由于斷電、硬盤損壞等原因造成代碼丟失。
2.同一項(xiàng)目組內(nèi),最好使用相同的編輯器,并使用相同的設(shè)置選項(xiàng)。
3.合理地設(shè)計(jì)軟件系統(tǒng)目錄,方便開發(fā)人員使用。
4.打開編譯器的所有告警開關(guān)對程序進(jìn)行編譯。
5.在同一項(xiàng)目組或產(chǎn)品組中,要統(tǒng)一編譯開關(guān)選項(xiàng)。
6.使用工具軟件(如Visual SourceSafe)對代碼版本進(jìn)行維護(hù)。
十一、代碼測試、維護(hù)
1.單元測試要求至少達(dá)到語句覆蓋。
2.單元測試開始要跟蹤每一條語句,并觀察數(shù)據(jù)流及變量的變化。
3.清理、整理或優(yōu)化后的代碼要經(jīng)過審查及測試。
4.代碼版本升級要經(jīng)過嚴(yán)格測試。
第二篇:軟件工程代碼總結(jié)
1、事件
處理事件的方法
2、class和id的用途是不一樣的;首先要說明一下,選擇器一共有三種:
html標(biāo)記,class,id;html標(biāo)記就不說了,class是對html標(biāo)記選擇器的一種擴(kuò)展,CLASS可以給多個(gè)標(biāo)記反復(fù)利用;而ID的目的在于被Javascript使用,來動態(tài)改變CSS,所以2種的實(shí)際用途是截然不同的。
如:“id”對應(yīng)“#”,“class”對應(yīng)“.”.id是唯一標(biāo)志的,在同一頁面中不能有相同的值,class則沒這約束。如: Css #div1{......}.div2{......}
//class可以相同重復(fù)用
第三篇:程序員如果做到每天寫代碼?
對于程序員來說,如何做到每天都寫代碼呢?可汗學(xué)院計(jì)算機(jī)科學(xué)學(xué)院院長暨jQuery創(chuàng)始人John Resig撰文分享了自己的心得和體會。下面,一起看看他是如何做到的----首先他給自己定下了幾條規(guī)則:
1.每天必須寫代碼??梢詫懳臋n、博客或者其他的文章,但是必須要加進(jìn)自己寫的代碼。
2.代碼必須是有用的。不要格式化、重構(gòu)的代碼。
3.代碼必須在午夜之前寫好(為了避免不想熬夜而草率地寫代碼)。
4.代碼必須是開源的,且要放到Github上(這樣強(qiáng)迫自己小心寫代碼,并會考慮代碼重用性及怎么創(chuàng)建項(xiàng)目前期的模塊)。
當(dāng)然,以上這些規(guī)則是靈活的。John Resig之所以制定這么嚴(yán)格的規(guī)則,是想提高自己業(yè)余項(xiàng)目的開發(fā)效率。他已經(jīng)在連續(xù)20周的時(shí)間里每天寫代碼,這給他帶來了好的工作習(xí)慣。鑒于此,John Resig為大家分享了自己堅(jiān)持每天做業(yè)余項(xiàng)目后的心得體會:
利用最小化的時(shí)間寫好代碼。
我強(qiáng)迫自己每天花不少于半個(gè)小時(shí)來寫代碼(這真不是一件容易的事,尤其還得回憶前一天寫了什么),在工作日期間一般不超過一個(gè)小時(shí),但在周末我會花多一些時(shí)間做業(yè)余項(xiàng)目。
讓寫代碼成為習(xí)慣。
要知道我并不關(guān)心自己在Github上的排名,因?yàn)槲矣X得做業(yè)余項(xiàng)目是自己的事,不要為了取悅別人而做。減肥和鍛煉也是同樣的道理,如果你不在乎提升自己,你永遠(yuǎn)都不會取得成功。
與不良情緒作斗爭。
在開始實(shí)施每天寫代碼的計(jì)劃前期,我時(shí)常焦慮項(xiàng)目沒有很大的進(jìn)展,畢竟業(yè)余項(xiàng)目沒有時(shí)間限制。后來我意識到有這樣的不良情緒對項(xiàng)目進(jìn)展一點(diǎn)幫助都沒有,反而會阻礙。所以要與不良情緒作斗爭,現(xiàn)在我能心平氣和地完成大量的工作,再也不會像以前那樣為工作的事情忙得焦頭爛額了。
安排、利用好周末時(shí)間。
對大多數(shù)人來說,利用周末時(shí)間做業(yè)余項(xiàng)目是項(xiàng)目取得大進(jìn)展的絕好機(jī)會。而對于我來說,如果直到周末業(yè)余項(xiàng)目才能做好我會對自己很失望。之前我很少能完成所有自己想做的工作,這也就強(qiáng)迫自己不參加諸如參觀博物館、游公園等自己喜歡的周末娛樂活動,把時(shí)間留給工作。然而現(xiàn)在我強(qiáng)烈地意識到盡管業(yè)余項(xiàng)目很重要,但是也不應(yīng)該忽略個(gè)人生活,所以學(xué)會安排時(shí)間很重要。
潛意識思考。
每天做業(yè)余項(xiàng)目寫代碼有一個(gè)有趣的副作用,那就是大腦會在潛意識里思考。因此,當(dāng)我在散步、淋浴或從事其他非腦力活動時(shí),我還在想著下一步代碼該怎么寫、出現(xiàn)問題了有什么解決的好方法,以前我每星期或者隔一個(gè)星期寫一次代碼從沒出現(xiàn)過這樣的情況。時(shí)間用來思考自然就不會再為業(yè)余項(xiàng)目取得的進(jìn)展少而焦慮了。
每天寫一點(diǎn)代碼不易忘。
當(dāng)接頭做業(yè)余項(xiàng)目時(shí)總要付出“上下文切換”的代價(jià),然而不幸的是思考是很難接上頭的。所以我每天都做一點(diǎn)業(yè)余項(xiàng)目,讓自己不容易忘記。
管理好時(shí)間,平衡工作、生活、業(yè)余項(xiàng)目。
現(xiàn)在的我已簡單地學(xué)會了如何更好地維持工作、生活、業(yè)余項(xiàng)目的平衡,我知道自己每天都要做業(yè)余項(xiàng)目,所以我會更好地管理時(shí)間。如果我晚上有活動且很晚才能回家,那么我會在開始工作之前就做好當(dāng)天的業(yè)余項(xiàng)目。假如當(dāng)天的業(yè)余項(xiàng)目沒有做完,那么不論多晚我都會完成,做到今日事今日畢。
要及時(shí)跟外界溝通。
當(dāng)自己養(yǎng)成了新的習(xí)慣后跟外界溝通這是很有好處的。我的伙伴們都知道我每天寫代碼這個(gè)習(xí)慣,因此有活動安排時(shí)我會跟他們說:“等我寫完代碼再去?!彼麄円稽c(diǎn)都不會介意也很理解我的行為。
代碼積少成多。
我很難相信自己在過去的幾個(gè)月寫了很多的代碼。我新建了幾個(gè)網(wǎng)站,重新寫了框架并創(chuàng)建了大量節(jié)點(diǎn)模塊。我已經(jīng)寫了這么多以至于有時(shí)我都忘記自己寫了些什么,但是我真的很高興我寫了這么多的代碼。
好的習(xí)慣能帶來巨大的成功,武漢北大青鳥光谷校區(qū)專業(yè)老師指出,像每天寫代碼做業(yè)余項(xiàng)目這件事只要你堅(jiān)持做下去,一定會有意想不到的效果。
第四篇:flash常用代碼總結(jié)
1、flash停頓多少秒后播放
setInterval()在執(zhí)行完一次代碼之后,經(jīng)過了那個(gè)固定的時(shí)間間隔,它還會自動重復(fù)執(zhí)行代碼 setTimeout()只執(zhí)行一次那段代碼
兩個(gè)方法用法一樣
1、如果要求在每隔一個(gè)固定的時(shí)間間隔后就精確地執(zhí)行某動作,那么最好使用setInterval
2、如果不想由于連續(xù)調(diào)用產(chǎn)生互相干擾的問題,尤其是每次函數(shù)的調(diào)用需要繁重的計(jì)算以及很長的處理時(shí)間,那么最好使用setTimeout
stop();//設(shè)置停頓時(shí)間,單位毫秒
var loadTime=setInterval(playMC,5000);function playMC(){ play();clearInterval(loadTime);//終止被調(diào)用的過程代碼的執(zhí)行 }
2、Flash調(diào)用外部swf定位和大小
http://mojojo.blogbus.com/logs/16055529.html
flash調(diào)用外部swf定位和大小的ActionScript函數(shù)。
(1)用同一目錄下swf文件,一般來說用loadMovie(“mpg.swf”,“mpg”);
可是那樣不好控制swf的位置和大小把你的swf文件導(dǎo)入到一個(gè)空mc中去,然后通過調(diào)整這個(gè)空的mc來控制你的導(dǎo)入的swf文件的大小。
(2)文字要改變其大小可以用: setproperty(“mcname”,_xscale,xx);setproperty(“mcname”,_yscale,yy);
//其中mcname為空mc的實(shí)例名,xx,yy為調(diào)整數(shù)值(3)要改變調(diào)入后的swf的位置: setproperty(“mcname”,_x,xxx);setproperty(“mcname”,_y,yyy);
//其中xxx,yyy是數(shù)值,即新的位置
功能說明: loadMovieNum(“url”,level[, variables])loadMovie(“url”,level/target[, variables])
功能說明:
在播放原來加載的影片的同時(shí)將SWF或JPEG文件加載進(jìn)來。
參數(shù)說明:
url 要加載的 SWF 或 JPEG 文件的絕對或相對 URL,不能包含文件夾或磁盤驅(qū)動器說明。
level 把swf文件以層的形式載入到Movie里,若載入0層,則載入的swf文件將取代當(dāng)前播放的Movie。2層高于1層。
Target 可用路徑拾取器取得并替換目標(biāo)MC,載入的電影將擁有目標(biāo)MC的位置、大小和旋轉(zhuǎn)角度等屬性。(個(gè)人認(rèn)為用Target好些,在控制載入.swf位置時(shí)比較方便)variables 可選參數(shù),指定發(fā)送變量所使用的 HTTP 方法(GET/POST),如果沒有則省略此參數(shù)。
層次Level:Flash允許同時(shí)運(yùn)行多個(gè)SWF文件,F(xiàn)lash一旦載入一個(gè)SWF文件,則占據(jù)了一個(gè)“層次”,系統(tǒng)默認(rèn)的是_Flash0或_Level0,之后的Movie則按順序放在level0---level16000里。第一個(gè)載入的SWF文件為_Flash0或 _Level0,第二個(gè)如果加載到第一層時(shí)的稱為_Flash1或_Level1,依此類推。注意前提是前面載入的文件沒有退出,否則沖掉第一個(gè)SWF文件,第一個(gè)文件也從內(nèi)存中退出。
注意:如果你將外部的Movie加載到Leve0層或者Level0里,那么,原始的Movie就會被暫時(shí)取代,要再用時(shí)還得重新Load一次,也就是說,一個(gè)Level在一個(gè)時(shí)間里只能有一個(gè)Movie存在。在使用LoadMovie和UnLoadMovie時(shí)必須特別注意 Level之間的關(guān)系,否則,當(dāng)你希望在一個(gè)時(shí)間里只播放一個(gè)Movie而Unload掉前一個(gè)Movie時(shí),就會出現(xiàn)不必要的麻煩。
unloadMovieNum(level)
unloadMovie[Num](level/“target”)
功能說明: 從 Flash Player 中刪除已加載的影片。
參數(shù)說明: 同上
loadVariables(“url” ,level/“target” [, variables])
功能說明:
從外部文件中(例如文本文件,或由 CGI 腳本、Active Server Page(ASP)、PHP 或 Perl 腳本生成的文本)讀取數(shù)據(jù),并設(shè)置 Flash Player 級別或目標(biāo)影片剪輯中變量的值。
參數(shù)說明:
url 變量所處位置的絕對或相對 URL
level 指定 Flash Player 中接收這些變量的級別的整數(shù)。
Target 指向接收所加載變量的影片剪輯的目標(biāo)路徑。
variables 可選參數(shù),指定發(fā)送變量所使用的 HTTP 方法(GET/POST),如果沒有則省略此參數(shù)。
gotoAndPlay(scene, frame)
功能說明:
轉(zhuǎn)到指定場景中指定的幀并從該幀開始播放。如果未指定場景,則播放頭將轉(zhuǎn)到當(dāng)前場景中的指定幀。
參數(shù)說明:
scene 轉(zhuǎn)到的場景的名稱。
frame 轉(zhuǎn)到的幀的編號或標(biāo)簽。
Flash常用代碼的介紹
作者:ayan_2006 類型:閃吧BBS 來源:閃吧個(gè)人空間
1、用flash做那種彈出的小窗口分兩步:給flash中的按鈕加入如下action:
on(release){
getURL(“BLOCKED SCRIPTMM_openBrWindow(’newweb.htm’,’’,’width=600,height=100’)”);
} 在HTML頁面的...之間加入下面的javascript代碼.2、如何使得flash一打開就是全屏?
fscommand(“fullscreen”,true)如何不能使用右鍵?
fscommand(“showmenu”, “false”);
3、用命令載入一個(gè)動畫,我需要確定載入動畫在畫面中的位置,用什么語言來設(shè)置?例如載入名為dd.swf的動畫,我要確定這個(gè)動畫的中心位置在(205,250),該怎么設(shè)置?在要加載動畫的那鐘加入:
loadMovie(“dd.swf”, “a”);
a._x=205;
a._y=250;你得先做一個(gè)空的MC起名叫“a”,導(dǎo)入時(shí),在右下角也起名為a。
4、當(dāng)鼠標(biāo)經(jīng)過時(shí)動畫播放到某處:
on(rollover){
gotoAndPlay(10);
} 當(dāng)鼠標(biāo)按下時(shí)動畫播放到某處:
on(release){
gotoAndPlay(1);
}
5、播完動畫后自動跳到某網(wǎng)頁:
getURL(“siteindex.htm”, _self);
6、設(shè)為首頁:
一,用getURL的方法:
設(shè)為首頁:
on(release){
getURL(“getURL(”javascript:void(document.links[0].style.behavior=’url(#default#homepage)’);void document.links[0].setHomePage(’http:// 您的網(wǎng)站地址/’);“, ”_self“, ”POST“);} 加入收藏夾:
on(release){
getURL(”getURL(“javascript:void window.external.AddFavorite(’http://您的網(wǎng)站地 址’,’網(wǎng)站名稱’);”, “_self”, “POST”);} 第二種方法是通過用fscommand的方法,比上面一個(gè)要復(fù)雜一些。首先在Flash 的按鈕上添加ActionScript腳本代碼
設(shè)為首頁
on(release){ fscommand(“setHomePage”, “http://您的網(wǎng)站地址”);} 加入收藏夾
on(release){ fscommand(“addFavorite”, “http://網(wǎng)站地址|網(wǎng)站名稱”);} 在發(fā)布 Flash動畫時(shí)選上HTML,在Template下拉菜單中選擇Flash with fscommand,發(fā)布出html頁面接著要對發(fā)布出來的HTML頁面進(jìn)行修改,在HTML代碼中找 到這么一段
// Handle all the the FSCommand messages in a Flash movie&nb sp;function sethomepage_DoFSCommand(command, args){ } 這一段修改成 // Handle all the the FSCommand messages in a Flash movie function sethomepage_DoFSCommand(command, args){
var sethomepageObj = InternetExplorer ? sethomepage : document.sethomepage;if(command == “setHomePage”){
document.links[0].style.behavior = “url(#default#homepage)”;
document.links[0].setHomePage(args);} else if(command == “addFavorite”){ args = args.split(“|”);window.external.AddFavorite(args[0], args[1]);最后,如果html里一個(gè)鏈接都 沒有,還需在 第二種方法:
也可以在SWF文件的第一幀Actions上的GETURL 命令上加上:
也可以在SWF文件的第一幀Actions上的GETURL 命令上加上:
javascript:window.open(”nfd.swf“,”“,”fullscreen=1,menubar=no,width=800,height=600“)這種全屏也是類似屏 保,用ALT+F4或設(shè)置按鈕退出。把fullscreen設(shè)為=0,則只是不顯示瀏覽器菜
單欄、工具欄的全屏。還有一個(gè)寫法:
javascript:window.open(”*.swf“,”“,”menubar=no, toolbar=no,location=no,status=no,fullscreen=yes“)
我個(gè)人推薦這種^_^ 第三種方法:
稍麻煩一些,需要兩個(gè)網(wǎng)頁,呵呵*—* 你可以建立個(gè)空白網(wǎng)頁加上代碼 :
*.htm 你把他替換為 你自己要全屏打開的網(wǎng)頁就可以了
第四種方法:
這種方法更詳細(xì),還有步驟,不過我沒有試過,你們可以先試一下啊。我把 操作步驟寫下:
1、在Flashk中做好動畫后,首先選擇主菜單中的File Publish Settings(文件發(fā)布設(shè)置命令),彈出對話框,點(diǎn)擊進(jìn)入HTML項(xiàng)設(shè)置: 設(shè)置Dimensions尺寸單位為Percent百分比;在寬,高中設(shè)置100。再點(diǎn)擊發(fā)布按鈕進(jìn)行發(fā)布即可。這樣,在你原文件處就會生成一個(gè)和動畫同名的HTML 文件。
2、建立一個(gè)空白的HTML頁面blank.htm,只保留標(biāo)簽部分。
3、建立一個(gè)有帶框架的html文件show.html,頁面 html文本如下:
該文件將頁面分為兩個(gè)框 架,上面放動畫名.html文件,下面放blank.html文件。注:其中,動畫名.html文件是在第一步中發(fā)布出來的相應(yīng)的html文件。4、建立一個(gè)帶 JavaScript腳本的html文件full.html。用這個(gè)文件打開show.html并 定義其顯示窗口為全屏,不帶菜單,滾動條,狀態(tài)欄等。該文件的html文本如 下:
上面的第四步和第三種方法一樣的 9、如何禁止右鍵菜單,fscommand的方法還是只能適用于fp,在網(wǎng)頁中使用還是必須添加額外的參數(shù),或者用最簡單的一句as,在fp和網(wǎng)頁中均適用:
Stage.showMenu=false;
10、播完動畫后自動跳到某網(wǎng)頁:
getURL(”siteindex.htm“, ”_self“);
最常用的Flash語句flash語句(匯集)FLASH代碼
flash 動作語句 flash全屏語句 flash按鈕觸發(fā)語句 flash 最小化語句 flash自動跳轉(zhuǎn)語句
1、flash按鈕觸發(fā)語句
box_btn.onPress=function(){ trace(”ok“);};按鈕實(shí)例名稱.事件處理方法=function(){ //處理程序
};例如:
n=1 box_btn.onRelease=function(){ n=n+1 trace(”n=“+n);} 當(dāng)按鈕被點(diǎn)一下的時(shí)候,Output窗口會輸出:”n=2“ onClipEvent(load){ stop();} 以上是影片剪輯的事件處理函數(shù)?!?)“的內(nèi)部是事件。
在一個(gè)FLASH里在第一個(gè)場景里調(diào)用第二個(gè)場景,要在第一個(gè)場景里需要調(diào)用的地方加個(gè)按鈕,然后在按鈕上寫下如下代碼:
on(release){ tellTarget(”_root“){ gotoAndPlay(”mm2“, 1);} } 其中,”mm2“是第二個(gè)場景的MC的名稱。
on(release){ loadmovie(”fz3.swf“,1);setProperty(”fz3.swf“,_x,100);
setProperty(”fz3.swf“,_y,100);
_root.createEmptyMovieClip(”Card Game“);
mc.loadMovie(”fz3.swf“);
mc._x=0;
mc._y=0;
} fz3.swf是需要調(diào)入的SWF文件,_x,_y是坐標(biāo)軸
Card Game是SWF中MC的名字
on(release)結(jié)構(gòu)只能用于按鈕,其他相關(guān)的幾種用法如on(press)、on(rollOver)、on(rollout)、on(dragOver)、on(dragOut)等。
2.If-else語句
對if語句可以進(jìn)行擴(kuò)展,使用else執(zhí)行條件不成立(比較表達(dá)式為false)時(shí)的代碼,如下所示:
if(x == 9){ gotoAndPlay(15);} else { gotoAndPlay(16);} 你也可以使用else if語句將if語句更推進(jìn)一步,如下所示: if(x == 9){ gotoAndPlay(15);} else if(x == 10){ gotoAndPlay(16);} else if(x == 11){ gotoAndPlay(20);} else { gotoAndPlay(25);} 你可以讓if語句想要多長就有多長,你也可以使用else if語句對別的變量進(jìn)行比較,如下所示:
if(x == 9){ gotoAndPlay(15);} else if(y<20){ gotoAndPlay(16);} else { gotoAndPlay(25);} 復(fù)合比較
你可以在一個(gè)if語句中對幾個(gè)比較表達(dá)式的值進(jìn)行判斷,比如說你希望在x為9并且y為20時(shí)跳轉(zhuǎn)到第10幀,可以使用如下所示的腳本:
if((x == 9)&&(y == 20)){ gotoAndPlay(10);} 邏輯與運(yùn)算符&&將兩個(gè)比較表達(dá)式聯(lián)接在一起成為一個(gè)復(fù)合表達(dá)式,當(dāng)兩個(gè)表達(dá)式的值都為true時(shí)復(fù)合表達(dá)式的值才為true。
每個(gè)比較表達(dá)式都需要添加獨(dú)立的括號以便Flash能正確識別。
在Flash的早期版本中使用and執(zhí)行邏輯與運(yùn)算,現(xiàn)在已推薦不使用。
你也可以使用邏輯或運(yùn)算符||將兩個(gè)比較表達(dá)式聯(lián)接在一起成為一個(gè)復(fù)合表達(dá)式,只要有一個(gè)表達(dá)式的值為true,復(fù)合表達(dá)式的值就為true。如下所示:
if((x == 7)||(y == 15)){ gotoAndPlay(20);} 在該腳本中,只要x為7或者y為15,或者兩者都成立,結(jié)果都是跳轉(zhuǎn)到第20幀。
只有當(dāng)兩者都不成立時(shí),才不會執(zhí)行g(shù)otoAndPlay命令。
3、函數(shù)
到現(xiàn)在為止,我們都是將腳本放在影片的第1幀中。
如果程序相當(dāng)復(fù)雜,再放在同一幀中就使腳本顯得太龐大了。
函數(shù)使你可以組織需重用的代碼,并放在時(shí)間軸中,例如: function myFunction(myNum){ var newNum = myNum+5;return newNum;} 函數(shù)以關(guān)鍵字function開頭,function后面是函數(shù)名。
與變量名相似,你可以指定自己的函數(shù)名,最好將函數(shù)名取得有意義一些。
函數(shù)名后面的括號容納該函數(shù)的參數(shù),所謂參數(shù)也是一個(gè)變量,它的值在調(diào)用該函數(shù)時(shí)予以指定。
一個(gè)函數(shù)可以有若干參數(shù),也可以沒有參數(shù)。無論有沒有參數(shù),函數(shù)名后都應(yīng)緊跟一對括號。
大括號中的部分是函數(shù)體,在函數(shù)體中創(chuàng)建了一個(gè)局部變量newNum,將myNum加5的結(jié)果設(shè)置為newNum的值。
如果你將10作為參數(shù)傳遞給該函數(shù),newNum的值就是15。
return命令僅用于函數(shù)中,使用return結(jié)束一個(gè)函數(shù)并返回函數(shù)值。
此處,newNum是用return命令返回的函數(shù)值。
要使用函數(shù),就需要調(diào)用它,如下所示:
var a = myFunction(7);該語句創(chuàng)建一個(gè)新的局部變量a,將7作為參數(shù)調(diào)用函數(shù)myFunction,并將函數(shù)返回的結(jié)果作為變量a的值。
被調(diào)用的函數(shù)開始運(yùn)行,創(chuàng)建一個(gè)局部變量myNum,將7作為myNum的值,然后執(zhí)行函數(shù)體內(nèi)的代碼,使用return命令將newNum的值12返回給函數(shù)的調(diào)用者。這時(shí),a的值變?yōu)?2。
函數(shù)最大的作用體現(xiàn)在它可以重復(fù)使用。如下所示的3行代碼產(chǎn)生3個(gè)不同的結(jié)果:
trace(myFunction(3));trace(myFunction(6));trace(myFunction(8));運(yùn)行以上代碼,你將得到結(jié)果8、11和13。
使用函數(shù)還有一個(gè)好處就是可以只改變函數(shù)中的一處,從而影響所有調(diào)用該函數(shù)的命令。
例如,將函數(shù)myFunction中的var newNum = myNum+5改成var newNum = myNum+7,上面3個(gè)調(diào)用該函數(shù)的命令的結(jié)果將變成10、13和15點(diǎn)語法的另一個(gè)用途是指定影片剪輯的屬性。
如下面的語句將影片剪輯myMC的_alpha(透明度)屬性設(shè)置為50%:
myMC._alpha = 50;你還可以在影片剪輯中使用點(diǎn)語法定位根(root)中的一個(gè)全局變量。
如果你在主時(shí)間軸中創(chuàng)建了一個(gè)全局變量globelVar,而要在影片剪輯中使用這個(gè)全局變量,可以使用如下的語句:
trace(_root.globleVar);stop:使影片停止在當(dāng)前時(shí)間軸的當(dāng)前幀中。
play:使影片從當(dāng)前幀開始繼續(xù)播放。
gotoAndStop:跳轉(zhuǎn)到用幀標(biāo)簽或幀編號指定的某一特定幀并停止。gotoAndPlay:跳轉(zhuǎn)到用幀標(biāo)簽或幀編號指定的某一特定幀并繼續(xù)播放。
nextFrame:使影片轉(zhuǎn)到下一幀并停止。
prevFrame:使影片回到上一幀并停止。
stop命令常常用在幀動作中,以使影片停止并等待用戶控制。
其他命令常常用在按鈕的事件處理函數(shù)中。
如果gotoAndPlay命令中只有一個(gè)參數(shù),F(xiàn)lash將認(rèn)為它代表某個(gè)幀;
如果有兩個(gè)參數(shù),第1個(gè)參數(shù)將作為場景名,第2個(gè)參數(shù)代表該場景中的幀。
要定位包含某一對象的上一級對象,可以使用關(guān)鍵字_parent。
如果一個(gè)影片剪輯是包含在主時(shí)間軸中,在影片剪輯中使用_parent和_root的效果是一樣的。
如果影片剪輯與主時(shí)間軸相差兩個(gè)層級,即當(dāng)影片剪輯包含在另一個(gè)位于主時(shí)間軸中的影片剪輯中,這時(shí)在該影片剪輯中使用_parent指代的是它上一級的影片剪輯,而_root是指它上兩級的主時(shí)間軸。在主時(shí)間軸中不能使用_parent,因?yàn)橹鲿r(shí)間軸沒有上一級。
4、.詳細(xì)了解GOTO語句
prevFrame()
跳至并停止在前一禎。
nextFrame()
跳至并停止在下一禎。
prevScene()
跳至并停止在前一場景的第1幀。nextScene()
跳至并停止在下一場景的第1幀。
gotoAndPlay([scene,] frame)
跳至scene場景(省略表示當(dāng)前場景)的frame幀并播放。
gotoAndStop([scene,] frame)
跳至scene場景(省略表示當(dāng)前場景)的frame幀并停止。
5、了解MC的各種可改寫的屬性
_x 中心點(diǎn)所在相對X坐標(biāo)(象素單位)
_y 中心點(diǎn)所在相對Y坐標(biāo)(象素單位)
_xscale 橫向縮放比例,初始為100
_yscale 縱向縮放比例,初始為100
_rotation 相對旋轉(zhuǎn)角度(度單位)
_width 相對顯示寬度(象素單位)
_height 相對顯示高度(象素單位)
_alpha 顯示透明度(0~100)
_visible 是否可見
_focusrect 是否顯示焦點(diǎn)框
_name 實(shí)例名稱
6、三大紀(jì)律: 1>寫代碼時(shí)一定要用英文(如EN CH)輸入法
2>必須要有唯物主義思想,沒有加載的MC是不可以更改它的屬
性,更不可以寫代碼去控制它。這個(gè)問題較難掌握,高手有時(shí)也會
犯,道理就是先有吃的才能請客吃,啥也沒有請客吃什么呢
3>操作什么一定要選什么(實(shí)際上哪個(gè)軟件也要這樣)。在MX中加代
碼時(shí)如不選,就一定要寫明名稱,實(shí)際上也是一種先擇。
7、八項(xiàng)注意: 1>按鈕不能蓋著輸入文本,動態(tài)文本和輸入文本域不能蓋著按鈕
2>用loadMoie時(shí)LEVEL1及以上的文件盡量少用大隱型按鈕
3>從一個(gè)文件中復(fù)制MC實(shí)例到別一個(gè)文件中時(shí),盡量復(fù)制幀,而不能直接
復(fù)制實(shí)例,4>從一個(gè)文件中復(fù)制MC實(shí)例到別一個(gè)文件中時(shí),要先把目標(biāo)文件中的符
號庫中原有的符號,裝進(jìn)資夾里,很多網(wǎng)友這個(gè)問題上上過當(dāng)吧?
需要記住一個(gè)動作的作用時(shí),可在動作面板中使用comment(注釋)語句給幀或按鈕動作添加注釋。如果你在協(xié)作環(huán)境中工作或給別人提供范例,添加注釋有助于別人對你編寫的腳本的正確理解。
在動作面板中選擇comment動作時(shí),字符”//“被插入到腳本中。如果在你創(chuàng)建腳本時(shí)加上注釋,即使是較復(fù)雜的腳本也易于理解,例如:
on(release){ //建立新的日期對象 myDate = new Date();currentMonth=myDate.getMonth();//把用數(shù)字表示的月份轉(zhuǎn)換為用文字表示的月份
monthName = calcMoth(currentMonth);year = myDate.getFullYear();currentDate = myDate.getDat();}
常量
常量有其值永不改變的屬性。常數(shù)用大寫字母列于動作工具箱中。例如,常數(shù)BACKSPACE、ENTER、QUOTE、RETURN、SPACE和TAB是Key對象的屬性,指鍵盤上的鍵。要測試用戶是否在按Enter鍵,可使用下面的語句:
if(keycode()= =key.ENTER){ alert = ”你準(zhǔn)備好了嗎?“ controlMC.gotoAndStop(5);}
影片剪輯
1、load enterFrame load在整個(gè)動畫中只加載一次,enterFrame不管是否有stop都要一直加載,直至關(guān)閉
onClipEvent(load){ var i = 0;} onClipEvent(enterFrame){ trace(i);i++;}
2、startDrag()(可做鼠標(biāo)跟隨)
用法
startDrag(target,[lock ,left , top , right, bottom])參數(shù)
target 要拖動的影片剪輯的目標(biāo)路徑。
lock 一個(gè)布爾值,指定可拖動影片剪輯是鎖定到鼠標(biāo)位置中央(true),還是鎖定到用戶首次單擊該影片剪輯的位置上(false)。此參數(shù)是可選的。
left、top、right、bottom 相對于影片剪輯父級坐標(biāo)的值,這些值指定該影片剪輯的約束矩形。這些參數(shù)是可選的。返回 無。說明
函數(shù);使 target 影片剪輯在影片播放過程中可拖動。一次只能拖動一個(gè)影片剪輯。執(zhí)行了 startDrag()操作后,影片剪輯將保持可拖動狀態(tài),直到用 stopDrag()明確停止拖動為止,或直到對其它影片剪輯調(diào)用了 startDrag()動作為止。示例
若要創(chuàng)建用戶可以放在任何位置的影片剪輯,可將 startDrag()和 stopDrag()動作附加到該影片剪輯內(nèi)的某個(gè)按鈕上。on(press){ startDrag(this,true);} on(release){ stopDrag();} 若在動畫開始時(shí)影片剪輯跟隨鼠標(biāo) onClipEvent(load){ Mouse.hide();startDrag(this, true, 0, 0, 550, 400);}
duplicateMovieClip 函數(shù)
duplicateMovieClip(target:String, newname:String, depth:Number): Void duplicateMovieClip(target:MovieClip, newname:String, depth:Number): Void 當(dāng) SWF 文件正在播放時(shí),創(chuàng)建一個(gè)影片剪輯的實(shí)例。無論播放頭在原始影片剪輯中處于什么位置,在重復(fù)的影片剪輯中,播放頭始終從第 1 幀開始。原始影片剪輯中的變量不會復(fù)制到重復(fù)的影片剪輯中。使用 removeMovieClip()函數(shù)或方法可以刪除用 duplicateMovieClip()創(chuàng)建的影片剪輯實(shí)例??捎眯裕篎lash Player 4;ActionScript 1.0 參數(shù)
target:Object所復(fù)制的影片剪輯的唯一標(biāo)識符。depth:Number-所復(fù)制的影片剪輯的唯一深度級別。深度級別是所復(fù)制的影片剪輯的堆疊順序。這種堆疊順序很像時(shí)間軸中圖層的堆疊順序;較低深度級別的影片剪輯隱藏在較高堆疊順序的剪輯之下。必須為每個(gè)所復(fù)制的影片剪輯分配一個(gè)唯一的深度級別,以防止它替換已占用深度上的 SWF 文件。示例
在下面的示例中,將創(chuàng)建一個(gè)名為 img_mc 的新影片剪輯實(shí)例。將一個(gè)圖像加載到該影片剪輯中,然后復(fù)制 img_mc 剪輯。所復(fù)制的剪輯名為 newImg_mc,這個(gè)新剪輯將移至舞臺上,因此它不會與原始剪輯重疊,并且將同一圖像加載到第二個(gè)剪輯中。this.createEmptyMovieClip(”img_mc“, this.getNextHighestDepth());img_mc.loadMovie(”http://004km.cn/flash/images/image1.jpg“);duplicateMovieClip(img_mc, ”newImg_mc“, this.getNextHighestDepth());newImg_mc._x = 200;newImg_mc.loadMovie(”http://004km.cn/flash/images/image1.jpg“);要刪除重復(fù)的影片剪輯,可為名為 myButton_btn 的按鈕添加以下代碼。this.myButton_btn.onRelease = function(){ removeMovieClip(newImg_mc);};
eval 該變量或?qū)傩缘闹?。如果表達(dá)式是對象或影片剪輯,則返回對該對象或影片剪輯的引用。如果無法找到表達(dá)式中列舉的元素,則返回 undefined。
下面的示例使用 eval()為動態(tài)命名的影片剪輯設(shè)置屬性。此 ActionScript 為三個(gè)影片剪輯(分別稱為 square1_mc、square2_mc 和 square3_mc)設(shè)置 _rotation 屬性。
for(var i = 1;i <= 3;i++){ eval(”square“+i+”_mc")._rotation= 5;} 就可以使square1_mc、square2_mc 和 square3_mc角度都變成5
簡單來說就是用字符串或者變量組合起來得到對象,變量..
第五篇:單片機(jī)實(shí)驗(yàn)代碼總結(jié)
編者:方園
單片機(jī)實(shí)驗(yàn)代碼集合(by fangyuan)
1.多字節(jié)累加程序:
ORG 0000H LJMP MAIN ORG 0030H;將加數(shù)和被加數(shù)送到指定地址 MAIN: MOV 20H,#45H
MOV 21H,#74H
MOV 30H,#67H
MOV 31H,#28H
;低位相加
MOV A,21H
ADD A,31H
DA A
MOV 42H,A
;高位相加
MOV A,20H
ADDC A,30H
DA A
MOV 41H,A
CLR A
ADDC A,#0
MOV 40H,A
SJMP $ END
2.數(shù)據(jù)交換實(shí)驗(yàn)
編寫程序,實(shí)現(xiàn)以下操作:
【功能1】產(chǎn)生數(shù)組Hex1:0H、1H、2H、? 0FH,存儲到片內(nèi)RAM區(qū)中,數(shù)組Hex1的首地址為30H。
【功能2】產(chǎn)生數(shù)組Hex2:0FH、0EH、0DH、? 0H,存儲到片外RAM區(qū)中,數(shù)組Hex2的首地址為3000H。
【功能3】將片內(nèi)RAM數(shù)組Hex1與片外RAM數(shù)組Hex2交換內(nèi)容。
代碼:
ORG 0000H
Hex1 EQU 30H
;定義內(nèi)部RAM數(shù)組首地址
Hex2 EQU 3000H;定義外部RAM數(shù)組首地址
編者:方園
LJMP MAIN
ORG 0030H MAIN:
MOV SP,#4FH
;定義棧頂?shù)刂?/p>
MOV R7,#16
MOV R0,#Hex1
MOV DPTR,#Hex2
LCALL HEX1DE
;調(diào)用內(nèi)部送數(shù)據(jù)函數(shù)
LCALL HEX2DE;調(diào)用外部送數(shù)據(jù)函數(shù)
LCALL XCHDE;調(diào)用交換函數(shù)
SJMP $
ORG 0100H
;內(nèi)部送數(shù)據(jù)
HEX1DE: PUSH 00H
PUSH 07H
MOV A,#0 LOOP1: MOV @R0,A
INC A
INC R0
DJNZ R7,LOOP1
POP 07H
POP 00H
RET
;外部送數(shù)據(jù)
HEX2DE: PUSH 07H
PUSH DPL
PUSH DPH
MOV A,#0FH LOOP2: MOVX @DPTR,A
DEC A
INC DPTR
DJNZ R7,LOOP2
POP DPH
POP DPL
POP 07H
RET
;交換子程序 XCHDE:
LOOP3: MOVX A,@DPTR
XCH A,@R0
編者:方園
END
MOVX @DPTR,A INC R0 INC DPTR DJNZ R7,LOOP3 RET
3.查表實(shí)驗(yàn)
1、《單片機(jī)原理及應(yīng)用實(shí)驗(yàn)教程》(第2版)“第2章 實(shí)驗(yàn)3”(P49)。要求: 16進(jìn)制數(shù)(00H~0FH)ASCⅡ碼表定義在內(nèi)部ROM中(用偽指令定義);R0為片內(nèi)RAM區(qū)Hex數(shù)組指針;R1為片內(nèi)RAM區(qū)Asc數(shù)組指針;數(shù)據(jù)塊長度放在寄存器R2中。
代碼如下:
ORG 0000H
Hex EQU 40H
Asc EQU 50H
LJMP MAIN
ORG 0030H MAIN:
MOV R2,#16
MOV DPTR,#TABLE
MOV R0,#Hex
MOV R1,#Asc
MOV SP,#2FH
LCALL FUZHI
LCALL ZHUANHUAN
SJMP $
TABLE:
DB '0123456789'
;查表子程序 ORG 1000H ZHUANHUAN:
PUSH 00H
PUSH 01H
PUSH 02H LOOP1:
MOV A,@R0
編者:方園
MOVC A,@A+DPTR
MOV @R1,A
INC R0
INC R1
DJNZ R2,LOOP1
POP 02H
POP 01H
POP 00H
RET
;R0送值子程序 FUZHI:
PUSH 00H
PUSH 01H
PUSH 02H
MOV A,#0 LOOP2:
MOV @R0,A
INC R0
INC A
DJNZ R2,LOOP2
POP 02H
POP 01H
POP 00H
RET END
2、編寫用@A+PC指令的查表程序,實(shí)現(xiàn)用查表方式將片內(nèi)RAM中16進(jìn)制數(shù)組Hex(00H~0FH)轉(zhuǎn)換為ASCⅡ碼并存入片內(nèi)RAM數(shù)組Asc中。要求:
16進(jìn)制數(shù)(00H~0FH)ASCⅡ碼表在內(nèi)部ROM中; R0為片內(nèi)RAM區(qū)Hex數(shù)組指針; R1為片內(nèi)RAM區(qū)Asc數(shù)組指針; 數(shù)據(jù)塊長度放在寄存器R2中。代碼如下:
ORG 0000H
Hex EQU 40H
;內(nèi)部Hex送數(shù)據(jù)地址定義
Asc EQU 50H;查表后數(shù)據(jù)儲存地址定義
LJMP MAIN
ORG 0030H MAIN:
MOV R2,#16
MOV DPTR,#TABLE
MOV R0,#Hex
編者:方園
MOV R1,#Asc
MOV SP,#2FH
LCALL FUZHI;送值函數(shù)
LCALL CHABIAO;查表函數(shù)
SJMP $
ORG 1000H;查表子程序 CHABIAO:
PUSH 00H
PUSH 01H
PUSH 02H LOOP1:
MOV A,@R0
ADD A,#20H
MOVC A,@A+PC
MOV @R1,A
INC R0
INC R1
DJNZ R2,LOOP1
POP 02H
POP 01H
POP 00H
RET
;R0送值子程序 FUZHI:
PUSH 00H
PUSH 01H
PUSH 02H
MOV A,#0 LOOP2:
MOV @R0,A
INC R0
INC A
DJNZ R2,LOOP2
POP 02H
POP 01H
POP 00H
RET
編者:方園
TABLE:
DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,41H,42H,43H,44H,45H,46H
END
4.十進(jìn)制數(shù)1-100累加運(yùn)算
《單片機(jī)原理及應(yīng)用實(shí)驗(yàn)教程》(第2版)“第2章 實(shí)驗(yàn)5”(P30)。編寫程序,實(shí)現(xiàn)以下功能:
【功能1】產(chǎn)生十進(jìn)制數(shù)1~100,并存放在片外RAM中以1000H為首地址的Deci數(shù)組中。【功能2】對Deci數(shù)組元素進(jìn)行累加運(yùn)算,并將累加和存入內(nèi)部RAM中60H(存累加和低位)和61H(存累加和高位)單元。代碼如下: 方法一:
ORG 0000H
LJMP MAIN
ORG 0030H MAIN:
MOV R7,#100
MOV DPTR,#1000H
MOV SP,#20H
LCALL STEP1
LCALL STEP2
SJMP $
ORG 2000H
STEP1: PUSH 07H
PUSH DPH
PUSH DPL
MOV A,#0
MOV R3,#0 LOOP1: INC A
DA A
XCH A,R3
ADDC A,#0
MOVX @DPTR,A
INC DPTR
XCH A,R3
MOVX @DPTR,A
INC DPTR
DJNZ R7,LOOP1
POP DPL
編者:方園
POP DPH
POP 07H
RET
STEP2: PUSH 07H
PUSH DPH
PUSH DPL
MOV 60H,#0
MOV 61H,#0
MOV R3,#0
LOOP2: INC DPTR
MOVX A,@DPTR
ADD A,60H
DA A
MOV 60H,A
CLR A
ADDC A,61H
DA A
MOV 61H,A
INC DPTR
DJNZ R7,LOOP2
MOV A,#1
ADD A,61H
DA A
MOV 61H,A
POP DPL
POP DPH
POP 07H
RET
END
方法二:
ORG 0000H
LJMP MAIN
ORG 0030H MAIN:
MOV R7,#100
MOV DPTR,#1000H
MOV SP,#20H
編者:方園
LCALL STEP1
LCALL STEP2
SJMP $
ORG 2000H
;送值子函數(shù)
STEP1: PUSH 07H
PUSH DPH
PUSH DPL
MOV A,#0 LOOP1: INC A
DA A
MOVX @DPTR,A
INC DPTR
DJNZ R7,LOOP1
CLR A
ADDC A,#0
MOVX @DPTR,A
POP DPL
POP DPH
POP 07H
RET
;累加子函數(shù)
STEP2: PUSH 07H
PUSH DPH
PUSH DPL
MOV 60H,#0
MOV 61H,#0
LOOP2:
MOVX A,@DPTR
ADD A,60H
DA A
MOV 60H,A
CLR A
ADDC A,61H
DA A
MOV 61H,A
INC DPTR
DJNZ R7,LOOP2
MOVX A,@DPTR
ADD A,61H
DA A
編者:方園
MOV 61H,A POP DPL POP DPH POP 07H RET
END
5.DPTR指針應(yīng)用
《單片機(jī)原理及應(yīng)用實(shí)驗(yàn)教程》(第2版)“第2章 實(shí)驗(yàn)6”(P31)。編寫程序,實(shí)現(xiàn)以下功能:
【功能1】產(chǎn)生十進(jìn)制數(shù)組Deci(1~99),并存放在片內(nèi)RAM中,Deci數(shù)組首地址為08H?!竟δ?】將Deci數(shù)組中的偶數(shù)元素全部送入外部RAM偶數(shù)區(qū),首地址為2000H;將Deci數(shù)組中的奇數(shù)元素全部送入外部RAM奇數(shù)區(qū),首地址為3000H;分別統(tǒng)計(jì)外部RAM偶數(shù)區(qū)和奇數(shù)區(qū)元素個(gè)數(shù)。代碼如下:
ORG 0000H
LJMP MAIN
ORG 0030H MAIN:
MOV SP,#70H
MOV R7,#99
MOV R0,#08H
MOV R5,#0
MOV R6,#0
LCALL STEP1
LCALL STEP2
SJMP $
STEP1: PUSH 00H
PUSH 07H
MOV A,#1 LOOP1: DA A
MOV @R0,A
INC R0
INC A
DJNZ R7,LOOP1
POP 07H
POP 00H
RET
編者:方園
STEP2: MOV DPTR,#2000H
PUSH DPL
PUSH DPH
MOV DPTR,#3000H
MOV R3,DPH
MOV R4,DPL LP1: MOV A,@R0
MOV R2,A
JNB ACC.0,LOOP2
SJMP LOOP3
LOOP2: POP DPH
POP DPL
MOVX @DPTR,A
MOV A,R5
ADD A,#1
DA A
MOV R5,A
INC DPTR
PUSH DPL
PUSH DPH
SJMP NEXT
LOOP3: MOV DPH,R3
MOV DPL,R4
MOVX @DPTR,A
MOV A,R6
ADD A,#1
DA A
MOV R6,A
INC DPTR
MOV R3,DPH
MOV R4,DPL
SJMP NEXT
NEXT:
INC R0
DJNZ R7,LP1
POP DPH
POP DPL
RET
END
編者:方園
6.定時(shí)器應(yīng)用實(shí)驗(yàn)
DBUF EQU 30H ORG 0000H STRT: LJMP MAIN ORG 000BH LJMP PTF00 ORG 0030H MAIN: MOV DPTR,#5FFFH MOV A,#0DCH MOVX @DPTR,A MOV R5,#20 LP: MOVX A,@DPTR JNB ACC.7,LP MOV A,#00H MOVX @DPTR,A MOV A,#34H MOVX @DPTR,A MOV SP,#60H MOV R0,#39H MOV R7,#06H ML1: MOV @R0,#00H INC R0 DJNZ R7,ML1 MOV TMOD,#01H MOV TL0,#0B0H MOV TH0,#3CH SETB TR0 MOV IE,#82H MOV 40H,#10H ML0: LCALL DIR LJMP ML0 PTF00: PUSH PSW PUSH ACC SETB PSW.3 MOV TL0,#0B0H MOV TH0,#3CH
編者:方園
DJNZ R5,PTFY MOV R5,#20
MOV A,40H DEC A MOV 40H,A JNZ PTFY MOV 40H,#10H MOV R0,#39H MOV R7,#6 PTFX: MOV A,@R0 ADD A,#1 DA A MOV @R0,A CJNE A,#0AH,$+3 JC PTFY MOV @R0,#0 INC R0 DJNZ R7,PTFX PTFY: POP ACC POP PSW RETI DIR:
MOV R3,#06H MOV A,#92H MOV DPTR,#5FFFH MOVX @DPTR,A MOV R1,#39H TY11: MOV A,@R1 MOV DPTR,#CODE1 MOVC A,@A+DPTR MOV DPTR,#5FFFH MOVX @DPTR,A
INC R1 DJNZ R3,TY11 RET
CODE1: DB 0C0H,0F9H,0A4H,0B0H,99H DB 92H,82H,0F8H,80H,90H,88H
編者:方園
DB 83H,0C6H,0A1H,86H,8EH,8CH DB 0C1H,89H,0C7H,0BFH,91H DB 00H,0FFH END
7.廣告燈實(shí)驗(yàn)
ORG 0000H LJMP MAIN ORG 000BH LJMP DELAY ORG 0030H MAIN: MOV DPTR,#TAB MOV R5,#71H MOV R2,#00H MOV R6,#20 MOV TMOD,#01H MOV TL0,#0B0H MOV TH0,#3CH SETB TR0 MOV IE,#82H SJMP $ DELAY: MOV TL0,#0B0H MOV TH0,#2CH
DJNZ R6,LP ACALL STEP MOV R6,#20 DJNZ R5,LP MOV R5,#71H
LP: RETI
STEP: LOOP: MOV A,R2 MOVC A,@A+DPTR MOV P1,A INC R2 DEC R5
編者:方園
RET
TAB:DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,7FH
DB 0FFH,7FH,0BFH,0DFH,0EFH,0F7H,0FBH,0FDH
DB 0FEH,0FFH,0FEH,0FCH,0F8H,0F0H,0E0H,0C0H
DB 80H,00H,80H,0C0H,0E0H,0F0H,0F8H,0FCH
DB 0FEH,0FFH,7FH,3FH,1FH,0FH,07H,03H
DB 01H,00H,01H,03H,07H,0FH,1FH,3FH
DB 7FH,0FFH,7EH,3CH,18H,00H,18H,3CH
DB 7EH,0FFH,0FEH,0FCH,0FCH,0F9H,0F3H,0E7H
DB 0CFH,9FH,3FH,7FH,0FFH,7FH,3FH,9FH
DB 0CFH,0E7H,0F3H,0F9H,0FCH,0FEH,0FFH
DB 0FEH,0FCH,0F8H,0F0H,0E0H,0C0H,80H,00H
DB 80H,40H,20H,10H,08H,04H,02H,01H,00H
DB 01H,02H,04H,08H,10H,20H,40H,80H,00H
DB 80H,0C0H,0E0H,0F0H,0F8H,0FCH,0FEH,0FFH END


文檔為doc格式
聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。
域代碼編寫總結(jié)
word域代碼詳解 域的基本操作 Ctrl+F9 插入域 Ctrl+Shift+F9把域轉(zhuǎn)為純文本 Shift+F9 切換為域代碼顯示 十個(gè)特殊指令(域開關(guān)) 1、數(shù)組a 2、括號b 3、平移d 4、分式f 5......
DSP-C代碼優(yōu)化總結(jié)
代碼優(yōu)化總結(jié) 在優(yōu)化一段代碼之前,首先要找出這段程序中最消耗時(shí)間的那一段程序,對最耗時(shí)程序段的優(yōu)化會帶來很大的優(yōu)化效果收益。 一般而言,這個(gè)最耗時(shí)的程序一般位于一個(gè)循......
數(shù)據(jù)庫上機(jī)實(shí)驗(yàn)總結(jié)(含代碼)
實(shí)驗(yàn)一 (1)無條件單表查詢 select sname NAME,'year of birth:' BIRTH,2004-sage BIRTHDAY,LOWER(sdept) DEPARTMENT FROM student; (2)有條件單表查詢 SELECT sname,sdept,sage......
Excel VBA常用代碼總結(jié)1(精選合集)
Excel VBA常用代碼總結(jié)1? 改變背景色 Range("A1").Interior.ColorIndex = xlNone ColorIndex一覽 ? ? 改變文字顏色 獲取單元格 Range("A1").Font.ColorIndex = 1 Cells(1, 2)......
部門代碼
部門代碼 總經(jīng)理:GMD 行政人事部:AD 技術(shù)部:TD 發(fā)展部:RDD 宣傳部:PD 策劃部:SD 工程部:ED 造價(jià)部:EC 財(cái)務(wù)部:ACD 投融資部:FD 戰(zhàn)略計(jì)劃部:SPD 招標(biāo)合約部:BCD 審計(jì)部:ADD 招商部:MD 研......
代碼檢查
代碼檢查 摘要:代碼檢查是白盒測試的一種靜態(tài)測試方法,是眾多軟件測試方法中發(fā)現(xiàn)軟件缺陷最有效的方法之一。本文結(jié)合國內(nèi)外學(xué)者在相關(guān)領(lǐng)域的研究情況,介紹代碼檢查相關(guān)的基本......
代碼注釋格式(合集)
////////////////////////////////////////////////////////////////////////// //函數(shù)名稱: WriteFile //函數(shù)功能: 向加密鎖創(chuàng)建文件,并且向文件中寫入數(shù)據(jù),注意寫入的數(shù)......
代碼工作計(jì)劃(精選合集)
2015年個(gè)人年度工作計(jì)劃 自從2014年年初進(jìn)入公司工作以來,在公司領(lǐng)導(dǎo)的關(guān)懷和指導(dǎo)下,在公司部分同事的大力支持下,我在工作和生活上都學(xué)到了很多。 2015年公司將全面壯大,各項(xiàng)......