只要有电平变化,计时器就交换计时的单片机和程序有吗
答案:3 悬赏:0
解决时间 2021-01-30 09:09
- 提问者网友:夕夏残阳落幕
- 2021-01-29 18:08
只要有电平变化,计时器就交换计时的单片机和程序有吗
最佳答案
- 二级知识专家网友:随心随缘不随便
- 2021-01-29 19:29
单片机是8位机,但是定时器的定时方法却有8位,13位,16位3种方法可选,定时的时基为外部时钟的12分频,因此最小分辨率就是12/fosc,要电平变化就要选择一款具有数模(DA)转换功能的单片机Atmel,微芯的产品很多,然后输出接电平比较器,比较器的输出接到单片机的外部中断口上,就可检测到电平变化并进入中断,在中断程序里交换计时。
全部回答
- 1楼网友:duile
- 2021-01-29 22:22
500KHZ就是脉冲周期为2uS,就是要求用定时器产生1uS的定时,我觉得这对于500KHZ,就是500K分之一秒,即2us,那么高电平1us,低电平1us,而单片机
- 2楼网友:為→妳鎖鈊
- 2021-01-29 21:06
设置p0.0接入脉冲i/o然后值为1(设定为输入模式),用t0定时计数器计数:tr0 = 0;while(p0.0 == 0) //当检测到高电平,开启计数器tr0 =1;while(p0.0 == 1) //当脉冲变低,关闭计数器tr0 = 0;
如果计时器溢出就设定一个值count+1
然后直接读取 th0和tl0中的计数数据,再乘以你的计数时间间隔(每计一个数的时间,跟你的时钟频率有关系)+计数时间间隔(每计一个数的时间,跟你的时钟频率有关系)乘以计数器总数乘以设定值count。
高电平持续时间:
12m晶振:
高电平时间比较短(大概35ms以内)可以使用外部中断的下降沿中断,当外部中断发生时关闭定时器,记录定时器th0tl0的值,记录的定时器th0tl0的值就是高电平的时间、等待中断输入引脚电平为高电平,清零th0tl0并启动定时器,反复循环。
高电平的时间大于35ms,则需要打开定时器中断,定时器溢出一次中断溢出次数count++,用外部中断的下降沿中断,当外部中断发生时关闭定时器,记录定时器th0tl0的值、计算高电平时间(高电平时间=定时器的值+count*定时器的溢出时间),清零count,等待中断输入引脚电平为高电平,清零th0tl0并启动定时器,反复循环。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯