实验(二):单片机数据区传送程序设计

这篇具有很好参考价值的文章主要介绍了实验(二):单片机数据区传送程序设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、实验目的与任务

        实验目的:

                1. 掌握单片机C语言程序设计和调试方法;

                2. 了解单片机RAM中的数据操作。

        任务:

                1.根据要求编写程序,并写出原理性注释;

                2.  检查程序运行的结果,分析一下是否正确;

                3. 完成所建工程的仿真及调试。

二、实验内容

        将单片机片内存储器存储区首地址设置为60H、片外存储器存储区首地址设置为4000H,存入片内存储区内容为04H-14H共17个字节 ,读取片内首地址为60H单元内容,将该内容传送到片外数据存储器存储区中保存(首地址4000H),将保存在片外数据区数据依次取出送P1。传送完毕后指示灯D1亮。

三、实验步骤

(1)软件实现:

 实验步骤:

        1.运行Keil uVision4 开发环境,按照“模块化单片机教学实验平台配套的实验指导书1.2.3 节”介绍的方法建立程esimlab2. uvproj,CPU 为AT89S51,包含启动文件STARTUP.A51。

        2.输入源程序,在Keil uVision4 开发环境中,建立源程序esimlab2.c,将上述程序加入该程序文件。并将该文件加入工程esimlab2.uvproj。

        3.设置工程esimlab2. uvproj 属性,将其晶振频率设置为12MHz,选择输出可执行文件(HEX 文件),仿真方式为“Use Simulator”。

        4.构造(Build)工程esimlab2..uvproj。如果输入有误进行修改,直至构造正确,生成可执行程序 esimlab2.hex 为止。

        5.单步调试运行程序,观察相应的反汇编指令窗口,存储器内部存储器RAM(D:0x60H~D:0x70H)、外部RAM(x: 0x4000~ x: 0x4010)以及P1口的内容随着指令的执行的变化情况。

(2)Proteus仿真:

实验步骤:

        1.运行Proteus 开发环境,建立工程,新建原理图设计文件esimlab2. pdsprj。

        2.设置单片机属性,将其晶振频率设置为12MHz,载入KEIL生成的文件esimlab2.hex。

        3.运行仿真并观察结果。

提示:

#include<reg51.h>

#include<absacc.h>    //用于访问绝对地址头文件

#define port P1

sbit led= P2^7;

data unsigned char buffer1[17] _at_ 0x60;    //定义DATA区数组变量,首地址为60H

xdata unsigned char buffer2[17] _at_ 0x4000; //定义XDATA区数组变量,首地址为4000H

void delay( )

{

uchar i,j;

for(i=0;i<255;i++)

for(j=0;j<255;j++);

}

void main()

{

 while(1);

}

四、实验小结

esimlab2.c文件:

#include<reg51.h>	  //调用51头文件
#include<absacc.h>    //用于访问绝对地址头文件
#define port P1		  //宏定义,P1口

sbit led = P2^7;	  //位定义,led表示P2_7口

data unsigned char buffer1[17] _at_ 0x60;    //定义DATA区数组变量,首地址为60H
xdata unsigned char buffer2[17] _at_ 0x4000; //定义XDATA区数组变量,首地址为4000H

void delay()//延迟函数
{
	unsigned char i,j;
	for(i=0;i<255;i++)
	for(j=0;j<255;j++);
}


void main()
{
	unsigned char i,temp; //定义无符号变量
	for(i = 0; i < 17 ; i++)
	{
		buffer1[i] = 0x04 + i; //向片内RAM0x60地址存入04H-14H共17个字节
	}
	for(i = 0; i < 17 ; i++)
	{
		buffer2[i] = buffer1[i];//将片内RAM中的数据04H-14H传送到片外RAM中保存
		temp = buffer2[i];//依次取出片外RAM中的值
		port = ~temp;//将数据送到P1口,控制LED灯亮灭
		delay();
	}
	led = 0;//数据传送完毕,点亮LED灯
	while(1);
}

调试结果:

单片机片内数据传到片外,单片机,单片机,51单片机,proteus

 仿真结果:

单片机片内数据传到片外,单片机,单片机,51单片机,proteus

        通过本次实验,掌握了单片机C语言程序设计和调试的方法,了解了单片机RAM中的数据操作。

        访问片外数据存储区比访问片内数据存储区慢,因为访问片外数据存储区要通过数据指针加载地址来间接寻址访问的。C51提供两种不同的数据存储类型xdatapdata来访问片外数据存储区。所以要读外部程序存储器0x4000中的内容只要将数据存储类型定义成xdata就可以访问了文章来源地址https://www.toymoban.com/news/detail-743883.html

到了这里,关于实验(二):单片机数据区传送程序设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Proteus仿真--基于51单片机的可演奏电子琴设计(仿真文件+程序)

    本文主要介绍基于51单片机的可演奏电子琴设计(完整仿真源文件及代码见文末链接) 仿真图如下 其中通过矩阵键盘可以实现不同的音乐播放 仿真运行视频 Proteus仿真--基于51单片机的可演奏电子琴设计(仿真文件+程序) 附完整Proteus仿真资料+代码资料 百度网盘链接: https:

    2024年02月06日
    浏览(33)
  • 51单片机锅炉监控系统仿真设计( proteus仿真+程序+原理图+报告+讲解视频)

    基于51单片机锅炉监控系统仿真设计( proteus仿真+程序+原理图+报告+讲解视频) 仿真图proteus7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0056 基于51单片机AT89C51/52(与AT89S51/52、AT89C51/52、STC89C51/52等51内核单片机通用) 1.系统实时通过LCD1602显示水位检测值,锅

    2024年02月06日
    浏览(28)
  • 基于51单片机音乐盒设计( proteus仿真+程序+原理图+PCB+报告+讲解视频)

    基于51单片机音乐盒仿真设计( proteus仿真+程序+原理图+PCB+报告+讲解视频) 仿真图proteus 7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0030 本次课设是应用单片机原理和控制理论设计音乐演奏控制器的硬件电路,并利用C语言进行程序设计。通过控制单片机内部

    2024年02月04日
    浏览(41)
  • 基于51单片机的PWM控制直流电机设计( proteus仿真+程序+报告+讲解视频)

    仿真图proteus 7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0031 基于51单片机的PWM控制直流电机设计 1.设计要求 采用51单片机作为核心控制器,控制直流电机的正转,反转,制动,停止。 2.功能要求 1)数码管显示当前转动方向和当前的PWM占空比0~100%。 2)电机

    2023年04月25日
    浏览(39)
  • 基于单片机的电子万年历设计与制作系统(设计报告+开题中期报告+仿真文件+程序)

    摘要:本文设计实现了一种基于单片机的电子万年历设计与制作系统。该系统通过单片机的控制,实现了日期、时间和节假日等信息的显示,同时提供了闹钟、定时器和温度显示等功能。实验结果表明,该系统具有较好的稳定性和实用性,能够满足人们对万年历功能的需求。

    2024年02月04日
    浏览(35)
  • 第1章_瑞萨MCU零基础入门系列教程之单片机程序的设计模式

    本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写,需要的同学可以在这里获取: https://item.taobao.com/item.htm?id=728461040949 配套资料获取:https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总 : https://blog.csdn.net/qq_35181236/article/details/132779862 本章目标 理解裸机程序设

    2024年02月09日
    浏览(33)
  • 基于51单片机数字频率计仿真设计(proteus仿真+程序+原理图+参考报告+器件清单)

    (proteus仿真+程序+原理图+参考报告+器件清单) 仿真图proteus 8.9 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:C0052 由51单片机+信号输入+74HC14整形电路+74HC390分频电路+LCD1602显示模块+电源构成。 1、能测出正弦波、三角波或方波等波形的频率; 2、频率的测量范围为1Hz—

    2024年02月09日
    浏览(32)
  • 基于51单片机的16键电子琴音乐盒设计proteus仿真原理图程序

    功能: 0.本项目采用STC89C52作为单片机系统的控制MCU 1.LCD1602液晶实时显示时间和当前工作模式 2.支持电子琴模式和歌曲模式(内置8首歌曲) 3.短触’设置/切换’键可切换工作模式 4.长按’设置/切换‘键可进入时间设置模式 5.采用DC002作为电源接口可直接输入5V给整个系统供电

    2024年02月12日
    浏览(31)
  • 126、仿真-基于51单片机16×16点阵滚动显示仿真设计(Proteus仿真+程序+配套资料等)

    方案选择 单片机的选择 方案一:STM32系列单片机控制,该型号单片机为LQFP44封装,内部资源足够用于本次设计。STM32F103系列芯片最高工作频率可达72MHZ,在存储器的01等等待周期仿真时可达到1.25Mip/MHZ(Dhrystone2.1)。内部128k字节的闪存程序存储器,也就是说代码量可以写到128k字

    2024年02月17日
    浏览(39)
  • 51单片机点灯实验(含程序+仿真+硬件实验)

    一、实验原理 LED发光二极管核心为PN结,单向导电,有阴极和阳极,两极均可以控制,需要亮起来,电流不能过大和过小,过大,烧坏二极管,过小,电光效应弱,发光不明显,引入“限流电路”。为减少I/O引脚的消耗,一般控制一极,有阳极控制法和阴极控制法。阳极控制

    2024年02月04日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包