求例程讲解

2020-02-06 10:34发布

#include "reg52.h"
#define  uchar unsigned char
#define  uint unsigned int
#define  xchar unsigned char code

#define RELOADVALH 0x3C
#define RELOADVALL 0xB0

sbit clk=P3^1;
sbit da=P3^3;
sbit ld=P3^4;
sbit lclk=P3^2;

xchar map[]=
{0xd0,0xed,0xf9,0xf2,0xbb,0xbf,0xd1,0xff,0xfb,0xdf};



void delay(uint s)
{
    uint m;
    for(m=0;m<s;m++)
    { }
}


void delayms(uint nnn)
{
    uint mmm;
    while(nnn-->0)
    for(mmm=0;mmm<1000;mmm++)
    { }
}

void dat(uchar a)
{uchar i;
for(i=0;i<8;i++)
{if (a&0x01) da=1;
else da=0;
clk=0;
clk=1;
a>>=1;}
}



void whole(uchar z)
{uchar i;
for(i=0;i<10;i++)
dat(z);
ld=0;
ld=1;
delay(2);
ld=0;
}

void timer0(void) interrupt 1
{
TR0=0; // 停止定时器0
TH0=RELOADVALH; // 20ms后溢出
TL0=RELOADVALL;
TR0=1; // 启动 T0
lclk=~lclk;
}

void main()
{
uchar *mp;
uchar i;

delayms(10);

TMOD=0x11;
TCON=0x15;
IE=0x82;

while(1)
{
mp=map;
for(i=0;i<10;i++)
{whole(*mp++);
delayms(25);}



}
}
该程序是以AT89s52做控制板,以ML1001 驱动段码COG 液晶显示的程序。但是看不懂,求高手给我详细地解释下。万分感谢!
0条回答

一周热门 更多>