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

中断服务函数

/*************数据接收程序****************/
//没有参数
//结束符设置为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


3.计数器配置

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



你可能感兴趣的:(C8051系列)