求个89c51单片机 汇编语言设计的LED跑马灯的程序

8个LED灯轮流点亮,点亮间隔为1秒。定时方法采用8051定时器,分别使用查询和中断编写两个程序。P1作输出端口,接LED灯。一定要用汇编语言的... 8个LED灯轮流点亮,点亮间隔为1秒。
定时方法采用8051定时器,分别使用查询和中断编写两个程序。
P1作输出端口,接LED灯。
一定要用汇编语言的
展开
 我来答
yulunna
2010-10-11 · TA获得超过408个赞
知道小有建树答主
回答量:176
采纳率:50%
帮助的人:112万
展开全部
查询方式:
ORG 0000H
AJMP MAIN
MAIN:
MOV P1,#01H
MOV R0,#8
MOV A,P1
XU: RL A
MOV P1,A
ACALL DELAY
DJNZ R0,XU
AJMP MAIN

DELAY:
MOV R0,#0FFH
ONE:MOV R1,#0FFH
TWO:MOV R2,#02H
THE:DJNZ R2,THE
DJNZ R1,TWO
DJNZ R0,ONE(将近1S)
RET
END
中断方式:
org 0000h ;程序从0000开始运行
jmp init;跳到主程序
init:
mov ie,#10000001b ;中断使能
mov ip,#00000001b ;中断优先
mov tcon,#0000000b ;中断为电平触发
main: ;主程序循环点亮
mov p1,#00h ;全亮
lcall delay ;延时一段时间
mov a,#0feh ;每次只亮一个灯。
loop: mov p1,a ;输出到p1
lcall delay ; 延时
rl a ;循环左移。
ajmp loop ; 跳转main继续循环

delay: mov r5,#20 ;延时子程序1闪烁灯调用
d1:mov r6,#20
d2: mov r7,#250
djnz r7,$
djnz r6,d2
djnz r5,d1(时间此处可自行设置)
wc5025
2010-10-10 · 超过16用户采纳过TA的回答
知道答主
回答量:63
采纳率:0%
帮助的人:39.5万
展开全部
我只有C语言编写的,你可以借鉴下!
#include <reg52.h>

#define uint unsigned int
#define uchar unsigned char

sbit DAT164 =P2^5;
sbit CLK164 =P2^4;
sbit b0=P0^0;
sbit b1=P0^1;

uchar sec,sec1,sec2,LED,a;

uchar code LEDMAP[] = {
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xA7,0xA1,0x86,0x8E
};//定义显示数组

void delay(uchar z)//延时子程序
{
uchar x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

void send164(void) //往164中送数据
{
uchar data j;
for (j = 0; j < 8; j++)
{
if (LED & 0x80)
DAT164 = 1;
else DAT164 = 0;
CLK164 = 1;
CLK164 = 0;
LED <<= 1;
}
}

void init(void)//程序初始化
{
TMOD=0x01;
TH0=(65536-2500)/256;
TL0=(65536-2500)%256;
IE=0x82;
TR0=1;
sec=0;
sec1=0;
sec2=0;
a=0;
}

void display(void)//显示子程序
{

LED=LEDMAP[sec2];//十位显示
send164();
b0=0;
delay(5);
b0=1;

LED=LEDMAP[sec1];//个位显示
send164();
b1=0;
delay(5);
b1=1;
}

void main(void)//主程序
{
init();
while(1)
display();

}

void time() interrupt 1 using 3//定时10毫秒
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
a++;
if(a==10)//如果到100毫秒
{
a=0;
sec++;//分加
sec1=sec%10;//送给秒个位
sec2=sec/10;//送给秒十位
if(sec==99)//如过到99则为0
sec=0;
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
做而论道
高能答主

2010-10-11 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.1亿
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式