首页 CH432 收发成功2

CH432 收发成功2

举报
开通vip

CH432 收发成功2CH432收发成功2/*波特率4800*/#includesbit  P20        =  P2^0;sbit  P21        =  P2^1;sbit  P22        =  P2^2;sbit  P23        =  P2^4;sbitbeep=P2^3;#defineCH432_SPI_SCS      P20  /*假定CH432的SCS引脚*/#defineCH432_SPI_SDI      P21  /*假定CH432的SDI引脚*/#defineCH432_SPI_SDO ...

CH432 收发成功2
CH432收发成功2/*波特率4800*/#includesbit  P20        =  P2^0;sbit  P21        =  P2^1;sbit  P22        =  P2^2;sbit  P23        =  P2^4;sbitbeep=P2^3;#defineCH432_SPI_SCS      P20  /*假定CH432的SCS引脚*/#defineCH432_SPI_SDI      P21  /*假定CH432的SDI引脚*/#defineCH432_SPI_SDO      P22  /*假定CH432的SDO引脚*/#defineCH432_SPI_SCK      P23  /*假定CH432的SCK引脚*/#defineCH432_THR_PORT  0x00#defineCH432_DLL_PORT   0x00#defineCH432_DLM_PORT   0x01#defineCH432_IER_PORT   0x01#defineCH432_IIR_PORT   0x02#defineCH432_FCR_PORT   0x02#defineCH432_LCR_PORT   0x03#defineCH432_MCR_PORT  0x04#defineCH432_LSR_PORT  0x05#defineCH432_MSR_PORT   0x06#defineCH432_SCR_PORT   0x07#defineBIT_LCR_DLAB   0x80#defineBIT_FCR_FIFOEN  0x01#defineBIT_LCR_WORDSZ1   0x02#defineBIT_LCR_WORDSZ0 0x01#defineBIT_LSR_THRE   0x20#defineBIT_IER_IEMODEM   0x08#defineBIT_IER_IELINES 0x04#defineBIT_IER_IETHRE  0x02#defineBIT_IER_IERECV  0x01#defineBIT_MCR_OUT2   0x08#defineBIT_MCR_RTS   0x02#defineBIT_MCR_DTR   0x01#defineBIT_LSR_TEMT   0x40#defineCH432_LCR1_PORT 0x0B#defineCH432_DLL1_PORT 0x08#defineCH432_DLM1_PORT 0x09#defineCH432_FCR1_PORT 0x0a#defineCH432_THR1_PORT 0x08#defineCH432_LSR1_PORT   0x0d#defineBIT_LSR_BREAKINT 0x10#defineBIT_LSR_FRAMEERR 0x08#defineBIT_LSR_PARERR  0x04#defineBIT_LSR_OVERR  0x02#defineBIT_LSR_DATARDY 0x01#defineCH432_RBR_PORT  0x00#defineCH432_RBR1_PORT   0x08#defineSpi432Stop()  {CH432_SPI_SCS=1;}  /*SPI结束*/#defineFpclk   1843200  /*定义内部时钟频率  */#defineCH432_BPS 4800  /*定义CH432串口0通讯波特率*/#defineCH432_BPS1 4800  /*定义CH432串口0通讯波特率*/unsignedintSpi432InByte(void)  /*SPI输入8个位数据*/{unsignedinti,d;d=0;/*如果SPI的SDO和SDI合用一个I/O引脚,那么必须在此设置该I/O方向为输入*//*CH432_SPI_SCK=1;   */for(i=0;i<8;i++){CH432_SPI_SCK=0;   /*CH432在时钟下降沿输出*/d<<=1;if(CH432_SPI_SDO)d++;CH432_SPI_SCK=1;}return(d);     }voidSpi432OutByte(unsignedint d)  /*SPI输出8个位数据*/{unsignedint i;for(i=0;i<8;i++){CH432_SPI_SCK=0;if(d&0x80)CH432_SPI_SDI=1;elseCH432_SPI_SDI=0;d<<=1;  /*数据位是高位在前*/CH432_SPI_SCK=1;  /*CH432在时钟上升沿采样输入*/}}voidSpi432Start(unsignedintaddr)  /*SPI开始*/{/*对于双向I/O引脚模拟SPI接口,那么必须确保已经设置SPI_SCS,SPI_SCK,SPI_SDI为输出方向,SPI_SDO为输入方向*/CH432_SPI_SCS=0; /*SPI片选有效*/Spi432OutByte(addr); }unsignedintReadCH432Data(unsignedintmAddr)  /*从指定寄存器读取数据*/{unsignedintd;Spi432Start((mAddr<<2)&0xFD);  /*位5-2为当前操作地址,位1为0读操作*/d=Spi432InByte();CH432_SPI_SCS=1;return(d);}voidWriteCH432Data(unsignedintmAddr,unsignedintmData)  /*向指定寄存器写入数据*/{Spi432Start((mAddr<<2)|0x02);  /*位5-2为当前操作地址,位1为1写操作*/Spi432OutByte(mData);CH432_SPI_SCS=1;}/*************************************************************************************************//******************************************************/voidtransmit(unsignedintnum){SBUF=num;while(!TI);TI=0;}voidinit(){TMOD=0x20;PCON=0x00;TH1=0xfa;TL1=0xfa;TR1=1;//REN=1;SM0=0;SM1=1;}voiddelay(unsignedintk){unsignedi;while(k!=0){for(i=0;i<1150;i++);k--;}}/********************************************************/voidInitCH432(void)  /*初始化CH432*/{unsignedintdiv;unsignedintDLL,DLM;/**************************************************************************设置CH432串口0的寄存器**************************************************************************/div=(Fpclk>>4)/CH432_BPS;DLM=div>>8;DLL=div&0xff;WriteCH432Data(CH432_LCR_PORT,BIT_LCR_DLAB);  /*设置DLAB为1*/WriteCH432Data(CH432_DLL_PORT,DLL);  /*设置波特率*/WriteCH432Data(CH432_DLM_PORT,DLM);WriteCH432Data(CH432_FCR_PORT,BIT_FCR_FIFOEN);  /*设置FIFO模式*/WriteCH432Data(CH432_LCR_PORT,BIT_LCR_WORDSZ1|BIT_LCR_WORDSZ0);  /*字长8位,1位停止位、无校验*/WriteCH432Data(CH432_IER_PORT,BIT_IER_IEMODEM|BIT_IER_IELINES|BIT_IER_IETHRE|BIT_IER_IERECV); /*使能中断*/WriteCH432Data(CH432_MCR_PORT,BIT_MCR_OUT2|BIT_MCR_RTS|BIT_MCR_DTR); /*允许中断输出,DTR,RTS为1*//**************************************************************************设置CH432串口1的寄存器**************************************************************************/div=(Fpclk>>4)/CH432_BPS1;DLM=div>>8;DLL=div&0xff;WriteCH432Data(CH432_LCR1_PORT,BIT_LCR_DLAB);  /*设置DLAB为1*/WriteCH432Data(CH432_DLL1_PORT,DLL);  /*设置波特率*/WriteCH432Data(CH432_DLM1_PORT,DLM);WriteCH432Data(CH432_FCR1_PORT,BIT_FCR_FIFOEN);  /*设置FIFO模式*/WriteCH432Data(CH432_LCR1_PORT,BIT_LCR_WORDSZ1|BIT_LCR_WORDSZ0); /*字长8位,1位停止位、无校验*//*WriteCH432Data(CH432_IER1_PORT,BIT_IER_IEMODEM|BIT_IER_IELINES|BIT_IER_IETHRE|BIT_IER_IERECV);  /*使能中断*//*WriteCH432Data(CH432_MCR1_PORT,BIT_MCR_OUT2|BIT_MCR_RTS|BIT_MCR_DTR);  /*允许中断输出,DTR,RTS为1*/}/***********************************************************************************/voidCH432_PORT_INIT()  /*由于使用通用I/O模拟SPI读写时序,所以进行初始化*/{CH432_SPI_SCS=1;CH432_SPI_SCK=1;}/*************************************************************************************/unsignedintUART1_RcvByte(){unsignedintRcvdat;//unsignedintaa;if(!(ReadCH432Data(CH432_LSR1_PORT)&(BIT_LSR_BREAKINT|BIT_LSR_FRAMEERR|BIT_LSR_PARERR|BIT_LSR_OVERR)))  /* b1-b4无错误*/{while((ReadCH432Data(CH432_LSR1_PORT)&BIT_LSR_DATARDY)==0); /*等待数据准备好*//*  {aa=ReadCH432Data(CH432_LSR_PORT)&BIT_LSR_DATARDY;transmit(aa);}transmit(0xff);  */Rcvdat=ReadCH432Data(CH432_RBR1_PORT);  /*从接收缓冲寄存器读出数据*/return(Rcvdat);}elseReadCH432Data(CH432_RBR1_PORT);  /*有错误清除*/}/*****************************************************************************************/voidUART1_SendByte(unsignedintdat)  /*CH432串口0发送一字节子程序*/{while(!((ReadCH432Data(CH432_LSR1_PORT)&BIT_LSR_THRE)==0x20)); /*等待数据发送完毕*/WriteCH432Data(CH432_THR1_PORT,dat);/*while((ReadCH432Data(CH432_LSR_PORT)&BIT_LSR_TEMT)==0x00);  */}/***************************************************************************************/voidmain(){unsignedintaa;init();CH432_PORT_INIT();InitCH432();while(1){aa=UART1_RcvByte();P1=aa; UART1_SendByte(aa);UART1_SendByte(0xaa);}}
本文档为【CH432 收发成功2】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_005190
暂无简介~
格式:doc
大小:31KB
软件:Word
页数:0
分类:
上传时间:2021-08-23
浏览量:20