⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readfifodata.txt

📁 C8051F040 读FIFO数据并且通过串口发送至PC
💻 TXT
字号:
//-------------------------------------------------------------------
//
// Major Functions:	RADE FIFO DATA
//
// --------------------------------------------------------------------
//
// Revision History :
// --------------------------------------------------------------------
//   Ver  :| Author            :| Mod. Date :| Changes Made:
//   V1.0 :| SJITON            :| 06/10/09  :| Initial Revision
// --------------------------------------------------------------------
/***********************************************************************/
#include "C8051F040.h"	// Register definition file.
typedef unsigned char uchar;
typedef unsigned int uint;
typedef unsigned long ulong;

//#define read_empty  
sfr16 RCAP2=0xca;
sfr16 RCAP3=0xca;
sfr16 RCAP4=0xca;
sfr16 TMR4=0xcc;
sfr16 TMR3=0xcc;
sfr16 TMR2=0xcc;
sfr16 PCA0CP0=0xfb;
sfr16 PCA0CP1=0xfd;
sfr16 PCA0CP2=0xe9;
sfr16 PCA0CP3=0xeb;
sfr16 PCA0CP4=0xed;
sfr16 PCA0CP5=0xe1;

sbit rdclk=P5^1;//硬件控制接口
sbit rdreq=P5^0;
sbit rdempty=P5^2;//data=P4 先置1,后读取

xdata uchar UCdata;

void delay1ms(uint time){//延迟1ms*time,这不是一个精确值
	uint i;
	uint j;
	for (i=0;i<time;i++){
		for(j=0;j<300;j++);
	}
}	
void config (void) {


    SFRPAGE = 0x0F;
    XBR0 = 0x05;		//UART0(0x04) & SMBUS(0x01) enable  
    XBR1 = 0x00;
    XBR2 = 0x44;		// Crossbar 交叉开关配置使能,UART1配置
    XBR3 = 0x00;    //////////////原为0x00////////////////////////////
//看门狗禁止
    WDTCN = 0x07;	
    WDTCN = 0xDE;   
    WDTCN = 0xAD;
    SFRPAGE = 0x0F;
    XBR0 = 0x05;	
    XBR1 = 0x00;	
    XBR2 = 0x44;	//交叉开关使能,使得P0-P3口能输出
    XBR3 = 0x00;    
    SFRPAGE = 0x0F;
    P0MDOUT = 0x00; //端口配置,P0-P3,P6-P7口为开漏输出
    P1MDOUT = 0x00; 
    P2MDOUT = 0x00; 
    P3MDOUT = 0x00; 
    P4MDOUT = 0x00; //P4口为开漏
    P5MDOUT = 0x07; 
    P6MDOUT = 0x00; 
    P7MDOUT = 0x00; 
    P1MDIN = 0xFF;  //所有端口为数字输入,没有模拟输入端口
    P2MDIN = 0xFF;  
    P3MDIN = 0xFF; 
    SFRPAGE = 0x0F;
    CLKSEL = 0x00;  
    OSCXCN = 0x00;	
    OSCICN = 0x84;	
    //采用内部晶振,为24.5MHZ8分频
}  
 
uchar readdata (void) {
    
	uchar temp2;
	SFRPAGE = 0x0f;
	P4=0xff;
	rdempty=0xff;
	while (rdempty);
	rdreq=1;
	rdclk=1;
	//delay1ms(1000);
	rdclk=0;
	temp2=P4;
	return temp2;
	
}

void senddata (uchar temp) {
    SFRPAGE = 0x00;
	TI0 = 0;
	SBUF0 = temp;
	while(!TI0);
}
void uart0_ini(){
    SFRPAGE = 0x00;
    SADEN0 = 0x00;      
    SADDR0 = 0x00;    
    SSTA0 = 0x05;      
    SCON0 = 0x50; 					/////////0x50;  ////禁止RI0
    SCON0 &= 0xFC; 	//将TI0和RI0清零
    IE|=0x10;
    SFRPAGE = 0x00;
    TMR2CF = 0x08;  		// T2 SYS CLK
    TMR2CN = 0x04;    	// TR2置1,启动定时器
}
void t2_baud(uchar t2val)	//T2溢出率设置,溢出率为(T1时钟频率)/(T2val)
{
	SFRPAGE = 0x00;
	RCAP2 = ~t2val+1;     
	TMR2 = RCAP2;     
}

main(){
	config();
	uart0_ini();
	t2_baud(10);		//波特率为19200bps
	EA=1;
	SFRPAGE=0x00;
	TR1=1;
while(1){
	UCdata=readdata();//0--99 100number
	senddata(UCdata);
	//senddata(0x22);	
	//delay1ms(1);
			
}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -