完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
51中断系统的组成
定时/计数器的基本原理 逻辑开关闭合后,脉冲信号将对加1计数器充值。若计数器的容量为2 n (n为整数),则当数值达到满计数值后将产生溢出,使中断请求标志TFx(x为0或1)进位为1,同时加1计数器清零。 如果在启动计数之前将TFx清零,并将一个称为计数初值a的整数先置入加1计数器,则当观察到TFx为1时表明已经加入了(2n - a)个脉冲,如此便能计算出脉冲的的到达数量了。
定时/计数器工作原理 系统时钟(系统内部振荡器)经12分频后的脉冲(即机器周期)(12分频为12除以频率)信号和来自外部引脚Tx的脉冲信号,通过逻辑 定时/计数器的结构 由上图可知,T0和T1分别由高8位和低8位两个特殊功能寄存器组成,即
定时/计数器的控制是通过两个特殊功能寄存器实现的,其中,
电路图 要求 D1~D8灯间隔1s闪烁 完整程序 #include unsigned char t; void main() { TMOD=0x01;//0000 00|01| M1=0,M0=1,定时器T0模式1,16位计数器 EA=1;//中断总允许 ET0=1;//定时器T0的中断开关 TR0=1;//启动定时器0 while(1); } void timer() interrupt 1 { //定时时间50000μs=(65536-a)×12/fosc fosc=11.0592≈12 //一个较大的数字分成两部分,分别存入定时器T0的高八位和低八位 //8位最大能表示数字256,高8位和低8位一起可表示一个最大数字256256 //括号内的结果除以256将整数存入定时器T0的高8位TH0 //括号内的结果取余256将余数存入定时器T0的低8位TL0 //TH0=(65536-50000)/256;//得到整数部分存入高8位 60 0011 1100 //TL0=(65536-50000)%256;//得到余数部分存入低8位 176 1011 0000 //2的16次方=65536 ,单位时间50000μs=50ms,2的8次方=256 ,(65536-50000)/256=60 (60)binary=0011 1100 TH0=(65536-50000)/256;//定时器T0的高8位 //(65536-50000)%256=176 (176)binary=1011 0000 TL0=(65536-50000)%256;//定时器T0的低8位 t++;//如果t累加到20,则执行if语句(即t=20时表示1秒) if(t==20) //20个50ms(定时时间)=1s { t=0;//t清零,以便进行下一次计数 P1=~P1;//取反实现led的闪烁 } } 解释部分语句 TH0=(65536-50000)/256; TL0=(65536-50000)%256; 如果你选的单片机的晶振一定,比如12MHZ来说吧,机器周期是1us,就是说每1us产生一次计数,就拿50ms来说,这是你想要的计时,意思是,对机器周期进行50000计数就可以得到我想要的,可T0是一个可以对机器周期能进行65536次计数,也就是说我想要的50MS不能让T0溢出,怎么办?那么先给这个定时器里面放些数,放多少,就是我们想要的50MS在加上一个多少就能等于65536,也就是65536和50000的差值,这个值就是我们说的初值。 为什么除以256,因为我们的计时器是两个8位组成的,那么要把那些差值装进这两个8位,那么低8位最多能装256个机器周期,那么256计满了就用高8位的,就是说低8位满一次高8位加1,那么高8位装多少,低8位就满了几次,算法就是用差值除一下256取其整数,剩下的,就是还剩了小于256次数的就放在低8位,就是差值的余数。如果我要放一个超过256的数,肯定是超过先放高八位,把剩下的部分放在低八位中了,TH0=(65536-50000)/256就是把TL0中放不下的部分放在THO中,再把剩下的部分放在TH0中。 |
|
|
|
只有小组成员才能发言,加入小组>>
2947 浏览 9 评论
2667 浏览 16 评论
3197 浏览 1 评论
8388 浏览 16 评论
3751 浏览 18 评论
6910浏览 6评论
求助,请问MS51FB9AE带隙电压能作为侦测的基准电压吗?
7430浏览 3评论
6937浏览 3评论
支持UART-to-BLE透传的新唐NuTool – BLE ATCMD开发工具推荐
5784浏览 3评论
9351浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-3-29 06:12 , Processed in 0.664637 second(s), Total 77, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 深圳华秋电子有限公司
电子发烧友 (电路图) 粤公网安备 44030402000349 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号