大体说一下思路,主函数在闪烁led灯(用到定时器0精确1秒闪一下),然后一个外部中断打断他,让数码管一次显示0123...7,也就是第一个显示0亮一秒,然后灭了,第二个显示1亮一秒,依次这样……这里怎么再加一个定时器1,让其精确为一秒。
中断没参透,所以求指导!!!
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar smg_du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //0.1.2.3.4.5.6.7.8.9.a.b.c.d.e//
uchar we[]={0xef,0xdf,0xbf,0x7f,0xfe,0xfd,0xfb,0xf7};
uchar i,num;
sbit D1=P2^0;
void inte()
{
EX0=1;
EA=1;
IT0=1;
}
void
time()
{
TMOD=0x01;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
EA=1;
ET0=1;
TR0=1;
}
void time1()
{
TMOD=0x01;
TH1=(65536-5000)/256;
TL1=(65536-5000)%256;
EA=1;
ET1=1;
TR1=1;
}
void main()
{
init();
inte();
while(1) //主函数每隔一秒闪一下
{
if(num==200)
{
D1=~D1;
num=0;
}
}
}
void timer() interrupt 1
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
num++;
}
void inter() interrupt 0
{
for(i=0;i<8;i++)
{
P1=we
;
P0=smg_du;
//这里怎么加上定时器1呢?也就是怎么进行嵌套呢?让数码管每隔一秒每一位上依次显示123...9
}
}
void timer1() interrupt 3 //这个定时器怎么用到上面的中断函数中????
{
TH1=(65536-5000)/256;
TL1=(65536-5000)%256;
}
void delayms(uint xms)
{ uint x,y;
for(x=xms;x>0;x--)
for(y=110;y>0;y--); //这个是xms毫秒的延时函数,然后再主函数中调用进行led闪烁控制
}
一周热门 更多>