• 
    

    
    

      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條
      星座| 吉木萨尔县| 湘西| 关岭| 甘孜| 峨眉山市| 吕梁市| 宁城县| 河源市| 宁安市| 望奎县| 双辽市| 延庆县| 安阳市| 新竹县| 四子王旗| 延川县| 恭城| 婺源县| 库伦旗| 明溪县| 陇西县| 西乌| 太谷县| 岢岚县| 金塔县| 奇台县| 佳木斯市| 天柱县| 资阳市| 荣成市| 诸暨市| 满城县| 札达县| 龙口市| 宜君县| 岚皋县| 革吉县| 赤壁市| 平昌县| 巴彦县|