谁有单片机中3个led灯闪烁控制的流程图与汇编语言,c语言程序

谁有单片机中3个led灯闪烁控制的流程图与汇编语言,c语言程序,第1张

可以用外部中断计数,来实现流水灯的正转、暂停、以及反转和爆闪。。这是我前几天写的一个这样的程序,楼主可以结合protues 画图仿真,注意程序中所用到的IO端口就行了。

#include<reg52h>

#include<intrinsh>

#define uchar unsigned char

uchar a,b;

void delay(uchar z)

{

  uchar i,j,k;

  for(i=z;i>0;i--)

  for(k=20;k>0;k--)

  for(j=110;j>0;j--);

}

 void begain()

 {

EA=1;

EX0=1;

IT0=1;

    }

void main()

{  a=b=0;

   P0=0xfe;

   begain();

   while(1)

{

if(a==1)

{

  P0=_crol_ (P0,1);

   delay(50);

}

  if(a==3)

    {

  P0=_cror_(P0,1);

   delay(50);

}

    if(a==4)

{

 P0=0x00; 

 delay(50);

 P0=0xff;

 delay(50);

 P0=0xfc;

 

}

if(a==5)

{

a=1; 

  

}

}

}

void int0() interrupt 0

{

a++;

if(a==5)

{

a=1; 

  

}

}

module ceshi2(clk,rst,led); //记得改变模块名,跟你的工程名相同

input rst,clk;

output [20:0]led;

//////////////////////基于verilog编写

reg[20:0]led;

reg[25:0]i;

always@(posedge clk or negedge rst)//50m的时钟,20ns的周期,要制造05s间隔

begin

if(!rst)

i<=25'd0;

else if(i==25'd24999999) //05s间隔变换,记数25000000个周期

i<=25'd0;

else

i<=i+1'b1;

end

always@(posedge clk or negedge rst) //控制灯的闪烁

begin

if(!rst)

led<=20'b1111_1111_1111_1111_1111;

else if(i==25'd24999999)

led<=~led;

else

led<=led;

end

endmodule

#include <reg52h>     //包括一个52标准内核的头文件

#define uchar unsigned char

/主函数/

void timer0();

void main() // 主程序

{

TMOD=0x01; //定时器0工作方式1

EA=1;

ET0=1; //定时器0中断

TR0=1; //启动定时器0

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

while(1);  //程序循环

}

/定时器0中断/

void timer0() interrupt 1

{

uchar t;//定义变量

TF0=0;//定时器清0

t++; //中断一次累加1

if(t==20) //预置值,溢出20次就是1秒钟,晶振12MHZ

{

t=0;

P3=~P3; //反转LED灯的亮灭

}

}

//

以上就是关于谁有单片机中3个led灯闪烁控制的流程图与汇编语言,c语言程序全部的内容,包括:谁有单片机中3个led灯闪烁控制的流程图与汇编语言,c语言程序、在fpga上怎么写一个20个led灯闪烁的程序、求51单片机定时LED闪烁程序代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9692247.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存