松翰芯片SN8F5702的学习记录(一)

文章介绍了如何使用松翰芯片的IO口进行基本设置,包括系统时钟配置、GPIO初始化,并展示了如何通过C语言编程点亮和控制LED灯的实例。此外,还提及了流水灯的实现方法,以及编程所需的工具如KEIL5和特定的Pack包。
摘要由CSDN通过智能技术生成

目录

芯片IO口的基础学习

IO的基本设置

利用IO点亮LED灯(基础学习)

        对于松翰芯片的学习,网上并未提供太多的案例代码,本人也是通过渠道有幸学习其中一个芯片的机会。对于该系芯片的编程,需要用到其松翰的工程板,烧录器,烧录软件。编程软件需要用到KEIL5(可能需要对应的Pack包,KEIL官方网站没有对应的,学习需要的评论或私信给)。话不多说,直接进入主题。

 芯片IO口的基础学习

IO的基本设置

         上面的图片大致的显示了芯片的引脚配置,了解即可。当我们查看芯片手册的时候,你会看到有关GPIO的一些设置内容。在这里我给大家整理一下。对于GPIO的设置请看下面的代码;

void GpioInit()
{
	//用户在用C语言编写的时候,必须按照这个顺序编写设置系统时钟
	CKCON  = 0x70;
	CLKSEL = 0x05;
	CLKCMD = 0x69;
  CKCON = 0x00;
	//芯片IO口的设置,P0,P1,P2
	//其中P1口有唤醒使能P1W
	P0=0xff;//输出高低电平控制,POM相应位使能
	P0M=0xff;//定义输入0输出1。
	P0UR=0x00;//内置上拉电阻控制,禁止0使能1,IO口为输出模式是建议禁止
	
	P1=0x00;
	P1M=0x00;
	P1UR=0x00;
	P1W=0x00;//唤醒禁用0,使能1
	
	P2=0x00;
	P2M=0x00;
	P2UR=0x00;
	
}

        P0,P1,P2口的设置,你可以默认理解与P0M对应进行使能。上面我所设置的可以理解为,P0口的引脚设置为输出脚,具体高电平导通还是低电平导通,看硬件电路。只需要知道设置的该引脚为输入还是输出。

利用IO点亮LED灯(基础学习)

前面说完IO口的设置,那么现在就要学习一下基础的点亮LED开始(点亮太简单了,下面是闪烁,可能软件延时写的不好。)

#include<SN8F5702.H>
/*
SN8F5702芯片只有P0.0-P0.7,P1.0-P1.7,P2.0-P2.1引脚
*/

sbit LED=P0^0;

#define uint unsigned int
#define uchar unsigned char
	
uint i,k;

void delay(uchar j)
{
	for(i=j;i>0;i--)
	for(k=0;k<2000;k++);
}

void GpioInit()
{
	//用户在用C语言编写的时候,必须按照这个顺序编写设置系统时钟
	CKCON  = 0x70;
	CLKSEL = 0x05;
	CLKCMD = 0x69;
  CKCON = 0x00;
	//芯片IO口的设置,P0,P1,P2
	//其中P1口有唤醒使能P1W
	P0=0x01;//输出高低电平控制,POM相应位使能
	P0M=0x01;//定义输入0输出1。
	P0UR=0x00;//内置上拉电阻控制,禁止0使能1
	
	P1=0x00;
	P1M=0x00;
	P1UR=0x00;
	P1W=0x00;//唤醒禁用0,使能1
	
	P2=0x00;
	P2M=0x00;
	P2UR=0x00;
	
}



void main()
{
	GpioInit();
	while(1)
	{
		LED=0;//灭
		delay(50000);
		LED=1;
		delay(50000);//一直循环亮灭
	}
}

关于LED灯的控制,有许多(例如软件延时控制闪烁,控制闪烁次数,流水灯,中断控制LED灯1s(自定)闪铄,中断控制呼吸,中断控制闪烁次数),在下次说中断的时候给出。接下来说一下流水灯吧。

流水灯的设置

SN8F5802芯片的流水灯跟我们了解到得51单片机不一样(通过设置某个口进行移位就可以进行流水)可能我写的代码不对,有想法的自己验证。话不多说,上代码。

#include<SN8F5702.H>
/*
SN8F5702芯片只有P0.0-P0.7,P1.0-P1.7,P2.0-P2.1引脚
*/

sbit LED1=P0^0;
sbit LED2=P0^1;
sbit LED3=P0^2;
sbit LED4=P0^3;
sbit LED5=P0^4;
sbit LED6=P0^5;
sbit LED7=P0^6;
sbit LED8=P0^7;

#define uint unsigned int
#define uchar unsigned char
	
uint a,k;

void delay(uchar j)
{
	for(a=j;a>0;a--)
	for(k=0;k<2000;k++);
}

void GpioInit()
{
	//用户在用C语言编写的时候,必须按照这个顺序编写设置系统时钟
	CKCON  = 0x70;
	CLKSEL = 0x05;
	CLKCMD = 0x69;
  CKCON = 0x00;
	//芯片IO口的设置,P0,P1,P2
	//其中P1口有唤醒使能P1W
	P0=0xff;//输出高低电平控制,POM相应位使能
	P0M=0xff;//定义输入0输出1。
	P0UR=0x00;//内置上拉电阻控制,禁止0使能1
	
	P1=0x00;
	P1M=0x00;
	P1UR=0x00;
	P1W=0x00;//唤醒禁用0,使能1
	
	P2=0x00;
	P2M=0x00;
	P2UR=0x00;
	
}

void led(uint num,uint val)
{
	switch(num)
	{
		case 0:
			val?(LED1=1):(LED1=0);
		break;
		case 1:
			val?(LED2=1):(LED2=0);
		break;
		case 2:
			val?(LED3=1):(LED3=0);
		break;
		case 3:
			val?(LED4=1):(LED4=0);
		break;
		case 4:
			val?(LED5=1):(LED5=0);
		break;
		case 5:
			val?(LED6=1):(LED6=0);
		break;
		case 6:
			val?(LED7=1):(LED7=0);
		break;
		case 7:
			val?(LED8=1):(LED8=0);
		break;
	}
}
	
uint i;
void main()
{
	GpioInit();
	LED1=0,LED2=0,LED3=0,LED4=0,LED5=0,LED6=0,LED7=0,LED8=0;
	while(1)
	{
		for(i=0;i<8;i++)
		{
			delay(50000);
			led(i,1);
			delay(50000);
			led(i,0);
		}
	}
}

有关硬件烧录等请看下图。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值