就是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編碼。
彙編子程式如下: