掌握 51 汇编语言设计和调试方法 掌握 protues 软件平台及实验箱的操作步骤
在单片机外部扩展 8KB RAM 芯片 6264,其地址范围为 0000H~1FFFH。将片内程序存储空间中从 500H 开始的存放的 15 个数据转存到外部 RAM 100H 开始的单元。请编写程序实现,并查看并给出相关地址空间的内容。
1、图 1-1 电路分析: (1) P0 口分时复用为数据线和地址线;74LS373 地址锁存器,其使能端 LE 由 ALE(地址 锁存控制信号)控制;74LS373 的 Q 端接外部 RAM6264 的地址端。当访问外部存储单元时,ALE 信号有效,将地址值锁存于 74LS373。 (2) 访问外部存储单元 MOVX 指令,是双机器周期指令。第 1 个机器周期将外部存储单元的地址从 P0 与 P2 口输出,并使 ALE 信号有效,将地址锁存;第 2 个机器周期,取消ALE 信号,使 P0 口专用于传送数据,同时发读/写信号。
2、编程提示: (1) 程序中定义的数据存放在内部程序存储空间 ROM 中。 ORG 500H TAB:DB 11h,22h,33h、、、、0AAH、0BBH、、、0FFh (2) 读取程序存储空间 ROM 指令: MOVC A,@A+DPTR (3) 读取外部存储空间 RAM 指令: MOVX A,@R0 ; P2 存放地址的高 8 位(要给 P2 赋值),R0 存放地址的低 8 位 MOVX A,@DPTR ; 16位地址存于 DPTR 中 读取内部存储空间 RAM 指令: MOV R1,60H MOV @R1,A
ORG 0000H
JMP Start
ORG 0100H
Start:
MOV DPTR,#TAB ;数据指针指向定义字节的首地址
MOV P2,#01H ;P2.0为高电平
MOV R0,#0 ;R0中 传输数据个数
L0:
MOV A,#0 ;累加器A中给初值0
MOVC A,@A+DPTR ;读取内部程序存储空间ROM 指令
MOVX @R0,A ;累加器A中内容给外部RAM
INC DPTR ;数据指针加1
INC R0 ;统计数据个数加1
CJNE R0,#10H,L0 ;不相等则转移 不等于16转到L0 继续将数据存到外部RAM
ORG 500h ;内部ROM从500H开始的
TAB: DB 11H,22H,33H,44H,55H,66H,77H,88H,99H,0AAH,0BBH,0CCH,0DDH,0EEH,0FFH ;定义字节
END
仿真结果如下:
用 P1 口控制 LED 灯,按以下流水灯的形式显示: 1、LED 灯从左到右(或从右到左)单方向流水显示(只有一个灯亮),重复往返。
ORG 0000H
JMP Start
ORG 0100H
START:
MOV R0,#08H ;设置循环8次
MOV A,#0FEH ;正向流水灯a=1111 1110
LOOP1:
MOV P1,A ;点亮第一个灯p1=a=1111 1110(共阳极,低电平亮)
LCALL DELAY ;延时
RL A ;A中内容左环移一位 1111 1101
DJNZ R0,LOOP1 ;减1不为0,则跳转循环
LJMP START ;依次点亮8只灯后 长跳转指令LJMP->到START 又开始循环点亮
DELAY: ;延时子程序
MOV R7,#0FFH
D1: MOV R6,#0AEH
D2:
NOP
NOP
DJNZ R6,D2
DJNZ R7,D1
RET
END
仿真效果如下:
2、LED 灯从左到右然后从右到左双方向流水显示(只有一个灯亮),重复往返。
ORG 0000H
JMP Start
ORG 0100H
Start:
MOV R0,#08H
MOV A,#0FEH ;正向流水灯
LOOP1:
MOV P1,A ;点亮P1口低电平的灯
LCALL DELAY ;延时
RL A ;A左环移1位
DJNZ R0,LOOP1
MOV R0,#08H
MOV A,#07FH ;反向流水灯
LOOP2:
MOV P1,A ;点亮P1口低电平的灯
LCALL DELAY
RR A ;A右环移1位
DJNZ R0,LOOP2
LJMP START
DELAY: MOV R7,#0FFH ;延时子程序
D1: MOV R6,#088H
D2:
NOP
NOP
DJNZ R6,D2
DJNZ R7,D1
RET
END
仿真效果如下:
实现双闪灯
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
CLR P1.0
LCALL DELAY
SETB P1.0
LCALL DELAY
CLR P1.7
LCALL DELAY
SETB P1.7
LCALL DELAY
LJMP MAIN
DELAY: ;延时子程序
MOV R7,#0FFH
D1: MOV R6,#0A8H
D2:
NOP
NOP
DJNZ R6,D2
DJNZ R7,D1
RET
END
仿真效果如下: