最佳答案
//搞个外中断,中断来了就计数
void t0(void) interrupt 0
{
t0count //这是全局变量
}
//t1工作在定时状态下,每定时1秒钟到,刷新t0的计数,
void t1(void) interrupt 1
{
tr0=1//搞个计数器中断
th0=0x3c//重新初始化
tl0=0xb0//这是12m晶振的
timecount //中断一次,记个数
if(timecount==20) //一个计数器,一次记不到一秒的,只有记很多次,才能算一秒,这就一秒了
{ frequency=t0count//看看中断多少次,frequency就是你要的频率。
t0count=0//把这个清了,记下一秒的次数。
}
}
main()
{
tmod = 0x01//选择计数器0的模式
ea=1 // 打开总中断
ex0=1it0=1//开0外中断
et0=1tr0=1//开0计时器
这里你加点代码,把frequency显示出来。
}
其他答案共有3条回答
-
陶醉的乐曲
当然可以,单片机可以实现对方波频率、占空比的检测。做这个东西你得从以下方面入手:
1、首先测出方波的频率(这个跟占空比无关),利用这个计算出周期t;
2、利用一个独立的外部中断,在测量完频率后启动。
(1)先开启中断,并设置为上升边沿触发;
(2)方波从低电平跳变到高电平后,中断触发后,将其设置为下降边沿触发,同时启动定时器;
(3)第二次触发中断后,停止计时,两次中断之间的间隔修正补偿后,就是高电平的持续时间tu。
占空比可以计算出来,就是q=tu/t*100%,
然后就显示即可。
-
知性的故事
1.方波频率不能过高,理论最大值是单片机周期的1/2,实际达不到
2.方波的电平需要匹配,也就是不能直接与单片机io脚相连,最好做好接口电路
3.方波最好做整形
程序上
方波进入外部中断引脚
记录定时器数值
计算定时器的差值
根据时钟频率折算出时间
频率=1/时间
-
闪闪的镜子
什么型号单片机,用stm32单片机可以方波开始和结束,因其定时器有脉冲捕获功能,可以进行上升沿和下降沿捕获。上升沿开启定时器,下降沿关闭定时器,可以测脉冲宽度。51单片机可以用外部中断功能,但只能下降沿触发,因此只能测两个下降沿之间的时间,即周期。
热门文章
- 南昌绿地主管岗待遇怎么样
- 放弃华尔街高薪回国守门,她的背后原来藏着一个神秘家族
- 橡胶英才网上有哪些江苏橡胶公司在招聘
- 主题酒店加盟哪个好
- 融资租赁租金及利息计算
- 果果的鞋加盟费多少钱
- 诗和远方一一一中建五局南康家居小镇城市客厅项目建设心语
- 怎么打开微信
- 肯德基的经营模式
- 广东诚泰交通科技发展有限公司怎么样
- 野生茶怎么冲
- 糯米酿苦瓜要蒸多久
- 萝卜苗和什么菜拌凉菜好吃
- 韭菜肉馅饺子怎么做好吃吗
- 玄米功能怎么用
- 糯米粉放烤箱用烤多久
- 韭菜肉馅鸡蛋怎么调馅
- 爆米花奶油是什么
- 新会小青柑怎么分辨
- 暖水瓶绿豆汤多久
- 胆机怎么使用
- 功放没声音怎么修
- ads1293怎么用
- 信捷的plc和keyence基恩士的plc哪个好啊
- 健伍汽车cd怎么进入调eq功能
- 西门子s7-200 smart plc用pls命令控制步进电机的简单程序中的eni是什么意思
- 大众波罗音响怎么解码
- vk3234 怎么样
- 西门子plc的atch中断指令使用
- 单片机怎么设置otp位