编了一个1秒内LED1闪10次的程序(12MHZ,STC89C52),编译OK,但在实验板上运行失败,网友也帮忙写了个程序,结果也是失败。现在将此程序贴上来,请大家来一起来帮帮忙,指教指教,探讨探讨
题目要求:1秒内LED1闪10次后停止(或是说灯在1秒之内只闪10次)
我写的:
程序分析:闪10次即亮10次灭10次,共20次,1S/20=50MS每次。
#include<reg52.h>
#define uchar unsigned char
sbit P1_4=P1^4;
sbit LED1=P0^0;
uchar a;
void main()
{
P1_4=0;
a=0;
TMOD=0X01;
TH0=0X3C;
TL0=0Xb0;
EA=1;
ET0=1;
TR0=1;
while(1);
}
void time0() interrupt 1
{
TH0=0X3c;
HL0=0Xb0;
a++;
if(a==1)
{
a=0;
LED1=~LED1;
}
if(a==20)
{
TR0=0;
}
}
当以上程序运行失败之后,我在if(a==1)之前加了个while(1)将两个if都放在了{ }中,但结果仍然达不到题目要求:1秒钟之内LED1闪烁10次后停止。
网友的程序:
#include<reg52.h>
#define uchar unsigned char
sbit P1_4=P1^4;
sbit LED1=P0^0;
uchar a,b;
void main()
{
P1_4=0;
a=0;
b=0;
TMOD=0X01;
TH0=0X3C;
TL0=0Xb0;
EA=1;
ET0=1;
TR0=1;
while(1);
}
void time0() interrupt 1
{
TH0=0X3c;
HL0=0Xb0;
a++;
if(a==1)
{
a=0;
}
for(b=0;b<=10;b++)
{
LED1=~LED1;
}
}
以上是网友的程序,大概是这样吧,因为他给我的资料没带在身边编译OK,实验板上得不到题目要求的结果。
我做出来了:程序如下,有愿意一起学习共同进步的朋友可以加我Q:125991680
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar a=0;
uchar b=0;
sbit LED=P0^0;
sbit P1_4=P1^4;
void main()
{
P1_4=0;
a=0;
b=0;
TMOD = 0x11;
TH0 = (65536-50000)/256;//50ms
TL0 = (65536-50000)%256;
EA = 1;
ET0 = 1;
ET1=1;
TR0 = 1;
TR1=1;
while(1);
}
void Timer_0() interrupt 1
{
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
a++;
if(a == 1)
{
a=0;
LED = ~LED;
}
}
void time1() interrupt 3
{
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
b++;
if(b==20)
{
a=0;
b=0;
TR0=0;
TR1=0;
}
}
谢谢你的夸奖呢!但是还是做得不好:
用了两个定时器,A:占用资源;B:感觉很怪(其实也是编好了之后才想到的可以一个用来定时,另一个用来计数)
我现在想用一个定时器也完成它,那个朋友可以帮帮我呢,我上面采用的是用一个定时器,但是失败了,我现在又想到了
两个方案:
1,用延时+定时器(这个我要晚上实验才能有结果)
2,不加延时程序,只用一个定时器(这个希望能够得到大家的学友们的帮助,因为加上学友的程序,我都实验了6个之多了,可是都失败了!!!)
#include<reg52.h>
#define uchar unsigned char
sbit P1_4=P1^4;
sbit LED1=P0^0;
uchar a;
void main()
{
P1_4=0;
a=0;
TMOD=0X01;
TH0=0X3C;
TL0=0Xb0;
EA=1;
ET0=1;
TR0=1;
while(1);
}
void time0() interrupt 1
{
TH0=0X3c;
HL0=0Xb0;
a++;
if(a==1)
{
//a=0;把这句去掉就行了吧。
LED1=~LED1;
}
if(a==20)
{
TR0=0;
}
}
谢谢你噢!!!
我今天晚上回去试一下。
我试了一下,不行噢,
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |