8个灯以此点亮c语言程序,单片机流水灯C语言程序(8个灯,依次点亮每个灯,延时500MS)...

这是一个使用C语言编写的单片机程序,用于实现8个LED灯依次点亮的效果,每盏灯点亮500毫秒。程序通过循环右移操作来逐个点亮P0口的LED,并利用内部延时子程序实现延迟效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值