定时器中断问题
时间:10-02
整理:3721RD
点击:
#include<reg52.h>
sbit wela=P2^6;
sbit dula=P2^7;
#define uint unsigned int
#define uchar unsigned char
uchar code table[]=
{0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07, 0x7f,0x6f};
uchar code wed[]=
{0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f,
};
uint tt,b;
void delay (uint c);
void main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;//?a×ü?D??
ET0=1;//?a???¨ê±?÷0?D??
TR0=1;//???ˉ?¨ê±?÷0?D??
wela=1;
P1=0x55;
wela=0;
dula=1;
PO=0x3f;
dula=0;
if(tt==20);
{ tt=o;
b++;
if(b==9)
b=0;
dula=1;
P0=table[b];
dula=0;
}
}
void exter0() interrupt 1
{ TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tt++;
}
为什么位选可以按照要求2,4,6,8亮,位选不会按照0到9之间变化,如果用for语句则又可以实现定时器延迟的效果,灯也会亮?
sbit wela=P2^6;
sbit dula=P2^7;
#define uint unsigned int
#define uchar unsigned char
uchar code table[]=
{0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07, 0x7f,0x6f};
uchar code wed[]=
{0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f,
};
uint tt,b;
void delay (uint c);
void main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;//?a×ü?D??
ET0=1;//?a???¨ê±?÷0?D??
TR0=1;//???ˉ?¨ê±?÷0?D??
wela=1;
P1=0x55;
wela=0;
dula=1;
PO=0x3f;
dula=0;
if(tt==20);
{ tt=o;
b++;
if(b==9)
b=0;
dula=1;
P0=table[b];
dula=0;
}
}
void exter0() interrupt 1
{ TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tt++;
}
为什么位选可以按照要求2,4,6,8亮,位选不会按照0到9之间变化,如果用for语句则又可以实现定时器延迟的效果,灯也会亮?
一看就知道是郭老师的板子,但是不知道你问的问题是什么。
好眼力果真跟郭老师有关但不是他的板子。不过是跟他的视频来编写的,我的问题是我的数码根据程序要求是要从1到9变化的,但是烧录之后数码管不变化?
帮顶,我用汇编,C无力
好吧感谢你的浏览!
竟然2个人都这么说,那我表达真得好好改善一下了