VHDL语言编程,让led3灯以1HZ的频率闪烁,直接在我的上面修改即可

VHDL语言编程,让led3灯以1HZ的频率闪烁,直接在我的上面修改即可,第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;

}

}

ORG000H\x0d\LJMPMAIN\x0d\ORG000BH;定时器0中断入口\x0d\LJMPLOOP1\x0d\ORG0100H\x0d\MAIN:\x0d\MOVTMOD,#01H;设置定时器工作模式\x0d\MOVTL0,#0EFH;设置定时器初值\x0d\MOVTH0,#0D8H\x0d\SETBEA;打开总中断\x0d\SETBET0;打开定时器0中断\x0d\SETBTR0;启动定时器0\x0d\MOVP0,#0FFH\x0d\MOVR0,#200;延时参数\x0d\LOOP:\x0d\CJNER0,#0,LOOP;延时\x0d\MOVA,#0EFH\x0d\NEXT:\x0d\MOVP0,A;送值\x0d\MOVR0,#50;延时参数\x0d\EXIT:\x0d\CJNER0,#00H,EXIT;延时一会儿\x0d\RLA;A循环左移根据程序分许,该程序完成流水灯功能\x0d\LJMPNEXT\x0d\\x0d\LOOP1:;定时器0中断函数\x0d\MOVTL0,#0EFH;定时器初值\x0d\MOVTH0,#0D8H;定时器初值\x0d\DECR0;\x0d\RETI;中断返回\x0d\END\x0d\有疑问可以追问。

module run_led(clk,rst,led); //module port

input clk;//system clock

input rst;//system reset

output [7:0] led; // 8bits led

reg [7:0] led;

reg [25:0] count;

always @ (posedge clk ) begin

if(rst || count[25]==1) begin

count<=26'b0;

end

else

count<=count+1;

end

always @ (posedge clk) begin

if(rst)

led<=8'b0000_0001;

else begin

if(count[25]==1) begin

led<=((led<<1)+1);

end

end

end

endmodule

这是我自己写的,实验正确符合楼主要求!嘿嘿。。。

用计数器计时即可

LIBRARY IEEE;

USE IEEE。STD-LOGIC-1164。ALL;

ENTITY NAME IS

PORT(---------);

END NAME;

ARCHITECTURE ARC OF NAME IS

SIGANL SIG:---------;

BEGIN

IF ---- THEN 判断条件1为真

------;1灯亮其余不亮

ELSIF ---- THEN 判断条件2为真

------;2灯亮其余不亮

---------;

END ARC;

#include

#defineucharunsignedchar

#defineuintunsignedint

voidDelayms(uintx)

{

uinti,j;

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

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

}

voidmain(){

uchari,j;

while(1)

{

j=0x01;//8个流水灯逐个闪动

for(i=0;i

{

P0=~j;

Delayms(300);

j

}

j=0x80;//8个流水灯反向逐个闪动

for(i=0;i

{

P0=~j;

Delayms(300);

j>>=1;

}

}

}

以上就是关于VHDL语言编程,让led3灯以1HZ的频率闪烁,直接在我的上面修改即可全部的内容,包括:VHDL语言编程,让led3灯以1HZ的频率闪烁,直接在我的上面修改即可、单片机流水灯汇编程序是怎样的、用Verilog HDL语言设计流水灯实验程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存