栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

目录

一、任务要求二、实现方法三、参考代码

一、任务要求

在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 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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/784323.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号