mengkonversi hex ke bcd di c

Salam

Anda tidak menyebutkan apa yang panjang heksa 8 bit, 16 bit ... etc

Ok di sini adalah metode sederhana untuk mengkonversi hex (8bit) untuk bcd

Salah satu metode pembatasan yang Menuju vaild angka 0-99 saja.

misalnya jika Anda ingin mengkonversi ke 99 bcd

1 - membagi 99 dengan 10
2 - menempatkan hasil di gigit tinggi dari variabel hasil
3 - meletakkan pengingat dalam nibble rendah dari variabel hasil

Metode ini sangat mudah diterapkan di C seperti ini

Kode:

unsigned char hex2bcd (unsigned char x)

(

unsigned char y;

y = (x / 10) <<4;

y = y | (x% 10);

return (y);

)
 
Quote:

Dari fmayr (at) electronic.tu-graz.ac.at Thu Feb 6 10:24:30 1997

Tanggal: Wed, 05 Feb 1997 15:36:00 0100

Dari: Friedrich Mayr <fmayr(at)electronic.tu-graz.ac.at>

Kepada: 8051code (at) keil.com

Perihal: Fast PANJANG untuk konversi BCDFungsi ini ditulis di dalam lingkungan Keil C51

oleh Dr Roehrer (Inst. f. Elektronik, TU-Graz) dan aku

untuk dipanggil dari C - Program sebagai: "bin2bcd void (void)"Variabel global berikut (harus terletak di

RAM internal dari prosesor, "data" atau "idata") adalah

digunakan baik untuk melewatkan argumen (yang "panjang" nilai) ke

fungsi, dan juga untuk menerima hasil (6 digit):serikat

(

unsigned char buf [6];

lama di;

) Idata U_b;Tujuan dari kode adalah untuk mengkonversi nilai lama yang ditandatangani

untuk BCD - kode dengan tanda terkemuka jika diperlukan.
Melebihi nilai

rentang 6 (-: 5) Digit semua harus ditampilkan oleh '-'.

Penggunaan memori yang sangat penting karena tidak ada RAM eksternal

hadir dalam sistem, jadi hanya Accu, B, R1, R2, R3, R4

digunakan selain dari digit-(dan argumen-) buffer "U_b".Trik diterapkan dalam fungsi adalah dengan menggunakan

"kecil" (menggigit dengan menggigit) divisi dan luas

penggunaan '51 - opcodes XCHD dan SWAP.

Hal ini mengakibatkan eksekusi yang sangat cepat.

Fungsi dapat dengan mudah dapat dimodifikasi misalnya

ke waktu-perhitungan atau diperpanjang ke penuh "lama"

jangkauan.
 

Welcome to EDABoard.com

Sponsor

Back
Top