存储器映射扩展技术应用

单片机资源扩展方式

IO、MM(存储器映射)两种扩展模式,通过J13配置。MM模式可直接通过XBYTE关键字来操作部分资源。

练习内容

在这里插入图片描述
IO

#include "reg52.h"
#include <intrins.h>

void delayxms(unsigned char t)
{
	while(t--)
	{
			unsigned char data i, j;
			_nop_();
			_nop_();
			_nop_();
			i = 11;
			j = 190;
			do
			{
				while (--j);
			} while (--i);
	}
}

void hc573(unsigned char channel)
{
	switch(channel)
	{
		case 4:P2=(P2&0x1f)|0x80;break;
		case 5:P2=(P2&0x1f)|0xa0;break;
		case 6:P2=(P2&0x1f)|0xc0;break;
		case 7:P2=(P2&0x1f)|0xe0;break;
	}
}

void ledrunning()
{
	hc573(4);
	P0=0xf0;//点亮低四位
	delayxms(50);
	P0=0x0f;//点亮高四位
	delayxms(50);
}

void smgrunning()
{
	unsigned char i;
	for(i=0;i<8;i++)
	{
		hc573(6);//位选
		P0=0x01<<i;
		hc573(7);
		P0=0x00;
		delayxms(50);
	}
	P0=0x00;
	delayxms(50);
}

void main()
{
	while(1)
	{
		ledrunning();
		smgrunning();
	}
}

MM

#include "reg52.h"
#include "absacc.h"
#include <intrins.h>

void delayxms(unsigned char t)
{
	while(t--)
	{
			unsigned char data i, j;
			_nop_();
			_nop_();
			_nop_();
			i = 11;
			j = 190;
			do
			{
				while (--j);
			} while (--i);
	}
}

void ledrunning()
{
	XBYTE[0X8000]=0xf0;//点亮低四位
	delayxms(50);
	XBYTE[0X8000]=0x0f;//点亮高四位
	delayxms(50);
	XBYTE[0X8000]=0xff;//关闭所有灯
	delayxms(50);
}

void smgrunning()
{
	unsigned char i;
	for(i=0;i<8;i++)
	{
		XBYTE[0xc000]=0x01<<i;//位选
		XBYTE[0xe000]=0x00;//段选
		delayxms(50);
	}
	XBYTE[0xc000]=0x00;//关闭数码管
	delayxms(50);
}

void main()
{
	while(1)
	{
		ledrunning();
		smgrunning();
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值