程序目的是
利用定時/計數器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.raoushi.com/bbs/) | Powered by Discuz! X3.1 |