程序目的是
利用定時(shí)/計(jì)數(shù)器T1產(chǎn)生定時(shí)時(shí)鐘,由P1口控制8個(gè)發(fā)光二極管,
使8個(gè)發(fā)光二極管依次一個(gè)一個(gè)閃動(dòng),閃動(dòng)頻率為10次/秒(8個(gè)
燈依次亮一遍為一個(gè)周期),循環(huán)
下面是我寫的程序,運(yùn)行時(shí)沒有提示錯(cuò)誤,但是下載之后不對,,請問是那里有錯(cuò),本人菜鳥中的菜鳥,求高手解答!!!
#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);
}
}
}
你這個(gè)程序兩個(gè)地方錯(cuò)了,你不夠小心啊,我給你改的地方加標(biāo)注了
#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; //你用的是定時(shí)1,工作方式為1,應(yīng)該改為TMOD=0x10;
TH1=(65536-100000)/256; //這個(gè)地方和下面的賦值不一樣,應(yīng)該是 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” 是不對的,但是僅僅是時(shí)間不對,將會給TH1賦值補(bǔ)碼,就是100000-65536,比65536-10000時(shí)間長。
但是上面一段就錯(cuò)多了,在一次中斷里循環(huán)顯示一遍,速度很快,人眼根本不無法分辨。按上面改后的程序,循環(huán)去掉試一試。
| 歡迎光臨 (http://m.raoushi.com/bbs/) | Powered by Discuz! X3.1 |