学习笔记——存储器映射扩展

学习笔记——存储器映射扩展,第1张

目录

  • 一、任务要求


  • 二、实现方法


  • 三、参考代码


一、任务要求

在CT107D单片机上,用存储器扩展方式对LED指示灯和数码管进行基本的控制。



1.首先点亮指示灯低四位,关闭高四位,延时片刻,点亮指示灯的高四位,关闭低四位,延时片刻,关闭所有指示灯。



2.然后依次逐次点亮数码管的所有段码,每次只点亮一个数码管。



3.循环执行上述功能。



二、实现方法

外部资源的地址映射关系:
0x8000——指示灯
0xa000——蜂鸣器与继电器
0xc000——数码管位选
0xe000——数码管段码
提示:
1.进行存储器映射扩展,CT107D平台的J13要将1-2脚短接。



2.引入“absacc.h”,通过XBYTE关键字来直接 *** 作扩展资源。



3.存储器映射扩展方式要占用单片机的P3.6引脚


三、参考代码

#include "reg52.h"
#include "absacc.h"

/*void delay(unsigned char t)
{
	while(t--);
	while(t--);
}*/
void mdelay(unsigned char nms)
{
	unsigned int i,j;
	for(i = nms; i > 0; i--)
	for(j = 110; j > 0; j --);
}
void LEDRunning()
{
	XBYTE[0x8000] = 0xf0;
	mdelay(200);
	mdelay(200);
	XBYTE[0x8000] = 0x0f;
	mdelay(200);
	mdelay(200);
	XBYTE[0x8000] = 0x00;
	mdelay(200);
	mdelay(200);
	XBYTE[0x8000] = 0xff;
	mdelay(200);
	mdelay(200);
}

void SEGRunning()
{
	unsigned char i;
	for(i = 0; i < 8; i++)
	{
		XBYTE[0xc000] = 0x01 << i;
		XBYTE[0xe000] = 0x00;
		mdelay(200);
		mdelay(200);
	}
		XBYTE[0xe000] = 0xff;
		mdelay(200);
		mdelay(200);
}

void main()
{
	while(1)
	{
		LEDRunning();
		SEGRunning();
	}
}

学习来源于:https://www.bilibili.com/video/BV1Bt41187hw?p=3

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/562545.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-01
下一篇 2022-04-01

发表评论

登录后才能评论

评论列表(0条)

保存