一、任务要求
二、实现方法
三、参考代码
一、任务要求
在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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)