USE IEEE.STD_LOGIC_1164.ALL
--USE IEEE.STD_LOGIC_ARITH.ALL
--USE IEEE.STD_LOGIC_UNSIGNED.ALL
entity led is
port(led1,led2,led3,led4:out bitclk:in bit)
end led
architecture led_blink of led is
begin
process(clk)
variable s1:integer:=0
variable s2:integer:=0
begin
i1:if (clk'event and clk='1') then
s1:=s1+1
if(s1>20000) then
s2:=s2+1
if(s2>2500 and s2<明清5000) then
led1<='1'
led2<='0'
led3<='1'
led4<='0'
elsif(s2>=5000) then
led1<='搏扒0'
led2<='1'激银前
led3<='0'
led4<='1'
s2:=0
end if
s1:=0
end if
end if i1
end process
end led_blink
verilog 语言相对于VHDL语言要简单些。如果你用VHDL不销宴或会可以试试祥宏verilog语言而且你可以多看亏伍一下例子。
你的这个应该不难,估计会有现成的或是接近的
可以用外部中断计数,来实现流水灯的正转、暂停、以及反转和爆闪。。这是我前几天写的一个这样的程序,楼主可以结合protues 画图仿真,宏仔中注意程序中所用到的IO端口就行戚握了。#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
uchar a,b
void delay(uchar z)
{
uchar i,j,k
for(i=zi>0i--)
for(k=20k>0k--)
for(j=110j>蔽山0j--)
}
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
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)