程序要求:1秒之内灯闪10次,我编的程序A和B都不能实现这个要求,哪位热心人帮帮我
A:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar a=0;
sbit LED=P0^0;
sbit P1_4=P1^4;
void delay(uint z);
void main()
{
P1_4=0;
a=0;
TMOD = 0x01;
TH0 = (65536-50000)/256;//50ms
TL0 = (65536-50000)%256;
EA = 1;
ET0 = 1;
TR0 = 1;
while(1);
}
void Timer_0() interrupt 1
{
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
a++;
if(a == 1)
{
a=0;
LED = ~LED;
delay(689);
TR0=0;
}
}
void delay (uint z)
{
uint x,y;
for(x=125;x>0;x--)
for(y=z;y>0;y--);
}
B:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar a=0;
sbit LED=P0^0;
sbit P1_4=P1^4;
void delay(uint z);
void main()
{
P1_4=0;
a=0;
TMOD = 0x01;
TH0 = (65536-50000)/256;//50ms
TL0 = (65536-50000)%256;
EA = 1;
ET0 = 1;
TR0 = 1;
while(1);
delay(689);
ET0=0;
TR0=0;
}
void Timer_0() interrupt 1
{
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
a++;
if(a == 1)
{
a=0;
LED = ~LED;
}
}
void delay (uint z)
{
uint x,y;
for(x=125;x>0;x--)
for(y=z;y>0;y--);
}
首先非常感谢你噢——给我回复了!!!
我按照你的提示写了一个如下,可是运行失败,您可否帮我写一个程序呢?
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar a=0;
sbit LED=P0^0;
sbit P1_4=P1^4;
void delay(uint z);
void main()
{
P1_4=0;
a=0;
TMOD = 0x01;
TH0 = (65536-50000)/256;//50ms
TL0 = (65536-50000)%256;
EA = 1;
ET0 = 1;
TR0 = 1;
while(1);
}
void Timer_0() interrupt 1
{
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
a++;
if(a == 2) //50ms*2=100ms,中断一次
{
a=0;
LED = ~LED;
if(a==20)//1000ms 即1秒
{
a=0;
TR0=0;
}
}
}
请问是这样的吗?if(a == 2)之后它还会再实现if(a==20)吗?我感觉这个行不通!,我是新学者,还请多多赐教。
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |