最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

【深圳 IO 攻略】第 1 關(guān):安全攝像頭

2022-05-31 14:34 作者:ココアお姉ちゃん  | 我要投稿

本文首發(fā)于 B 站《深圳 IO》文集(https://www.bilibili.com/read/readlist/rl569860)。原創(chuàng)不易,轉(zhuǎn)載請(qǐng)注明出處。

關(guān)卡展示

這一關(guān)是新手入門(mén)關(guān)卡。在這一關(guān)里我們需要掌握兩條基本指令:mov 指令和 slp 指令。

說(shuō)明:指令中的 I 表示一個(gè)整數(shù)(integer),R 表示一個(gè)寄存器(register),P 表示一個(gè)端口(port)。這點(diǎn)以后不再重復(fù)說(shuō)明。

mov 指令用法:mov I/R1/P1 R2/P2,將【整數(shù)/寄存器1中的數(shù)/從端口1獲得的數(shù)】送入【寄存器2/端口2】中。

slp 指令用法:slp I/R/P,令 cpu 休眠一定的時(shí)鐘周期,休眠的周期數(shù)等于【指定的整數(shù)/寄存器中的數(shù)/從端口獲得的數(shù)】。

我們現(xiàn)在觀察下方的波形圖,不難發(fā)現(xiàn),【活動(dòng)狀態(tài)】端口需要循環(huán)輸出?6 秒的?0?信號(hào)和?6 秒的 100 信號(hào)?!揪W(wǎng)絡(luò)】端口稍微復(fù)雜一點(diǎn),循環(huán)節(jié)為:0×4s,100×2s,0×1s,100×1s。初始的線(xiàn)路板里,【活動(dòng)狀態(tài)】端口的代碼已經(jīng)為我們寫(xiě)好了,我們來(lái)分析一下:

所以,對(duì)于【網(wǎng)絡(luò)】端口,我們已經(jīng)找到了循環(huán)節(jié),所以只需要照葫蘆畫(huà)瓢寫(xiě)就 OK 了。我們從右側(cè)的元件面板上拖入一個(gè)【MC4000】元件,然后將它的 p0 口與【網(wǎng)絡(luò)】端口連線(xiàn),并寫(xiě)出如下圖所示的代碼:

點(diǎn)擊左下角的【模擬】按鈕,運(yùn)行程序,稍等片刻,便會(huì)彈出過(guò)關(guān)畫(huà)面。游戲會(huì)從成本、電量及代碼行數(shù)三個(gè)維度評(píng)判你的設(shè)計(jì)方案的優(yōu)秀程度。

優(yōu)化電量

這里我們需要提一個(gè)隱藏特性:簡(jiǎn)單 I/O 口(就是只能和芯片的 p0/p1 相連接的端口)未賦值時(shí)擁有初始值 0。那么我們其實(shí)沒(méi)有必要在第一條指令就寫(xiě) mov 0 p0,而是先寫(xiě) slp 指令,將 mov 0 p0 這樣的指令放到循環(huán)的最后。這樣的話(huà),兩塊芯片在整個(gè)周期里可以各省掉一格給 p0 口清零的電量,共計(jì)可以省掉 2 格電量。

最終的三項(xiàng)指標(biāo)為:成本 ¥6,電量 58(比歷史最佳減少了 2 格電),代碼行數(shù) 12

優(yōu)化代碼行數(shù)

這里要引入一條可以大幅減少代碼行數(shù)的指令:gen 指令。

gen 指令用法:gen P I1/R1/P1 I2/R2/P2

這一條指令的耗電量是 4 個(gè)單位,等價(jià)于以下 4 條指令:

另外,還有一個(gè)新特性需要說(shuō)明一下:在一行代碼前加上 @ 注解,可以確保對(duì)應(yīng)的代碼只在最開(kāi)始執(zhí)行一次,而不會(huì)被循環(huán)執(zhí)行。

因此,我們可以將以上代碼大幅度減少為下面這樣:

最終的三項(xiàng)指標(biāo)為:成本 ¥6,電量 58,代碼行數(shù) 5(比歷史最佳減少了 7?行代碼)

眾所周知,gen 指令生成的是以 100 起始的方波(100→0→100→0→……),但是這道題要生成的是以 0 起始的方波(0→100→0→100→……),我們?nèi)绾尾拍苡?gen 指令簡(jiǎn)化呢?其實(shí)我們只需要把第一行的 slp 挪到最后一行,然后在第一行加上只執(zhí)行一次的 @slp 指令,然后就能用 gen 簡(jiǎn)化了。如下所示:

等價(jià)于

等價(jià)于

控制【網(wǎng)絡(luò)】端口的芯片同理。此時(shí)我們的代碼行數(shù)縮減到了 5 行。

進(jìn)一步優(yōu)化代碼行數(shù)

要生成以 0 起始的方波,在代碼開(kāi)頭加入只執(zhí)行一次的睡眠指令是一個(gè)辦法,還有一個(gè)辦法就是將生成的 100 起始的方波用【非門(mén)】反轉(zhuǎn)一下。這樣就不需要額外的睡眠指令了。我們現(xiàn)在從元件面板上拖入兩個(gè)【LC70G04】元件,這個(gè)元件的作用是將輸入端(大頭端)的非 0 數(shù)據(jù)轉(zhuǎn)為 0,或?qū)⑤斎攵说?0 數(shù)據(jù)轉(zhuǎn)為 100 傳給輸出端(小頭端)。注意兩端的方向不能接反。

接完了以后,我們將兩塊芯片中多余的 @slp 指令刪除。注意第二塊芯片的 gen 指令里的時(shí)間要改掉,第一個(gè)立即數(shù)寫(xiě) 0 信號(hào)的時(shí)長(zhǎng),第二個(gè)立即數(shù)寫(xiě) 100 信號(hào)的時(shí)長(zhǎng),和之前正好反過(guò)來(lái)。此時(shí),因?yàn)榧恿藘蓚€(gè)非門(mén)元件,所以我們的成本提高到了 8 元,但代碼行數(shù)減少到了 3 行。

最終的三項(xiàng)指標(biāo)為:成本 ¥8,電量 60,代碼行數(shù) 3(比歷史最佳減少了 2 行代碼)

進(jìn)一步優(yōu)化電量

在第三部分【優(yōu)化代碼行數(shù)】的基礎(chǔ)上,將第一塊芯片中的代碼改為五條帶 @ 前綴的指令,可以將電量極致優(yōu)化到 57。如下圖所示,@ slp 6,@ gen p0 6 6,@ gen p0 6 6,@ gen p0 6 6 后,只剩下了最后 6 秒的 100 信號(hào),此時(shí)只需要一條 @ mov 100 p0 即可,無(wú)需執(zhí)行休眠 6 秒的指令。

最終的三項(xiàng)指標(biāo)為:成本 ¥6,電量 57(比歷史最佳減少了 1 格電),代碼行數(shù) 8


【深圳 IO 攻略】第 1 關(guān):安全攝像頭的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
家居| 丰县| 崇明县| 巴东县| 和顺县| 化德县| 洞口县| 施秉县| 兴隆县| 宾阳县| 昭通市| 高碑店市| 永泰县| 绥中县| 乌鲁木齐市| 阿瓦提县| 平凉市| 台南市| 奇台县| 库伦旗| 鹤山市| 社旗县| 南靖县| 大荔县| 正蓝旗| 都匀市| 酒泉市| 偃师市| 金华市| 石门县| 罗甸县| 景谷| 临海市| 广河县| 山西省| 孝义市| 包头市| 平阳县| 鹿泉市| 民勤县| 招远市|