• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    單片機(jī)多字節(jié)數(shù)值最小組篩選的匯編語言算法

    2020-04-22 04:07:50范興文
    遼寧高職學(xué)報(bào) 2020年2期
    關(guān)鍵詞:數(shù)組流程圖低位

    范興文,張 姝

    (阜新高等專科學(xué)校,遼寧 阜新 123000)

    一、問題描述

    單片機(jī)應(yīng)用時(shí)會(huì)遇到判別一組數(shù)值中的最小數(shù)值所在組的問題,例如制作搶答器時(shí)單片機(jī)收到并儲(chǔ)存各組所用的搶答反應(yīng)時(shí)間,將其中用時(shí)最短的組篩選出來,以便顯示搶到答題權(quán)的組及更改該組得分。受限于單片機(jī)存儲(chǔ)單元的位數(shù),當(dāng)搶答反應(yīng)時(shí)間較長時(shí)每組搶答反應(yīng)時(shí)間需要存儲(chǔ)于多個(gè)單元。例如單片機(jī)頻率為12 MHz時(shí),采用定時(shí)器T0工作在方式2時(shí),TH0和TL0能夠存儲(chǔ)的最大時(shí)間約為0.065s[1],即搶答反應(yīng)時(shí)間不能超過0.065 s,否則時(shí)間無法記錄。若采用一個(gè)存儲(chǔ)單元記錄搶答反應(yīng)時(shí)間,TH0溢出中斷時(shí)使時(shí)間存儲(chǔ)器加一,則能夠記錄的最長時(shí)間為16.8s,某些情況下不夠用。若采用兩個(gè)存儲(chǔ)單元記錄高位時(shí)間和低位時(shí)間,TH0溢出中斷時(shí)使低位時(shí)間存儲(chǔ)器加一,低位時(shí)間存儲(chǔ)器溢出時(shí)使高位時(shí)間存儲(chǔ)器加一,這樣允許的最長搶答反應(yīng)時(shí)間為為4 295 s≈71.6 min[2];若比較高位時(shí)間存儲(chǔ)器、低位時(shí)間存儲(chǔ)器和TH0三個(gè)單元的數(shù)值,時(shí)間分辨精度能達(dá)到0.000256 s。晶振的頻率誤差該精度已足夠。接下來的問題是找出各組中用時(shí)最短的那組,相當(dāng)于每組提供一個(gè)3字節(jié)數(shù)值,篩選出數(shù)組最小的組別。

    二、算法思路

    規(guī)劃好數(shù)值存儲(chǔ)單元,用存儲(chǔ)地址代表組別,利用單片機(jī)指令篩選出數(shù)值最小組的存儲(chǔ)地址。

    數(shù)值存儲(chǔ)單元設(shè)計(jì)如下:將各組的高位時(shí)間數(shù)值順序存放,各組低位時(shí)間數(shù)值順序存放,各組TH0時(shí)間數(shù)值順序存放,且使“同組的高位時(shí)間數(shù)值存儲(chǔ)地址+10=低位時(shí)間數(shù)值存儲(chǔ)地址”、“低位時(shí)間數(shù)值存儲(chǔ)地址+10=TH0時(shí)間數(shù)值存儲(chǔ)地址”。例如,共有6組,將各組高位時(shí)間數(shù)值順序存放于51H~56H單元中,各組高位時(shí)間數(shù)值順序存放于5BH~60H單元中,各組 TH0數(shù)值順序存放于65H~6AH單元中。這樣第一組的時(shí)間數(shù)值從高位至低位存儲(chǔ)于51H、5BH、65H中。

    將較大數(shù)的低一級(jí)數(shù)值設(shè)置為最大,確保低一級(jí)數(shù)值比較時(shí)高一級(jí)數(shù)值的較小者有效。

    記錄最小數(shù)值的相等次數(shù)和相等數(shù)值的最小地址,只有相等次數(shù)不為零時(shí)才進(jìn)行下一級(jí)比較,且從相等數(shù)值的最小地址所在組開始比較。

    單片機(jī)指令采用CJNE指令,利用CY的數(shù)值鑒別兩數(shù)值的大小關(guān)系[3]。利用Rn的相對(duì)尋址功能實(shí)現(xiàn)循環(huán)算法,優(yōu)化程序結(jié)構(gòu)。

    三、程序流程圖

    (一)最高位數(shù)值比較程序流程圖

    最高位數(shù)值比較程序流程見圖1。

    (二)數(shù)值比較子程序流程圖

    數(shù)值比較子程序流程圖見圖2。

    (三)低位數(shù)值比較程序流程圖

    低位數(shù)值比較程序流程圖見圖3。

    圖1 最高位數(shù)值比較程序流程圖

    圖2 數(shù)值比較子程序流程圖

    四、部分程序

    (一)比較子程序

    bijiao:

    d0:mov a,@r0

    cjne a,31h,d1[4]

    inc r0[5]

    inc 70h ;記錄相等次數(shù)

    ljmp d11

    d1:jb cy,d2

    mov a,r0

    add a,#10

    mov r1,a[6]

    mov@r1,#0ffh;該組下級(jí)數(shù)值設(shè)為最大

    inc r0

    ljmp d11

    d2:

    clr cy[7]

    mov 70h,#0 ;相等次數(shù)歸零

    mov a,32h

    add a,#10

    mov r1,a

    mov@r1,#0ffh;該組下級(jí)數(shù)值設(shè)為最大

    mov 31h,@r0 ;最小數(shù)存31H

    mov 32h,r0;32H內(nèi)記錄最小數(shù)開始地址,也是相等開始地址

    inc r0[8]

    ljmp d11

    d11:ret

    (二)低位數(shù)值比較程序

    ji2:

    mov a,32h

    mov r7,32h

    add a,#10

    mov 32h,a

    mov r0,a[9]

    mov 31h,@r0

    inc r0

    mov 70h,#0

    xh2:lcall bijiao

    inc r7【10】

    cjne r7,#56h,xh2

    mov a,32h

    subb a,#10

    mov 32h,a

    mov a,70h

    cjne a,#0,ji3

    ljmp$

    五、以雙字節(jié)數(shù)值為例的運(yùn)算結(jié)果示例(一)高字節(jié)數(shù)值有3組相同且最小

    運(yùn)算數(shù)組見表1。

    表 1 運(yùn)算示例1數(shù)組

    從數(shù)組數(shù)值可以看出,第二組、第三組和第五組的高位數(shù)值最小且相同,這三組的低位數(shù)值第二組小,因此數(shù)值最小的組是第二組,該組高位數(shù)值存儲(chǔ)地址為52H。

    程序運(yùn)行結(jié)果數(shù)組賦值如圖4所示、運(yùn)算結(jié)果如圖5所示。

    表4 數(shù)組賦值

    圖5 運(yùn)算結(jié)果

    從程序運(yùn)行結(jié)果看最小組高位數(shù)值存儲(chǔ)地址存放單元32H存放的數(shù)值是52H,程序成功地篩選出了最小組。

    (二)高字節(jié)數(shù)值有多個(gè)相同情況

    數(shù)組見表2。

    表2 運(yùn)算示例2數(shù)組

    從數(shù)組數(shù)值可以看出,第一組和第二組的高位數(shù)值相同為19H,第四組和第六組的高位數(shù)值相同為12H,最小組應(yīng)為第四組和第六組,二者低位數(shù)值是第四組25H和第六組20H,因此最小數(shù)值應(yīng)為第六組,其高位字節(jié)存儲(chǔ)地址為56H。

    程序運(yùn)行結(jié)果,數(shù)組賦值如圖6所示,運(yùn)算結(jié)果如圖7所示。

    圖6 數(shù)組賦值

    圖7 運(yùn)算結(jié)果

    從程序運(yùn)行結(jié)果看,最小組高位數(shù)值存儲(chǔ)地址存放單元32H存放的數(shù)值是56H,程序成功地篩選出了最小組。

    四、結(jié)語

    本文采用合理的編程思路提出了篩選多字節(jié)數(shù)值最小組別的算法,經(jīng)過實(shí)際運(yùn)行驗(yàn)證了該算法在雙字節(jié)數(shù)組的最小組別篩選應(yīng)用的可行性。按照本文提出的算法規(guī)律,可以方便地將該算法推廣應(yīng)用到多組、多字節(jié)數(shù)值的最小組別篩選工作中去,也可以利用本文的方法解決16位單片機(jī)的同類問題。

    猜你喜歡
    數(shù)組流程圖低位
    JAVA稀疏矩陣算法
    預(yù)計(jì)2020年油價(jià)將低位震蕩
    JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
    棗樹低位截干萌枝嫁接新技術(shù)
    河北果樹(2020年2期)2020-05-25 06:58:42
    利好不足下半年尿素市場仍將低位震蕩
    上半年磷復(fù)肥市場低位運(yùn)行
    專利申請(qǐng)審批流程圖
    河南科技(2016年8期)2016-09-03 08:08:22
    專利申請(qǐng)審批流程圖
    河南科技(2016年6期)2016-08-13 08:18:29
    尋找勾股數(shù)組的歷程
    寧??h村級(jí)權(quán)力清單36條
    郯城县| 三穗县| 辽源市| 清徐县| 长汀县| 蒲城县| 青浦区| 海原县| 治多县| 克东县| 日喀则市| 樟树市| 台湾省| 铅山县| 林州市| 新巴尔虎左旗| 建平县| 东乡| 新绛县| 长春市| 云浮市| 齐河县| 新乡县| 剑川县| 墨江| 郧西县| 临沧市| 民丰县| 开远市| 东乡族自治县| 咸阳市| 平邑县| 宾川县| 达尔| 城固县| 清水河县| 高邑县| 漳州市| 浦东新区| 巴彦淖尔市| 天津市|