C8051F236基本外设配置

来源:互联网 发布:经济增加值算法 编辑:程序博客网 时间:2024/05/22 12:22

首先是最通用的外设串口

1.串口通信

基本配置

void Serport_Init(){CKCON=0x18;RCAP2L=0XEC;//这个就是TH2 TL2的重装值RCAP2H=0XFF;TL2=0XEC;//波特率19200TH2=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/12MTH0=0;//TR开并且端口有低电平开始计数TL0=0;TH1=0;TL1=0;}
只需要打开TR0,TR1即开始计数



原创粉丝点击