2025-11-08 06:29:32
单片机测占空比主要靠定时器算时间差。比如用定时器开始计时,信号变高时暂停,再变低时继续计时,两次暂停的差就是高电平时间。总时间等于高电平加低电平,占空比就是高电平除以总时间。汇编程序里要初始化定时器,写好中断服务程序抓取高低电平,用MOV和ADD算比例。比如测50Hz信号,周期20毫秒,占空比25%就是5毫秒高电平。
为什么是这个答案?因为定时器精度决定测量准度。假设单片机定时器1微秒精度,测50Hz信号周期20毫秒(20,000微秒),占空比25%对应5,000微秒高电平。汇编程序里用LC0初始化定时器,TH0/T0存初值(比如65536-5000=60536),中断服务程序用TH0和TL0加1算时间差。实际算占空比时,高电平时间除以总时间(高+低)再乘100%。比如高电平5000微秒,低15000微秒,总20000微秒,5000/20000=25%。但信号抖动会影响精度,需软件滤波。汇编程序里查表转换时间到百分比,比如5000微秒对应25%,存到寄存器。注意实际中要关中断写TH0/TL0,否则数据会乱。结果用MOV AH,AL算百分比,比如AH=25。模拟后可能变成"单片机测占空比汇编程序关键在定时器中断服务程序抓高低电平时间差",但核心步骤不变。
本题链接: