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

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

【深圳 IO 攻略】第 30 關(guān):航空雞尾酒調(diào)酒器

2022-06-12 16:38 作者:ココアお姉ちゃん  | 我要投稿

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

關(guān)卡展示

本關(guān)的【小鍵盤】會(huì)不定期地給出一個(gè) 1~7?的按鍵輸入,我們需要根據(jù)不同的輸入數(shù)字調(diào)配出不同的飲料。這些飲料的配方請(qǐng)參考數(shù)據(jù)手冊(cè):

小鍵盤數(shù)字和飲料種類的對(duì)應(yīng)關(guān)系如下:

  1. 子彈杯伏特加(伏特加 × 1.5 盎司)

  2. 檸檬糖(伏特加 × 3 盎司,檸檬配料 × 1 盎司)

  3. 大都會(huì)(伏特加 × 2 盎司,萊姆配料 × 1 盎司,蔓越莓配料 × 1 盎司)

  4. 寇德角(伏特加 × 2 盎司,蔓越莓配料 × 2 盎司)

  5. 伏特加馬天尼(伏特加 × 3 盎司,干苦艾酒 × 1 盎司)

  6. 螺絲錐子(杜松子酒 × 3 盎司,萊姆配料 × 1 盎司)

  7. 杜松子馬天尼(杜松子酒 × 3 盎司,干苦艾酒 × 1 盎司)

對(duì)每種原材料來說,其 100 信號(hào)的持續(xù)時(shí)間是跟需求量相關(guān)的(0.5 盎司/秒)。

這道題很明顯是個(gè)【打表】題,每一個(gè)數(shù)字都對(duì)應(yīng)著一個(gè)固定的“原材料波形時(shí)序圖”。我們使用 DX-300 甚至可以控制三個(gè) p 口的時(shí)序。這道題需要控制六種原材料,也就是六個(gè) p 口的時(shí)序,所以需要使用兩塊 DX-300。我們先把兩塊 DX-300 接到電路圖上。

上方的 DX-300 控制【伏特加】、【杜松子】和【檸檬】的時(shí)序,下方的 DX-300 控制【萊姆】、【蔓越莓】和【苦艾】的時(shí)序。我們先看每種飲料和上方的 DX-300 建立出的時(shí)序映射關(guān)系是怎樣的:

  1. 100 × 3s(伏特加 1.5 盎司)

  2. 101 × 2s +?100 × 4s(伏特加 3 盎司,檸檬 1 盎司。伏特加和檸檬同時(shí)在上方出現(xiàn),所以該時(shí)序由兩部分組成。等同于【伏特加 + 檸檬】1 盎司,伏特加 2 盎司)

  3. 100 × 4s(伏特加 2 盎司)

  4. 100 × 4s(伏特加 2 盎司)

  5. 100 × 6s(伏特加 3 盎司)

  6. 10 × 6s(杜松子酒 3 盎司)

  7. 10 × 6s(杜松子酒 3 盎司)

再看和下方的 DX-300 建立出的時(shí)序映射關(guān)系是怎樣的:

  1. (無(wú))

  2. (無(wú))

  3. 110 × 2s(萊姆配料和蔓越莓配料各 1 盎司)

  4. 10 × 4s(蔓越莓配料 2 盎司)

  5. 1 × 2s(干苦艾酒?1 盎司)

  6. 100 × 2s(萊姆配料 1 盎司)

  7. 1 × 2s(干苦艾酒?1 盎司)

下方的時(shí)序圖簡(jiǎn)單點(diǎn),都是單一時(shí)序,甚至還有兩種飲料沒有時(shí)序。每種飲料的時(shí)序和 DX-300 的值及持續(xù)睡眠時(shí)間兩個(gè)值相關(guān),所以為了將每種飲料的這兩個(gè)數(shù)字都存儲(chǔ)下來,我們需要將小鍵盤的值乘以 2,得到一個(gè)地址,將兩個(gè)數(shù)字放置在以該地址起始的兩個(gè)連續(xù)空間內(nèi)。然后我們寫出下面這樣的代碼:

我們觀察一下這個(gè) ROM,發(fā)現(xiàn) 6、7 地址寫的是 3 號(hào)飲料的配料及持續(xù)時(shí)長(zhǎng),8、9 地址寫的是 4 號(hào)飲料的配料及持續(xù)時(shí)長(zhǎng),依此類推。所有飲料的配料及持續(xù)時(shí)長(zhǎng)都寫在飲料編號(hào) ×2 地址起始處的兩個(gè)連續(xù)空間里。

那么我們首先等待小鍵盤的輸入(slx x3),并將小鍵盤的值乘以 2,得到需要跳轉(zhuǎn)到的 ROM 地址(mov x3 acc, add acc),然后將計(jì)算好的地址值發(fā)給上方的芯片,以便后續(xù)讓上方的芯片生成上方三種原料的時(shí)序圖(mov acc x3)。此時(shí),因?yàn)榈?1、2 種飲料是不需要生成下方的時(shí)序圖的,也就是說僅當(dāng)?shù)刂分荡笥?4 時(shí)才需要生成時(shí)序圖。當(dāng)?shù)刂分荡笥?4 時(shí)(tcp acc 4),我們將 ROM?定位到該地址(+ mov acc x1),然后連續(xù)讀取原料和持續(xù)時(shí)長(zhǎng)兩個(gè)值,生成對(duì)應(yīng)的時(shí)序圖(+ mov x0 x2, + slp x0),完成后將信號(hào)清除(+ mov 0 x2)。

現(xiàn)在我們開始生成上方三種原料的時(shí)序圖,代碼如下:

這里我們接觸到了一條新指令,也是 MC 系列芯片指令集中的最后一條指令:空操作指令 nop。它的作用是:當(dāng)前機(jī)器周期內(nèi)不執(zhí)行任何實(shí)際操作。nop 指令和下面這些指令的效果是一樣的,都是不造成任何狀態(tài)變化的指令:

空操作指令,既占行數(shù),又費(fèi)電,最后還不產(chǎn)生任何效果。那么為什么我們需要這樣一條空操作指令呢?答案是為了傳輸上的同步。我們注意到,上方的 x2 口既和小鍵盤相連,又和下方芯片的 x3 口相連。由于小鍵盤同樣的數(shù)字只傳一次,所以我們希望的是從 x2 口獲得下方芯片傳來的數(shù)據(jù),而不是獲得從小鍵盤傳來的數(shù)字。因此,等待喚醒后(slx x2),我們需要執(zhí)行一次空操作(nop),讓小鍵盤的數(shù)字被下方的芯片捕獲(上方芯片 nop?時(shí),下方芯片同時(shí)執(zhí)行 mov x3 acc),接下來我們從 x2 口獲得的(mov x2 x1)就是由下方芯片傳來的地址數(shù)據(jù)了。如果沒有這條空操作指令,每次喚醒后,小鍵盤的數(shù)字會(huì)隨機(jī)被上方/下方的芯片之一接收,導(dǎo)致非預(yù)期的運(yùn)行結(jié)果。

我們注意到,第 2 種飲料是特殊的,它的時(shí)序由兩部分組成:101 × 2s +?100 × 4s。但是我們的 ROM 對(duì)于每種飲料都只能存儲(chǔ)單一的時(shí)序。所以當(dāng)獲得的地址值是 4 時(shí)(teq x1 4),我們需要在開頭額外執(zhí)行一個(gè) 101 × 2s 的時(shí)序(+ mov 101 x3, + slp 2)。剩下的部分,和下面的芯片類似,定位到 ROM 對(duì)應(yīng)的地址,生成時(shí)序后(mov x0 x3, slp x0)清除信號(hào)(mov 0 x3)。

點(diǎn)擊左下角的【模擬】,稍等片刻,便會(huì)彈出結(jié)算界面:


【深圳 IO 攻略】第 30 關(guān):航空雞尾酒調(diào)酒器的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
临猗县| 四子王旗| 东阿县| 蓬莱市| 邻水| 黄陵县| 松江区| 滨海县| 华安县| 象州县| 孟津县| 鸡东县| 离岛区| 杭锦后旗| 逊克县| 开远市| 淳化县| 南乐县| 子洲县| 河津市| 佛山市| 博野县| 荃湾区| 岢岚县| 永仁县| 安西县| 桃园市| 彝良县| 通海县| 湖北省| 盐边县| 陆良县| 景东| 永宁县| 新源县| 轮台县| 太原市| 华蓥市| 辽宁省| 高邑县| 沁源县|