找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9573|回复: 5
打印 上一主题 下一主题
收起左侧

[求助]rom中0000h-0002h单元存转移放指令问题

[复制链接]
跳转到指定楼层
楼主
ID:14643 发表于 2009-6-24 16:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我看了很多网上许多汇编实验程序,有很多只写 

ORG 0

START: CLR P1.0

LCALL DELAY

SETB P1.0

LCALL DELAY

LJMP START

DELAY: MOV R5,#20

D1: MOV R6,#20

D2: MOV R7,#248

DJNZ R7,$

DJNZ R6,D2

DJNZ R5,D1

RET

END不知是怎样放置的,恳请哪位好心人给予指点,我在此谢谢了!

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:14654 发表于 2009-6-24 19:33 | 只看该作者

我看是一个方波程序吧!

回复

使用道具 举报

板凳
ID:11838 发表于 2009-6-24 21:01 | 只看该作者

ORG 0          ;设置程序的初始地址

START: CLR P1.0   ;设置底电平有效

LCALL DELAY     ;调用延迟

SETB P1.0

LCALL DELAY

LJMP START

DELAY: MOV R5,#20   ;延迟子程序

D1: MOV R6,#20

D2: MOV R7,#248

DJNZ R7,$

DJNZ R6,D2

DJNZ R5,D1

RET

你的这个问题很怪啊!rom中0000h-0002h单元存转移放指令问题?转移指令AJMP LJMP 你只要记以下AJMP 的转移空间是2KB,而LJMP的转移空间是64KB
LCALL是跳转指令

你这个程序总的实现功能是P1.0口的高低电平的轮流转换,这个可以控制接P1.0口的LED灯的闪烁,中间代码部分就是让P1.0口有高低电平,从而实现要实现电平的转换,实现灯的闪烁,应该有个延时,所以应该调用延时程序。

回复

使用道具 举报

地板
ID:14643 发表于 2009-6-25 20:48 | 只看该作者
朋友,我不理解的是:上述程序具体是放入哪些程序存储单元中,0003h-002a可用吗?
回复

使用道具 举报

5#
ID:14282 发表于 2009-6-26 18:03 | 只看该作者
如果指令前面是这样的:
ORG    0000H
LJMP    START
ORG     0030H
START:  CLR  P1.0
............


END
这样的话,你的主程序就是从0030H单元开始存放,
而像你写的那样,那指令直接从0000H单元开始存了,也可以正常运行,但是这样的话,你就不能用单片机内部中断资源。


0000H
0001H
0002H
这三个连续单元是存放LJMP  START 这条指令的机器码。你可以从书上查到该指令是三字节指令,指得就是其在ROM中占用三个字节单元。

0003H---000AH:这8 个字节单元是存放外部中断0的入口,(但是一般的中断服务程序比较长,在次位置一般都是放一条跳转指令,入AJMP SER1等标号有自己定义)
000BH---0012H:这8 个字节单元是存放外部中断1的入口
0013H---001AH:外部计数T0
001BH----0022H:外部计数T1
0023H后面8个连续单元是用来存串口中断入口地址
,这是单片机内部固定的资源配置,你不用中断,那么从0000,0001,0002,0003,0004,0005,。。。。。。自然可以存程序主程序,照样执行,但是一般的写程序的习惯,主程序往往都是从0030H单元从,有的甚至定义在0100H,或者是1000H单元。程序存储位置的定义是用ORG.建议你看看伪指令部分。
学习单片机,基本指令掌握了,多看看比较完整才程序。慢慢就有认识了。
回复

使用道具 举报

6#
ID:14643 发表于 2009-6-30 17:05 | 只看该作者
你为我解了困惑,我非常感激,在此表示感谢!祝你好运!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表