#include<intrins.h> // 包含_nop_() // 大约1us
sbit P20=P2^0
void Delayus(unsigned int time)//延时时间为 1us * x晶振是11.0592M
{
unsigned int _y
for(_y = 0_y <time_y++)
_nop_()
}
void main(void)
{
while(1)
{
P20=0 //点亮LED灯
Delayus(50000)
P20=1 //点灭LED灯
Delayus(50000)
}
}
给敏大卜你个头桥穗,按照你给的延时改下就行了
#include //51系列单片机定义文件
#define uchar unsigned char //定义毕余无符号字符
#define uint unsigned int //定义无符号整数
void delay(uint)//声明延时函数
void main(void)
{
uint i
uchar temp
while(1)
{
temp=0x01
for(i=0i<8i++) //8个流水灯逐个闪动
{
P1=~temp
delay(100)//调用延时函数
temp<<=1
}
temp=0x80
for(i=0i<8i++) //8个流水灯反向逐个闪动
{
P1=~temp
delay(100)//调用延时函数
temp>>=1
}
temp=0xFE
for(i=0i<8i++) //8个流水灯依次全部纯数凳点亮
{
P1=temp
delay(100)//调用延时函数
temp<<=1
}
temp=0x7F
for(i=0i<8i++) //8个流水灯依次反向全部点亮
{
P1=temp
delay(100)//调用延时函数
temp>>=1
}
void delay(uint t) //定义延时函数
{
register uint bt
for(tt--)
for(bt=0bt<255bt++)
}
扩展资料
51单片机流水灯做旅的源代码如下
#include<reg51.h>
#include<intrins.h>
void delay(int a)
{
int i
while(a--)for(i=0i<110i++)
}
main()
{
int i
while(1)
{
P0=0xfe
for(i=0i<8i++)
{
P0=_crol_(P0,1)
delay(500)
}
}
}
4只LED为共阳极连接,即单片机输出端为低电平时即可点亮LED。用最直接旅此的方式实现流水灯
ORG 0000H
START:MOV P1,#01111111B 最下面的LED点亮
LCALL DELAY 延时60秒
LCALL DELAY 延时60秒
MOV P1,#10111111B 最下面第二个的LED点亮
LCALL DELAY 延时60秒
LCALL DELAY 延时60秒
MOV P1,#11011111B 最下面第三个的LED点亮 (以下省略)
LCALL DELAY
LCALL DELAY 延时60秒
MOV P1,#11101111B
LCALL DELAY
LCALL DELAY 延时60秒
MOV P1,#11110111B
LCALL DELAY
LCALL DELAY 延时60秒
MOV P1,#11111011B
LCALL DELAY 延时60秒
LCALL DELAY 延时60秒
LCALL DELAY 延时60秒
LCALL DELAY 延时60秒
LCALL DELAY 完成第一次循环点亮,延时约0.25秒
AJMP START 反复循环
延时子程序,12M晶振延时约250毫秒
DELAY: 大约值:2us*256*256*2=260ms,岁禅也可以认为为250ms
PUSH PSW现场保护指令(有时可以不加)
MOV R4,#240
L3: MOV R2 ,#00H
L1: MOV R3 ,#00H
L2: DJNZ R3 ,L2最内层循环:(256次)2个周期指令(R3减一,如果比1大,则转向L2)乎镇尘
DJNZ R2 ,L1中层循环:256次
DJNZ R4 ,L3外层循环:240次
POP PSW
RET
END
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)