单片机交流
直播中

刘强

8年用户 1261经验值
私信 关注
[问答]

protues软件平台及实验箱的操作步骤是怎样的?

protues软件平台及实验箱的操作步骤是怎样的?

回帖(1)

向婧宇

2021-10-8 15:31:38
一、实验目的
掌握 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


仿真效果如下:


举报

更多回帖

发帖
×
20
完善资料,
赚取积分