注册 登录
编程论坛 单片机编程

请帮忙解释一下这个事什么意思。

Dongtengpeng 发布于 2012-04-01 16:44, 2262 次点击
程序代码:
#include<reg51.h>
#define SEG 17    //每帧图片分成17列里显示
#define INteRVAL 20    //每幅图片在左右摇摆20次后换下一幅

typedef unsigned char uchar;
typedef unsigned int uint;
code char pattern[17][3]=
    {//3幅图片的字模
        {0xff,0xff,0xff},
        {0xff,0xff,0xff},
        {0xff,0xff,0xff},
        {0xff,0x9f,0xff},
        {0xff,0x6f,0xf9},
        {0xff,0x77,0x65},
        {0xfe,0xbb,0x1e},
        {0x7e,0xdd,0xfe},
        {0x00,0xee,0xfe},
        {0x7e,0xdd,0xfe},
        {0xfe,0xbb,0x1e},
        {0xff,0x77,0x65},
        {0xff,0x6f,0xf9},
        {0xff,0x9f,0xff},
        {0xff,0xff,0xff},
        {0xff,0xff,0xff},
        {0xff,0xff,0xff},
    };
uchar phase,th1,tl1,index,count;

main()
{
    EA=0;
    EX0=1;
    ET1=1;
    PX0=1;
    IT0=1;
    TMOD=0x11;
    index=0;
    EA=1;

    while(1)    {    }
}    void
Int0_Handle(void)
interrupt 0 using 1
{
    uint t0_time;
    TR0=0;
    TR1=0;
    TF1=0;
    t0_time=TH0<<8|TL0;
    TL0=0;
    TH0=0;
    TR0=1;
    t0_time=65535-t0_time/SEG;
    th1=t0_timr/256;
    TH1=th1;
    tl1=t0;
    if (count<3*INTERVAL)
        {//三幅图片循环
            count++;
        }
    else
        count=0;
   
    index=count/INTERVAL;

    if (th1!=0xff || tl1!=0xff)            //如果摆动特别慢,定时器溢出就不显示
        {
            phase=0;
            tr1=1;
        }
    else
        TR1=1;
}    void

Timer1(void) interrupt 3 using 3
{
    if (phase<SEG)    //17段依次显示
    {   
        p1=pattern[phase][index];
        phase++;
        TH1=th1;
        TL1=tl1l
    }
}
        

   
这是替一个同学问的,他说他是要做什么电具的LED灯,我也不清楚。最后能解释每一句的意思。。。
2 回复
#2
Dongtengpeng2012-04-02 10:37
是一个LED摇摇棒。。
#3
Dongtengpeng2012-04-04 22:04
快来个人啊。。。
1