Đương nhiên là bạn phải tính toán để có giá trị 10-bit mới rồi mới ghi vào các bit và thanh ghi tương ứng. Tất nhiên viết bằng hợp ngữ thì sẽ khó khăn hơn so với viết bằng các ngôn ngữ cấp cao như C, Pascal hay Basic.
Với mục đích học tập, bạn có thể chấp nhận một công thức gần đúng: 2^10 gần bằng 1000. Như vậy 100% duty tương ứng với 1000, có nghĩa là 1% tương ứng với 10. Do đó, mỗi khi thay đổi duty cycle (tính bằng %), bạn chỉ cần nhân nó với 10 để có giá trị 10-bit cần thiết. Trong hợp ngữ, nhân với 10 cũng khá đơn giản, chính là lấy số đó nhân 8 (dịch trái 3 bit) cộng với số đó nhân 2 (dịch trái 1 bit). Chỉ cần chú ý vấn đề tràn số khi dịch trái 3 bit (vì số của bạn chỉ <= 100 nên dịch trái 1 bit sẽ không bao giờ bị tràn).
Thân,
|