原帖链接:https://www.cnblogs.com/wangh0802PositiveANDupward/p/3235556.html
程序的局限性在于,因为定时器0是8位的,也就是对外部引脚脉冲计数的最大值是256 当计数值达到这个值后,计数器的值会自动清零,这时候你可以设置一个中断程序来计数。我这里不多讲了。外部脉冲频率是由晶振决定的,定时器在计数模式下,计数初值和计数值跟那两个没有任何关系。
- #include <pic.h> //用的是PICC编译器
- __CONFIG (HS & PROTECT & PWRTEN & BOREN & WDTDIS);
- //PIC单片机都需要配置该位,HS是外部晶振模式
- // 使能PROTECT保护程序存储器
- //BOREN使能掉电保护
-
- //WDTDIS关闭看门狗
- void display(int pulse_amount);
- void main(void)
- {
- int pulse_amount //定义变量,存储外部脉冲数
- SCS=0; //时钟源的选择。
- TMR0=0; //清零计数器
- OPTION_REG=0x20; //定义计数模式,对单片机的TOCK1引脚的脉冲
- //计数,每来一个脉冲,TMR0就会加1,设置好之后计数器就开始工作了
- while(1) //这个循环就是不断读取计数值
- {
- pulse_amount=TMR0;
- display(pulse_amount); //这个程序是我假设的,就是用来显示计数值
- }
- }
|