求51单片机1秒钟脉冲计数C语言程序

如题所述

单片机的系统时间为晶振频率的12分之一,如果晶振是12兆赫兹,那么单片机最小系统时间就是1us,所以可以用_nop_();指令达到精确延时,这条语句执行1次系统时间,具体的百度下就行了。

至于你说的1s,时间比较长,不适合用定时器,那么可以用嵌套循环语句,for、while、do while,要注意循环时使用不同的变量类型,所消耗的时间也不同。百度下proteus,这个是能将keil生成的c工程文件进行软件仿真的一个软件,和multisim一样很简单,里面有示波器,用示波器看仿真时间,自己用循环和_nop_()指令凑1秒出来就行了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-17
用定时器 计数值不够 就先定1和数比如1ms 然后到100ms 累加另一个数到10 来获得1s时间
第2个回答  2012-09-06
我不会c语言的,你若要汇编的,我可以给你,1秒=1000毫秒=1000000us,置于具体实现,可以采用查询方式,也可以采用中断方式,设晶振频率为6M赫兹,则机器周期为12/6M=2us,中断简单些,我说下中断程序,
T0(引脚P3.4)工作于定时方式,定时设置为100ms,使用中断,控制中断次数为10次溢出,共1000ms,然后T1(引脚P3.5)计数加一,具体计算如下:
T0采用方式一,计数初值x=2^16-(100*10^3/2)=10000H-C350H=3CB0H
T1采用计数方式一,这样是16位计数方式,可大量计数。
程序自己写吧,分给我吧