#include
#include
void delayms(unsigned char ms)
// 延时子程序
{
unsigned char i;
while(ms--)
{
for(i = 0; i < 120; i++);
}
}
main()
{
unsigned char led;
led = 0xfe;
p0 = led;
while(1)
{
delayms(250);
led = _crol_(led,1); //循环右移1位,点亮下一个led
p0 = led;
}
}
reg51.h中定义的sfr:
/* byte register */
sfr p0 = 0x80;
sfr p1 = 0x90;
sfr p2 = 0xa0;
sfr p3 = 0xb0;
sfr psw = 0xd0;
sfr acc = 0xe0;
sfr b = 0xf0;
sfr sp = 0x81;
sfr dpl = 0x82;
sfr dph = 0x83;
sfr pcon = 0x87;
sfr tcon = 0x88;
sfr tmod = 0x89;
sfr tl0 = 0x8a;
sfr tl1 = 0x8b;
sfr th0 = 0x8c;
sfr th1 = 0x8d;
sfr ie = 0xa8;
sfr ip = 0xb8;
sfr scon = 0x98;
sfr sbuf = 0x99;
/* bit register */
/* psw */
sbit cy = 0xd7;
sbit ac = 0xd6;
sbit f0 = 0xd5;
sbit rs1 = 0xd4;
sbit rs0 = 0xd3;
sbit ov = 0xd2;
sbit p = 0xd0;
/* tcon */
sbit tf1 = 0x8f;
sbit tr1 = 0x8e;
sbit tf0 = 0x8d;
sbit tr0 = 0x8c;
sbit ie1 = 0x8b;
sbit it1 = 0x8a;
sbit ie0 = 0x89;
sbit it0 = 0x88;
/* ie */
sbit ea = 0xaf;
sbit es = 0xac;
sbit et1 = 0xab;
sbit ex1 = 0xaa;
sbit et0 = 0xa9;
sbit ex0 = 0xa8;
/* ip */
sbit ps = 0xbc;
sbit pt1 = 0xbb;
sbit px1 = 0xba;
sbit pt0 = 0xb9;
sbit px0 = 0xb8;
/* p3 */
sbit rd = 0xb7;
sbit wr = 0xb6;
sbit t1 = 0xb5;
sbit t0 = 0xb4;
sbit int1 = 0xb3;
sbit int0 = 0xb2;
sbit txd = 0xb1;
sbit rxd = 0xb0;
/* scon */
sbit sm0 = 0x9f;
sbit sm1 = 0x9e;
sbit sm2 = 0x9d;
sbit ren = 0x9c;
sbit tb8 = 0x9b;
sbit rb8 = 0x9a;
sbit ti = 0x99;
sbit ri = 0x98;
instric.h中定义的内函数有:
extern void _nop_ (void);
extern bit _testbit_ (bit);
extern unsigned char _cror_ (unsigned char, unsigned char);
extern unsigned int _iror_ (unsigned int, unsigned char);
extern unsigned long _lror_ (unsigned long, unsigned char);
extern unsigned char _crol_ (unsigned char, unsigned char);
extern unsigned int _irol_ (unsigned int, unsigned char);
extern unsigned long _lrol_ (unsigned long, unsigned char);
extern unsigned char _chkfloat_(float);
extern void _push_ (unsigned char _sfr);
extern void _pop_ (unsigned char _sfr);
此程序使用了内函数实现,也可以自己用移位操作实现。
#include
void delay(unsigned char ms)
{ unsigned int i;
while(ms--)
{
for(i=0;i<120;i++);
}
}
main()
{unsigned char led,mid1,mid2;
led=0xfe;
p0=led;
while(1)
{mid1=led>>7;
mid2=led<<1;
led=mid1|mid2;
delay(250);
p0=led;
}