C51寄存器点灯入门学习

前期准备

1.选板子
首先我们肯定是需要一个兼容80c51的板子,本人选择的是N76E003这块板子。如下图所示:
N76E003开发板

2.下载调试器
程序写再6,无法下到板子里去也是天方夜谈,选择N76E003这块板子的配套下载调试器是Nu_Link. 如下图所示
在这里插入图片描述
想要成功下载我们需要再安装两个驱动程序,这两个驱动也在买板子时商家提供了。
我们要明确为什么需要驱动,目的是以保证keil能够识别该下载调试器和程序的正确下载。
驱动程序
下载完成后,我们在keil中点击魔术般,在Debug中就能够看到keil已经识别出该下载调试驱动。
在这里插入图片描述
用我自己薄弱的理解解释下为什么需要下载调试驱动:
首先我们得程序肯定是在上位机软件上进行编写的,我们如何才能把程序放到板子里呢,此时就需要一个中间人(翻译官)也就是下载调试器,而下载调试器怎样才能正确理解上位机发送过来的程序呢,这个时候下载调试器跟上位机就应该遵守一套通讯协议,而下载调试驱动就跟下载调试器双方遵守一套协议,这样的情况下,我们才能确保程序正常下载并确保正确。

开始点灯

流程

1.配置端口为推挽输出模式
2.端口置1或清零实现灯的亮灭

具体过程

1.N76E003中的端口模式配置是需要PxM1和PxM2来共同确定,相应模式如何配置如下图:
在这里插入图片描述
根据板子的原理图,我们可以看到我们要点的灯是p1.2端口
在这里插入图片描述
所以我们只需设置P1M1.2为0,P1M2.2为1就可使P1.2的模式为推挽输出模式。
根据原理图我们也可以确定,置1灯会灭,清零灯会亮。
2.在明确两个知识点,接下来我们就可以写程序了,
①:51也好32也好,我们想要让程序跑起来必须要有启动文件。所以我们需要在source Group中添加STARTUP.A51这个启动文件
②:51我们想要使用直接用指针操作地址 的方式是不行的,在51中,我们给需要使用sfr去给特殊寄存器进行定义,如果想要位操作(可位操作的地址是在80-FF之间以0H或者8H结尾的地址)则需要使用sbit这样的位操作方法。

编写代码

#define SET_BIT2			0x04		//对位2进行一个宏定义,可读性比较好
定义寄存器
sfr P1 = 0x90;
sfr P1M1 = 0xB3;
sfr P1M2 = 0xB4;				   		//这些地址在参考手册中可查到
P1端口位2操作
sbit P12 = P1^2;				   		//这是一个固定的写法,要操作那个端口的某位就直接异或个相应位即可

int main(void)
{
	long i = 0;					  		//循环变量
	配置推挽输出模式
	P1M1 &= ~SET_BIT2;			  		//P1M1.2清零
	P1M2 |= SET_BIT2;			  		//P1M2.2置1

	实现一个简单的闪烁
	for(;;)						  		//也可以while(1),是等价的
	{
		P12 = 0;				  		//点亮
		for(i = 0; i < 50000; i++){;}
		P12 = 1;						//熄灭
		for(i = 0; i < 50000; i++){;}
	}
}

以上就是我全的分享,如有理解不到位,欢迎大家帮我指正,万分感谢。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值