C8051F236基本外设配置

首先是最通用的外设串口

1.串口通信

基本配置

void Serport_Init()
{
	CKCON=0x18;

	RCAP2L=0XEC;//这个就是TH2 TL2的重装值
	RCAP2H=0XFF;
	
	TL2=0XEC;//波特率19200
	TH2=0XFF;

	RCLK=1;//TIM2作为接收发送溢出时钟
	TCLK=1;
	CT2=0;
    TR2=1;
	
	SCON=0x70;
	ES=1;
	EA=1;
	

}
这里设置的波特率为19200且允许接收,开接收中断


打印函数

/**************串口打印函数*******/
//两个参数 一个uchar数组 一个数据长度
//
/********************************/
void RS_SendString(uchar* m,uchar lenth)
{
	uchar i;
	for(i=0;i<lenth;i++)
	{
		SBUF=m[i];
		while(!TI);//等待发送结束
		TI=0;
	}
}

中断服务函数

/*************数据接收程序****************/
//没有参数
//结束符设置为OX0A 0X0D即换行符(可以进行修改)
//当recover=1即代表串口接收完成
/****************************************/
void RS_Recive() interrupt 4//串口中断是4号位
{
	uchar date;
	static uchar dic=0;
	static uchar num=0;
	if(RI==1)
	{
		RI=0;
		date=SBUF;//获取数据
		RecBuf[num]=date;
		num++;
		lenth++;
		

		if(dic==1)//改进之后确认换行符才会将recover置1
		{
			if(date==0x0d)
			{
				dic=0;
				recover=1;
				num=0;
			}
			else dic=0;
		}

		 if(date==0x0a)
		{
			dic=1;
		}
		
	}
}


2.Flash读写

读:

当锁定Flash xdata将指向片外XRAM所以这里需要用code访问内部程序存储器
/*************Flash读取函数*********/
//参数addr 数据地址
//返回uchar类型数据
/**********************************/
uchar Flash_Read(unsigned int addr)
{
	unsigned char code*ptr;
	EA=0;
	ptr=addr;
	EA=1;
	return *ptr;
}

写:

解除锁定,xdata将指向Flash存储区
/***********Flash写入函数***********/
//含两个参数(uint)addr (uchar)date
//一次性需要写入所有需要的数据
//没有返回值
/*********************************/
void Flash_Write(uint addr,uchar lenth,uchar*arry)
{
    uchar xdata*ptr;
	uchar i;
	EA=0;
	FLSCL=0X88;//允许对Flash进行写操作
	PSCTL=0X03;//允许写/擦除操作
	ptr=addr;
	for(i=0;i<lenth;i++)
	{
		*(ptr+i)=0xf;
	}
	PSCTL=0X01;//不允许擦除
		for(i=0;i<lenth;i++)
	{
		*(ptr+i)=*(arry+i);
	}
	
	PSCTL=0X00;
	EA=1;	
}


3.计数器配置

void counter_init()
{
	TMOD=0x99;//只用一个定时器
	CKCON=0x18;//使用系统时钟 厉害了1/12M
	TH0=0;//TR开并且端口有低电平开始计数
	TL0=0;
	TH1=0;
	TL1=0;
}
只需要打开TR0,TR1即开始计数



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值