完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 liebecl 于 2015-5-25 08:21 编辑
main函数我就没写了。 最后一个函数是计算频率的 /********************************************************** * 名称: timer0() * 功能: 定时器1,每50000us中断一次。 * 入口参数: ***********************************************************/ void timer0() interrupt 1 { EA =0; TR0=0; TR1=0; TL0=0xFF; //重装初值 定时50000us OX4BFFH TH0=0x4B; tem0=TL1; //读取50ms中所记脉冲个数 tem1=TH1; TL1=0x00; //定时器1清零 TH1=0x00; TR0=1; TR1=1; EA=1; } /************************************************************ * 名称: timer1() * 功能: 计数器,用于计数将555输出的频率,以计数相对湿度。 * 入口参数: *************************************************************/ void timer1() interrupt 3 //T1中断,表示计数的脉冲溢出,超出了可测量的频率范围(在50ms内计数达65535) { //显然在这里不可能。所以重新启动。 EA =0; TR0=0; TR1=0; TL0=0x00; //重装初值 定时50000us TH0=0x4C; TL1=0x00; //定时器1清零 TH1=0x00; TR0=1; TR1=1; EA=1; } void Init_timer() { TMOD=0x51; //0101 0001 定时器1在方式1下工作16位计数器 定时器0在方式1下工作16位定时器 TL0=0x00; //定时器0初值 定时50000us TH0=0x4C; TL1=0x00; //定时器1清零 TH1=0x00; ET0=1; //使能定时器0中断 ET1=1; //使能定时器1中断 EA=1; //使能总中断 TR0=1; //开始计时 TR1=1; } void tran() { f=tem1; f=(f<<8)|tem0; //计算出50ms中所记脉冲个数 f=f*20; //50ms*20=1000ms=1s 1秒钟所记脉冲个数等于频率 } |
|
相关推荐
4个回答
|
|
有人帮忙看一下吗?跪谢了
|
|
|
|
没人吗?有人帮忙看一下吗?
|
|
|
|
没人帮忙看下吗?
|
|
|
|
没人吗?有人帮忙看一下吗?
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
853 浏览 0 评论
550 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-串口通讯编程示例之串口编写程序
1096 浏览 0 评论
STM32系列单片机可以让自己的GPIO去控制自己的RESET吗?有什么风险?可以规避吗?
1459 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-串口通讯编程示例之串口参数设置
887 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11581 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-1 02:19 , Processed in 0.731415 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号