大家帮我看看这个51汇编程序

实现8个LED跑马灯1秒闪一个,按键后反向!!!!ORG0000HLJMPMAINORG0003HLJMPINTORG000BHLJMPDELAYORG0040HMAIN... 实现8个LED跑马灯1秒闪一个,按键后反向!!!!
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INT
ORG 000BH
LJMP DELAY
ORG 0040H
MAIN: SETB EX0
SETB IT0
SETB EA
SETB ET0
SETB TR0
MOV R7,#20
MOV A,#01H
SETB 28H
START1: MOV P1,A
RL A
ACALL DELAY
CJNE R7,#0,START1
MOV R7,#20
RL A
JNB 28H,START2
SJMP START1
START2: RR A
MOV P1,A
ACALL DELAY
CJNE R7,#20,START2
MOV R7,#20
RR A
JB 28H,START1
SJMP START2
DELAY: MOV TH0,#3CH
MOV TL0,#0B0H
DEC R7
RETI
ORG 0400H
INT: CPL 28H
RETI
END
展开
 我来答
意法半导体(中国)投资有限公司 2023-06-12
展开全部
MAIN: MOV SP,#50H MOV DPTR,#TAB;读入字模指针 MOV 30H,DPL; 存起来 ;堆栈低8位 MOV 31H,DPH ;堆栈高8位 MOV 32H,30H;再记录指针,留作移动了多少位的判断 用。 MOV 3H,31H ;3H记录字模数据的高位地址 INC 3H;3H高位地址+5,表示数据有5X256列之多。 ROL: MOV R2,#01H;设扫描次数 INI1: MOV DPL,30H;这段是扫描一次32列 MOV DPH,31H MOV R4,#32 MOV R3,#0 LOP1 P1,R3 CLR A MOVC A,@A+DPTR MOV P0,A INC DPTR CLR A MOVC A,@A+DPTR MOV P2,A INC DPTR CAL DELAY INC R3 DJNZ R4,LOP1 DJNZ R2,INI1;这条预留扫描次数用可以调整速度 MOV DPL,3…
种卿iI
2010-06-08
知道答主
回答量:24
采纳率:0%
帮助的人:0
展开全部
应该下载到板子上运行不正确,问题出在定时器0中断上,在第一次调用delay时给定时器0付初职后立刻给r7减一返回,无法起到延时作用!且每次调用delay都会赋初值!定时器无法正常工作,建议回去在认真学下定时器中断用法!且JB.JNB是布尔指令,只能对直接位寻址使用。把定时器中断去掉,把delay程序换成一个使用DJNZ延时的程序!延时一秒,把r7语句去掉,把第二个rr,rl去掉!28h换成28h.0就可以啦!具体程序如下:ORG 0000H LJMP MAIN ORG 0003H LJMP INT ORG 0040H MAIN: SETB EX0 SETB IT0 SETB EA MOV A,#01H SETB 28H.0 START1:MOV P1,A RL A Sjmp DELAY JNB 28h.0,START2 SJMP START1 START2: RR A MOV P1,A CALL DELAY JB 28H,START1 SJMP START2 INT: CPL 28H.0 RETI DELAY:MOV R3,#10 DEL3:MOV R4,#200 DEL2:MOV R5,#125 DEL1:NOP NOP DJNZ R5,DEL1 DJNZ R4,DEL2 DJNY R3,DEL3 RET END
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
意法半导体(中国)投资有限公司
2023-06-12 广告
单片机汇编程序是用汇编语言编写的程序,用于控制单片机的操作。汇编语言是一种比较接近计算机硬件语言的低级语言,相对于高级语言来说更容易理解和实现。下面是单片机汇编程序的基本步骤:1. 将代码和数据汇编到规定的段中。2. 在存储器中用未初始化的... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
做而论道
高能答主

2010-06-08 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3.2万
采纳率:86%
帮助的人:8816万
展开全部
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP X0_INT
ORG 000BH
LJMP T0_INT
MAIN:
SETB EX0
SETB IT0
SETB TR0
SETB ET0
SETB EA
MOV TMOD,#01H
MOV TH0, #3CH
MOV TL0, #0B0H
MOV R7, #20
MOV A, #1
;--------------------------------
LOOP:
JB 28H, _RR
_RL: RL A
SJMP OUT
_RR: RR A
;--------------------
OUT: MOV P1, A
CJNE R7, #0, $
MOV R7, #20
SJMP LOOP
;--------------------------------
T0_INT:
MOV TH0, #3CH
MOV TL0, #0B0H
DEC R7
RETI
;--------------------------------
X0_INT:
CPL 28H
RETI
;--------------------------------
END

上述程序,经过PROTEUS仿真,正确无误。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
47okey
2010-06-08 · TA获得超过1.2万个赞
知道大有可为答主
回答量:5900
采纳率:75%
帮助的人:2819万
展开全部
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INT
ORG 000BH
LJMP DELAY
ORG 0040H
MAIN: MOV TMOD,#01H ;定时工作方式1,16位计数器。你的程序无此条,即TMOD=0,O为13位计数。时间太短
SETB EX0
SETB IT0
SETB EA
SETB ET0
SETB TR0
MOV TH0,#3CH ;初值
MOV TL0,#0B0H
MOV R7,#20
MOV A,#01H
SETB 28H
START1: MOV P1,A
;RL A
;ACALL DELAY
CJNE R7,#0,START1 ;反复循环,等待定时中断
MOV R7,#20
RL A
JNB 28H,START2
SJMP START1
START2: ;RR A
MOV P1,A
;ACALL DELAY ;DELAY是定时中断子程序,只能由中断时调用
CJNE R7,#0,START2 ;CJNE R7,#20,START2
MOV R7,#20
RR A
JB 28H,START1
SJMP START2
DELAY: MOV TH0,#3CH
MOV TL0,#0B0H
DEC R7
RETI
ORG 0400H
INT: CPL 28H
RETI
END
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式