之前由于同学的一个小实验,需要用到频率计,所以自己想搞一个出来,于是网上找了很多资料,简单的有用8052单片机的定时器和计数器的结合来测其信号的频率,还有的是c8051f的捕捉功能,想来想去,还是想用用自己熟悉的8052的计数器功能,毕竟平时都用的是定时器功能,很少用到计数器功能,以便更加深入的运用8052,以后再学习C8051F。
#include#define uchar unsigned char #define uint unsigned int __CONFIG(0x3B31); void init(); uint intnum; void main() { init(); while(1) { if(intnum==5) { intnum=0; RD0=!RD0; } } }void
>>定时器比较值、计数值比较缓存寄存器TCMPBn、TCNTBn,这两个寄存器用于存储定时器的比较值和计数初始值。>>定时器比较值、计数值比较寄存器TCMPn、TCNTn,这两个寄存器是定时器的内部寄存器,用户无需进行操作。1.
之前由于同学的一个小实验,需要用到频率计,所以自己想搞一个出来,于是网上找了很多资料,简单的有用8052单片机的定时器和计数器的结合来测其信号的频率,还有的是c8051f的捕捉功能,想来想去,还是想用用自己熟悉
1 //晶振的频率2 #define OSC_FREQ (11059200UL)34 //每个指令的振荡周期数(4,6,12),注意,这里一定要仔细查看芯片手册5 //*12 - 早期的8051、8052及当前的绝大部分51单片机6 //*6 - Philips 的芯片7 //*4 - Dall
#include"STC12C5616AD.H"#define uint unsigned int#define uchar unsigned charuchar MSG[]="ilovetheworld " ;uint num;void delay(uint x){uchar i;while(x--){for(i = 0;i < 120;i++);}}void Send_char(uchar c
这是写的一个简单的测试定时器0的程序:要实现的目标是,LED第一个跟第二个灯先循环亮起,第三盏灯则以间隔一秒钟的时间亮起一次,其中,第三盏灯的亮起时间以定时器0的中断来执行,里边有亮点需要注意。一、不要忘记