求高手写 用51单片机C语言 TMOD=0X01 定时一秒的程序

晶振11.0596mhz接在定时一秒下的时钟显示电路有误当秒为59时直接跳到11了a[6]时分秒各两位if(aa==20){aa=0;if(a[5]==9){a[5]=0... 晶振11.0596mhz
接在定时一秒下的 时钟显示电路 有误
当秒为59时 直接跳到11了
a[6] 时分秒 各两位
if(aa==20)
{ aa=0;
if(a[5]==9)
{ a[5]=0;
if(a[4]==6)
{ a[4]=0;
if(a[3]==9)
{a[3]=0;
if(a[2]==6)
{a[2]=0;
if(a[0]==0)
{ if(a[1]==9)
{ a[1]=0;
a[0]=1;
}
a[1]++;
}
if(a[0]==1)
{ if(a[1]==2)
{ a[0]=0;
a[1]=0;

}
a[1]++;
}
}
a[2]++;
}
a[3]++;
}
a[4]++;

}
a[5]++;
}
展开
 我来答
曾义和
2011-10-29 · TA获得超过500个赞
知道小有建树答主
回答量:212
采纳率:0%
帮助的人:222万
展开全部
下面以运用中断对LED进行控制,举一个例子吧,定时时间50ms,设置为一秒的话,加个for循环,相应改动即可!
#include<reg52.h>
sbit LED=P1^2; //定义LED端口
/*------------------------------------------------
定时器初始化子程序
------------------------------------------------*/
void Init_Timer0(void)
{
TMOD |= 0x01; //使用模式1
TH0=(65535-50000)/256; //给定初值
TL0=(65535-50000)%256;
EA=1; //总中断打开
ET0=1; //定时器中断打开
TR0=1; //定时器开关打开
}
/*------------------------------------------------
主程序
------------------------------------------------*/
main()
{
Init_Timer0();
while(1);
}

/*------------------------------------------------
定时器中断子程序
------------------------------------------------*/
void Timer0_isr(void) interrupt 1 using 1
{
TH0=0x00; //重新赋值
TL0=0x00;
LED=~LED; //指示灯反相,可以看到闪烁
}
47okey
推荐于2018-04-12 · TA获得超过1.2万个赞
知道大有可为答主
回答量:5900
采纳率:75%
帮助的人:2402万
展开全部
#include <reg51.h>
#define uchar unsigned char
sbit LED=P1^0;
uchar time;

void initT0( )
{
TMOD = 0x01; //定时器0,工作方式1
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256; //50ms中断一次
EA = 1;
ET0 = 1;
TR0 = 1;
}

void main(void)
{
initT0();
while(1)
if(time==20) //中断20次,1s
{
time=0;
LED=~LED; //P1.0上的LED1s亮或灭一次
}

}

void T0int( ) interrupt 1
{
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
time++;
}
更多追问追答
追问
可 做时钟的时候 这一秒感觉跳的好快啊
追答
不会吧,你TMOD=0X01; 这条有没?
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式