实验一 MCS51初 步

一、实验目的

* 初步学习和掌握 MCS-51 的体系结构和指令系统;
* 学习使用 Proteus 软件进行开发和仿真调试的过程;
* 学习使用汇编语言开发程序

二、实验设备

* Proteus 仿真软件

三、实验内容

* 学习 MCS51 的基本体系结构
* 学习 Proteus 软件的基本使用

四、实验内容

开关量输入和数码管显示
* 在原理图中绘制四路开关输入、一个LED 和一个7 段数码管
* 开关可以选择“ SW-SPDT ”(单刀双掷)或者“SW-SPST ”(单刀单掷)。
* 7 段数码管可以选择“ 7SEG-COM-* ”, * 表示共阴极或者共阳极(以及颜色)。
* 开关和数码管需要连接到合适的 CPU 引脚上
将上面原理图看作是一个投币机的雏形,编写汇编程序,完成以下功能:
* 每个开关看作是一个投币口,取值为高,表示投入了对应数值的硬币。四个开关的取值分别
1 1 2 5
* 在数码管上显示已投币值总数
* 如果已投币值总数超过给定值(在程序中设定 ),则LED 发光管闪烁,否则不亮

五、实验步骤

仿真电路连接
参考代码
$NOMOD51
$INCLUDE (8051.MCU)

      ; Reset Vector
      org   0000h
      jmp   Start

      org   0100h
Start:	
      MOV DPTR, #TABLE;将TABLE的首地址送到DPTR寄存器
begin:
      MOV A, #0
      MOV C, P1.0
      JNC  LABEL1;若C为0则跳转到判断下一个开关
      ADD A, #1;开关SW1对应取值为1
LABEL1:
      MOV C, P1.1
      JNC LABEL2
      ADD A, #1;开关SW2对应取值为1
LABEL2:
      MOV C, P1.2
      JNC LABEL3
      ADD A, #2;开关SW3对应取值为2
LABEL3:
      MOV C, P1.3
      JNC LABEL4
      ADD A, #5;开关SW4对应取值为5
LABEL4:
      MOV R1, A;先将总数保存到R1
      CLR CY
      SUBB A, #6
      JC NEXT5;若总数小于6(发生借位)则跳转到NEXT5
      CPL P1.7;取反,达到闪烁的效果
NEXT5:
      MOV A, R1
      MOVC A, @A+DPTR;查表
      MOV P0, A;输出到P0口
      
      CALL DELAY
      jmp BEGIN
      
DELAY:
   MOV R6, #0FFH
DELAY_1:
   MOV R7, #0FFH
   DJNZ R7, $;R7减一,若不为零则继续执行该指令
   DJNZ R6, DELAY_1
   RET
   

TABLE:
   DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H, 7FH, 6FH, 77H, 7CH, 39H, 5EH, 79H, 71H
;====================================================================
      END

  • 12
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值