複製鏈接
請複製以下鏈接發送給好友

二一十進制編碼

鎖定
就是BCD碼,每四位表示一個十進制,逢二十一進一。主要用在89C5l系列單片機。
中文名
二一十進制編碼
解    釋
就是BCD碼
特    點
每四位表示一個十進制
用    途
主要用在89C5l系列單片機

目錄

二一十進制編碼基本信息

89C5l系列單片機歷經20多年的發展,仍然長盛不衰,在工業控制及儀器儀表中得到廣泛應用;用於89C5l單片機軟件開發的KeilC51編譯系統也日臻成熟,成為89C5l系列單片機軟件開發的優先選擇。在單片機系統開發中,經常遇到整數二十進制轉換的問題,一般可以採用C語言中的標準函數sprintf()來實現;但由於該函數是通用格式輸出函數,代碼量大(超過lKB),用於整數二一十進制轉換的運算時間過妊(在12MHz晶振頻率下超過lms),這在計算密集(computationintensive)的應用中是一個影響系統性能的重要因素。在低功耗系統設計中,也必須考慮因為運算時間長而增加系統耗電量的問題。經常有網發詢問如何高效地實現這種轉換。筆者通過對二進制整數的深入分析,巧妙運用89C5l單片機的特殊單字節乘除指令,成功地實現了整數二一十進制轉換的快速算法。本文將詳細介紹快速算法,給出頗具實用性的優化代碼,並與使用sprintf()函數的實現及傳統的彙編代碼實現進行性能比較。

二一十進制編碼算法

要實現快速運算,很自然地想到教科書中提到的雙字節二進制整數轉換成3字節BCD碼整數的子程序。其採用的算法是,依次將整數的每位左移至CY位,再把CY位左移至一個3字節隊列中,並進行十進制調整。通過16次移位完成運算,結果為壓縮格式的3字節BCD編碼。
彙編子程序如下: