求一个关于单片机定时器和计数器的c语言程序!大神出现吧~~~

51单片机的两个定时器一个要实现定时功能在P1口产生周期为1S的方波,另一个定时器做计数器使用,用来记录P1口产生方波数,并在单个个共阳的数码管上显示记录的数值,到了9后... 51单片机的两个定时器一个要实现定时功能在P1口产生周期为1S的方波,另一个定时器做计数器使用,用来记录P1口产生方波数,并在单个个共阳的数码管上显示记录的数值,到了9后从0重新开始计数。另外还要有一个按键,用来开关数码管的显示,但是计数器仍然计数,当一按按键,数码管熄灭,但计数器计数不停止,再按一次按键,数码管亮起,显示的是当前的计数值!求大神赐教! 展开
 我来答
xz16112
2011-12-06
知道答主
回答量:24
采纳率:0%
帮助的人:18.8万
展开全部
//说明:p11产生方波。p0口显示。按键接数码管的阳极公共端。
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char code LED7Code[] = {~0x3F,~0x06,~0x5B,~0x4F,~0x66,
~0x6D,~0x7D,~0x07,~0x7F,~0x6F};//数码管段码
sbit p11=P1^1;
uchar y,z,c;
/*时间中断程序*/
void int1() interrupt 1 //时间为50MS
{
TH0=0X4C;
TL0=0X00;
z++;
if(z==10)
{z=0;
p11=~p11;
y++;
}
if(y==2) //既一高一低,2次计数才为一个周期
{y=0;
c++;
if(c==10) //满十归0
c=0;
}
P0=LED7Code[c];
}
void main()
{
TMOD=0X01;
TL0=0X00;
TH0=0x4c;
TR0=1; //启动定时计数器0
ET0=1; //开定时器中断0
EA=1; //开总中断
while(1); //原地等待
}
yaozusheng77
2011-11-26
知道答主
回答量:32
采纳率:0%
帮助的人:14.1万
展开全部
书上资料多,很简单的。如果是为了应付老师的话超超就行了。如果是自己想设计的话好好研究把
把TMOD 设置为一个定时一个为计数,定时的定0.5秒然后计算出TH1和TLI 的初值 计数的就8位的定为中断在中断里显示就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
零下一度tm
2011-11-27
知道答主
回答量:15
采纳率:0%
帮助的人:18.4万
展开全部
只要设置好TMOD方波就能产生,用方式一,我认为计数用中断比较好,不浪费CPU,在中断程序里加显示程序!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式