Proteus仿真:存储器

实现目标

    将存放在AT89C52单片机程序存储器中的字符串“AT89C52 microcontroller!”,复制到内部数据存储器中,并使用printf函数,从串口输出该字符串到Proteus的串口虚拟终端显示

Proteus仿真图

在这里插入图片描述

C51程序

#include <REG52.H>//片内寄存器定义
#include <string.h>//字符串操作库函数
#include <stdio.h>//输入输出函数库

void initUart(void);/*初始化串口波特率,使用定时器1*/

code char *ucRomStr="AT89C52 microcontroller!"; //存放在ROM的字符串
data char ucRamStr[24];//接收字符串放在RAM中

/*********** main C **************/

main()
{  
	initUart();// 为了使用printf语句,要初始化串口

	memcpy(ucRamStr,ucRomStr,strlen(ucRomStr));  //string.h库中memcpy完成字符串复制
	printf("%s",ucRamStr); //从串口输出Ram中的字符串

	while(1);//死循环,等待
}

void initUart(void)/*初始化串口波特率,使用定时器1*/
{
    SCON  = 0x50;		     
	TMOD |= 0x20;             
	TH1   = 0xfd;            
    TR1   = 1;                                   
    TI    = 1;              
}

注:

  • code:80C51程序存储器空间
  • data:直接寻址的80C51内部数据存储器

运行结果

在这里插入图片描述

个人理解

    从要求可以得出,首先需要将程序存储器的数据移动到内部数据存储器,然后再使用printf函数从串口输出。所以先将字符串定义为code类型,再利用memcpy函数复制到内存数据存储器,最后直接使用printf函数输出即可。
    本文Proteus仿真图及源程序获取见:
在这里插入图片描述

说明

参考课本:单片机原理与嵌入式系统设计

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海轰Pro

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值