程序目的是
利用定时/计数器T1产生定时时钟,由P1口控制8个发光二极管,
使8个发光二极管依次一个一个闪动,闪动频率为10次/秒(8个
灯依次亮一遍为一个周期),循环
下面是我写的程序,运行时没有提示错误,但是下载之后不对,,请问是那里有错,本人菜鸟中的菜鸟,求高手解答!!!
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar aa,b,temp;
void yanshi(uint);
void main()
{
TMOD=0x01;
TH1=(65536-100000)/256;
TL1=(65536-100000)%256;
EA=1;
ET1=1;
TR1=1;
temp=0xfe;
P1=temp;
while(1)
{
}
}
void time_1() interrupt 3
{
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
aa++;
if(aa==10)
{
aa=0;
for(b=0;b<7;b++)
{
P1=temp;
temp=_crol_(temp,1);
}
}
}
你这个程序两个地方错了,你不够小心啊,我给你改的地方加标注了
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar aa,b,temp;
void yanshi(uint);
void main()
{
TMOD=0x01; //你用的是定时1,工作方式为1,应该改为TMOD=0x10;
TH1=(65536-100000)/256; //这个地方和下面的赋值不一样,应该是 TL1=(65536-10000)%256;
EA=1;
ET1=1;
TR1=1;
temp=0xfe;
P1=temp;
while(1)
{
}
}
void time_1() interrupt 3
{
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
aa++;
if(aa==10)
{
aa=0;
for(b=0;b<7;b++)
{
P1=temp;
temp=_crol_(temp,1);
}
}
}
有问题在问我,qq:676733417
void time_1() interrupt 3
{
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
aa++;
if(aa==10)
{
aa=0;
// for(b=0;b<7;b++)
//{
P1=temp;
temp=_crol_(temp,1);
//}
}
}
“TH1=(65536-100000)/256” 是不对的,但是仅仅是时间不对,将会给TH1赋值补码,就是100000-65536,比65536-10000时间长。
但是上面一段就错多了,在一次中断里循环显示一遍,速度很快,人眼根本不无法分辨。按上面改后的程序,循环去掉试一试。
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |