给你个参考;
void delay();
main()
{
while(1){ //设P10引脚去驱动LED,
P1=0xff;
delay(500);//延时500mS
P1=0xfe; //P10引脚反复输出高电平,低电平,LED即闪烁;
delay(500);//延时500mS
}
#include<reg51h> // 头文件 ;
sbit LED =P0^7; // 定义LED接至P07 ;
#define uint unsigned int
void delay(uint x); // 声明延时函数;
/主函数/
void main()
{
while(1)
{
LED = 0; // 输出低电平,点亮LED;
delay(50); // 延时;
LED = 1; // 输出高电平,熄灭LED;
delay(50); // 延时;
}
}
/延时函数/
void delay(uint x)
{
uint i,j;
for(i=0;i<x;i++)
for(j=0;j<1200;j++);//大约10 ms;
}
20赫兹闪烁电路程序可以这样写:对于20赫兹闪烁电路程序,解决方案还是很多的,从解决的手段来说可以用模拟电路的分离电子元器件来实现也可以用数字电路来实现还可以用单片机的编程来实现总之只要开动脑筋办法还是能找出一些的。在学习模拟电路时会做过这种电路,通过四个电阻以及三极管,发光二极管LED和10微法的电容两个就可以构成一个安一定频率闪烁的电路,发光LED闪烁的频率与电阻和电容的选择有密切关系,我们只要选择合适的电阻就能够达到闪烁频率为2Hz的要求。这一种电路我们称为无稳态多谐振荡器。
这个程序很简单,我觉得你自己在我的指导下也可以写出来,这样可以增加你的记忆,也可以多学一点东西。就是不明白为什么要从4000H开始执行,这样你的电路就要增EPROM(或EEPROM)了。
程序你可以这样写,
1、让一位亮(MOV P10,#0H )
2、闪的次数(MOV R1,#5H ) 命令后面不写了
3、调用2秒延时程序。
4、取反 。
5、调用2秒延时程序。
6、减一判断R1是否到0,没到返回4,到了向下执行。
7、左移一位。
8、转移到2。这样就完成一个循环了。
至于仿真软件proteus 那就简单了,你自己画,如果不会画,找一个图自己修改一下就可以了。
这样写好玩吧?我也好长时间没有用汇编写了,命令有一点小的瑕疵(取反的位数),你可以自琢磨一下再写。
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV A,#0FEH
MOV R2,#10
LOOP:
MOV P0,A
LCALL DELAY
MOV P0,#0FFH
LCALL DELAY
DJNZ R2,LOOP
MOV R2,#10
RL A
SJMP LOOP
DELAY:
MOV R3,#200
DLY:
MOV R4,#250
DJNZ R4,$
DJNZ R3,DLY
RET
END
以上就是关于用c语言写一个由单片机PO口的一个引脚控制一个发光二极管闪烁全部的内容,包括:用c语言写一个由单片机PO口的一个引脚控制一个发光二极管闪烁、单片机控制发光二极管闪烁、20赫兹闪烁电路程序怎么写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)