第五课学习

      前面提到晶震的频率时,当时以为是一条指令执行时间就是频率分之一,今天的教程看来却不是,原来频率分之一只是一个时钟周期,用T来表示,而一般情况下的51所指的指令时间是12倍于时钟周期。

      TCON与TMOD用来控制定时器运行状态的特殊寄存器,听起来有点蒙没完全明白。看了一遍之后,后面程序大概倒是能明白是怎么回事,不过前面没有太明白,所以只有再听一遍,同时将理解的记下来。

      一般情况下单片机有两个定时器(或者叫计数器更为确切),所以TCON和TMOD这两个记数器都是一分为二的,每四个bit位针对一个计数器。以0结尾的表示为计数器0,以1结尾的表示计数器1,比如TCON中的TF1,TR1,IE1,IT1这四位针对计数器1,TF0,TR0,IE0,IT0这另外四位则针对计数器0,TMOD也是同样的道理。

      单片机的这两个计数器并非一开机就起作用,而是要设置特定的一些标识才能够开始运行。而设这些标识的地方就是这两个特殊功能的寄存器TCON,TMOD。

      TCON计数器,该寄存器的TF位当其值为1时表示有计数到达最大值并进行了溢出,在默认情况下其值为0,如果不执行中断的话,该值就会一直为1,当溢出后,执行中断是怎么个情况还不清楚,后面会讲,此时如果要想使计数器继续起作用,则应该用软件的方式将其设置为0.TR则比较好理解,其值为1时,表示开始计数,为0时,则停止计数。

TMOD寄存器也是一分为二,分别针对两个计数器。C/T位为0时,用作定时器,为1时用作计数器, 这个好理解,这课是讲定时器,则其值为0,GATE位目前还是没明白到底是个什么意思,并且与INT1有什么关系,INT1是什么个情况,也不甚明白,只有先过了,后面再来考虑这个问题,貌似程序没用到,直接给其设置为了0.M1和M0这两位一共有四种组合,根据教程,目前用于计数器,所以只用模式以,即M1值为0,M0其值为1即可。

      教程中整个定时器程序中采用的是使用计数器0进行的定时器操作,计数器1没有用到。

      计算时间长度说白是根据计数器的计数次数进行的累加以得到的时间延长,计数器每计一次数即累加1,则将运行一个机器周期,这个是固定不变的,比如计数器从0累加到1,则这个时间花费是:12/11059200这么长的时间(注:11059200为晶震的震荡频率)。实际上这个非常小,就算运行一个完成的溢出(即累加65536次),则其花费的总时间长度为65536*(12/11059200)~=0.0711,即约为71毫秒,通常情况下这个71毫秒不太有用,一般我们可以算算执行时间花费50毫秒时,一共计了多少个数,这样一来,如果要取整秒的话,就相当地容易了,比如要执行一秒的话,让其再执行个20次就到达了一秒时间。

      50毫秒的计算方法是X*12/11059200=0.050,X表示执行次数,求出来,其值为46080次,即只要执行46080次累加的时间就是50毫秒,如此一来,我们只需要将TH0与TL0的初值设置为65536-46080=19456=0x4c00,这样,每次执行一次溢出就表示一个50毫秒,只要执行20次溢出就到达了一秒了。这就是进行定时器的方法,具体见小宋老师的程序,他是先计算花费20毫秒的次数,然后累次溢出50次就表示一秒,我和他刚好相反,我是计算50毫秒来进行了,这个没有什么本质上的区别。

      38译码器中的标识与原理图中的标识有些对应不上,这里标识一下。原理图上的A0,A1,A2对应于38译码器手册中的A,B,C。原理图上的E3对应手册中的G3,原理图中的E1非,E2非(ENLED)对应手册中的G2非


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值