用51单片机?
#include<reg52h>
sbit LED0=P1^0;
sbit LED1=P1^1;
sbit LED2=P1^2;
sbit LED3=P1^3;
sbit LED4=P1^4;
sbit LED5=P1^5;
sbit LED6=P1^6;
sbit LED7=P1^7;
void delay(int x)
{
int y,z;
for(y=x;y>0;y--)
for(z=110;z>0;z--);
}
void mian()
{
char i;
for(i=0;i<20;i++)
{
P1=0xff;
delay(500);
P1=0;
delay(500);
}
}
8个 led 接在P1口
LED BIT P10
KEY BIT P11
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
CLR 00H
MAIN1:
JB KEY,LOOP
JNB KEY,$
CPL 00H
LOOP:
JNB 00H,LOOP1
CPL LED
LCALL DELAY
SJMP MAIN1
LOOP1:
SETB LED
SJMP MAIN1
DELAY:
MOV R2,#200
DLY:
MOV R3,#250
DJNZ R3,$
DJNZ R2,DLY
RET
END
假设用的是51单片机的P1口,LED灯是低电平点亮,连接P10,那么可以参考如下思路:
初始化:
P1 =0xFF;
P10=0;点亮
delay_s(30);延时30秒
P10=1;熄灭
while(1)
{
delay_s(1);延时1秒
P10=0;点亮
delay_s(1);延时1秒
P10=1;熄灭
}
#include<reg52h>
sbit P10=P1^0;//控制LED闪烁
unsigned char count=0;//计数变量
void main()
{
TMOD = 0x01; //设定时器0为模式1,16位模式
TH0=0xdc;
TL0=0x00; //设定时值为10ms,此时晶振频率是110592MHZ
//若晶振频率是12MHZ,则初值应为 TH0=0xd8; TL0=0xf0;
ET0 = 1; //定时器0中断打开
EA = 1; //允许CPU中断
TR0 = 1;//启动定时器0
while(1)
{
if(count==40) //04秒时间是否到
{
count=0; //计数变量清零,为下一次计数做准备
P10=!P10; //IO口取反,即LED亮灭变化
}
}
}
//定时器0中断处理子程序
void Time0() interrupt 1 using 0
{
TH0=0xdc;
TL0=0x00; //设定时值为10ms
count++; //计数加一
}
以上就是关于求大仙,给出“8个LED的闪烁控制,要求亮0.5s,灭0.5s,不断闪烁20次。”的C语言编程程序全部的内容,包括:求大仙,给出“8个LED的闪烁控制,要求亮0.5s,灭0.5s,不断闪烁20次。”的C语言编程程序、求一个51单片机的程序:一个按键控制led灯闪烁,就是按一下灯闪,再按灯就灭了、单片机控制LED灯常亮30秒后闪烁怎么编程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)