C<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />8051F通常除了有两个标准的8051中的计数器/定时器之外,还可能有另外一些计数器。如C8051F320内部有4个16位计数器/定时器。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
1) Time0、Time1——标准8051计数器/定时器
2) Time2、Time3——16位自动重装定时器(用于ADC、SMBus、USB帧测量或作为通用定时器)
下面是各计数器/定时器的工作方式:
定时器0由T0M1-T0M0(TMOD.1-0)
定时器1由T1M1-T1M0(TMOD.5-4)
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
要注意的是定时器0和定时器1有5个可以选择的时钟源
1) 系统时钟/12
2) 系统时钟/4
3) 系统时钟/48
4) 系统时钟/8
5) 系统时钟
定时器0时钟选择 T0M(CKCON.2)/定时器1时钟选择 T0M (CKCON.3)
0:定时器0使用由分频位(SCA1-SCA0)定义的时钟;
1:定时器0使用系统时钟;
定时器0/1分频位(SCA1-SCA0)
很多时候需要精确的延时,就不能使用for来延时了,因为for反汇编后,汇编命令是不一样的,每条命令的机器周期是不一样的,造成延时不一样,所以要精确延时只能采用定时器。定时器的相应设置如下:
使用定时器1中断精确延时1s的程序:https://static.assets-stash.eet-china.com/album/old-resources/2010/4/15/1ad6d78f-f280-4b64-8424-e1f4fbcf0716.rar
用户610368 2015-12-12 15:11
用户1700654 2012-7-20 20:45