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

📄 config.#2

📁 应用与c8051f020的地震波检测单片机源代码
💻 #2
字号:
// Config Routine
void config (void) 
	{ unsigned int n = 0;		//用于等待振荡器稳定计数

	EA = 0;
//	WDTCN = 0x07;				//位2-0,最大时间间隔,本系统中约56ms
//    WDTCN = 0xA5;   			//写入0xA5 将使能并复位WDT。
                    			//写入0xFF 将锁定禁止功
    WDTCN = 0xDE;
	WDTCN = 0xAD;
// Configure the XBRn Registers
    EMI0CF=0x00;				//外部存储器接口配置,此处忽略,
								
						//以下对于XB0,XB1,0表示不连到引脚
	XBR0 = 0x04;			//CP0=0;	ECI0=0;	PCA0=001;	UART0=1;	SPI0=1;	SMB0=1;
	XBR1 = 0x00;//18;			//SYSout=0;	T2EX=0;	T2=0;		/INT1=1;	T1=1;	/INT0=0;	T0=0;	CP1=0
	XBR2 = 0x40;			//弱上拉禁止=0;XBARE=1; NOP;	T4EXE=0;T4E=0;	UART1=1;EMIF=0;		CNVSTR=0

                      //端口配置,默认为开漏输出数字输入(1 = Push Pull Output and digital input)
    P0MDOUT = 0xFC; 		//P0.7:RTCCK;	P0.6:RTCDA; P0.[5:2]:SPI;  P0.1:RX0;  P0.0:TX0	0011 1100
    P1MDOUT = 0xFF; 		//P1.[7:6]:NOP; P1.5:INT1; P1.4:T1; P1.3:CEX1; P1.2:PLSOut/CEX0; P1.1RX1; P1.0:TX1 1100 1001
    P2MDOUT = 0xFF; 		//P2.[7:4]:NOP; P2.3:485TE;P2.2:485RE; P2.1:NOP; P2.0:232SHDN	1111 1111	
    P3MDOUT = 0xFF; 		//P3.7:NOP; P3.6:PlugIn,P3.5:NOP; P3.4:Marksqu; P3.[3:0]:LCD	1010 1111
    P74OUT  = 0xFF; 		//P7:RAM数据口;P[6:5]:RAM地址口; P4:NOP

    P1MDIN  = 0xFF;			//全部数字输入
	EMI0CF  = 0;//0x38; 		//NOP2;EMIF选择高端1;非复用1;带块选择10;//ALE脉宽2个系统时钟周期:01

	CPT0CN = 0x00;			//禁用
	CPT1CN = 0x00;			//禁用
	
					
// Oscillator Configuration
	OSCXCN = 0x67;						//外部振荡器控制字,不分频
    for (n = 0; n < 255; n++) ;         //等待振荡器起振    while ( (OSCXCN & 0x80) == 0 );     //等待振荡器稳定	OSCICN = 0x08;						//时钟丢失检测使能=0;NOP=00;内部振荡频率准备好标志=0;
											//系统时钟=外部振荡器(1);内振使能=0;内频率00

	
// Reference Control Register Configuration
	REF0CN = 0x03;						//NOP=000;AD0VREF=VREF0(0);AD1VREF=VREF1(0);
											//内部温度传感器使能=0;BIASE=1;内电压基准缓冲器=1

// ADC Configuration
	AMX0CF = 0x00;			//NOP=0000,AIN67,45,23,01不作差分输入配对
	AMX0SL = 0x00;			//通道选择,高字节忽略,低字节选择AIN0-7(0000-0111)或温度传感器(1xxx)
	ADC0CF = 0x38;			//*.7-3:转换速率控制位,取4,18M/5=2.2M;*.2-0:PGA G=1(000)   00111 000
	ADC0CN = 0xC1;			//AD0EN=1;AD0TM=1;AD0INT=0,标志,软清;ADC0BUSY=0;
								//ADC0CM=00,置ADC0BUSY启动跟踪;窗口比较匹配标志=0;AD0LJST=1,左对齐
	ADC0H  = 0x00;
	ADC0L  = 0x00;
				//窗口比较寄存器
	ADC0LTH = 0x00;				// ADC0 Less-Than High Byte Register
	ADC0LTL = 0x00;				// ADC0 Less-Than Low Byte Register
	ADC0GTH = 0xFF;				// ADC0 Greater-Than High Byte Register
	ADC0GTL = 0xFF;				// ADC0 Greater-Than Low Byte Register

    AMX1SL = 0x00;  			// AMUX1 Channel Select Register
    ADC1CF = 0x00;  			// ADC1 Configuration Register
    ADC1CN = 0x00;  			// ADC1 Control Register

// DAC Configuration
	DAC0CN = 0x00;//0x84;//				//10000 100
	DAC0L  = 0x00;				// DAC0 Low Byte Register
	DAC0H  = 0x00;				// DAC0 High Byte Register

	DAC1CN = 0x00;//0x84;//				// DAC1 Control Register
	DAC1L  = 0x00;				// DAC1 Low Byte Register
	DAC1H  = 0x00;				// DAC1 High Byte Register

// SPI Configuration
	SPI0CN  = 0x00;				// SPI Control Register
	SPI0CFG = 0x00;				// SPI Configuration Register
	SPI0CKR = 0x00;				// SPI Clock Rate Register

// UART Configuration------暂不设置
    SCON0  = 0x50;       		//方式1,8位可变波特率
    SADEN0 = 0x00;      		// Serial 0 Slave Address Enable
    SADDR0 = 0x00;      		// Serial 0 Slave Address Register

    PCON = 0x00;        		//使能波特率除2功能

    SCON1 = 0xD0;       		//方式3,9位可变波特率
    SADEN1 = 0x00;      		// Serial 1 Slave Address Enable
	SADDR1 = 0x00;      		// Serial 1 Slave Address Register

// SMBus Configuration
	SMB0CN = 0x47;				//忙标志0;使能位1;起始标志0;停止标志0;中断标志0;确认标志1;空闲定时器使能1;超时使能1;
	SMB0ADR = 0x0;				// SMBus Address Register
	SMB0CR = -160;				// SMBus Clock Rate Register


// PCA Configuration
    PCA0MD = 0x00;       		//PCA一直工作=0;NOP=000;系统时钟12分频000,ECF=0,禁止CF中断
    PCA0H  = 0x00;       		// PCA Counter/Timer High Byte	
    PCA0L  = 0x00;       		// PCA Counter/Timer Low Byte
    PCA0CN = 0x40;      		//CF=0;CR=1;NOP=0;CCF4-0=0;各种标志只能软件清;另:写完初值再配置PCA0CN顺便启动

    //Module 0
    PCA0CPM0 = 0x31;    		//升降边沿触发捕捉,允许中断
    PCA0CPL0 = 0x00;    		//PCA初值0x03E8=1000
    PCA0CPH0 = 0x00;    		//一定要先写低字节后写高字节

    //Module 1
    PCA0CPM1 = 0x00;    		//
    PCA0CPL1 = 0x00;    		// PCA Counter/Timer Low Byte
    PCA0CPH1 = 0x00;    		// PCA Counter/Timer High Byte

    //Module 2
    PCA0CPM2 = 0x00;    		// PCA Capture/Compare Register 2
    PCA0CPL2 = 0x00;    		// PCA Counter/Timer Low Byte
    PCA0CPH2 = 0x00;    		// PCA Counter/Timer High Byte

    //Module 3
    PCA0CPM3 = 0x00;    		// PCA Capture/Compare Register 3
    PCA0CPL3 = 0x00;    		// PCA Counter/Timer Low Byte
    PCA0CPH3 = 0x00;    		// PCA Counter/Timer High Byte

    //Module 4
    PCA0CPM4 = 0x00;    		// PCA Capture/Compare Register 4
    PCA0CPL4 = 0x00;    		// PCA Counter/Timer Low Byte
    PCA0CPH4 = 0x00;    		// PCA Counter/Timer High Byte
	
// Timer Configuration----unused
	CKCON = 0x00;				//T0,T1,T2,T4使用系统时钟12分频  18.432/12=1536KHz
	TH0 = -192;					// Timer 0 High Byte
	TL0 = -192;					// Timer 0 Low Byte
	TH1 = (65536 - 1536)/256;					// Timer 1 High Byte,定时10ms
	TL1 = (65536 - 1536)%256;					// Timer 1 Low Byte
	TMOD = 0x12;				//T1模式1定时10ms,T0模式2定时125us
	TCON = 0x00;				//TF1=0;TR1=1;TF0=0;TR0=1;IE1=0;IT1=0;IE0=0;IT0=1外部中断0配置下降沿有效

	RCAP2H = (65536 - BAUD_RATE_57600)/256;				//重装初值
    RCAP2L = (65536 - BAUD_RATE_57600)%256;				//
	TH2 = (65536 - BAUD_RATE_57600)/256;					//初值
	TL2 = (65536 - BAUD_RATE_57600)%256;					//
    T2CON = 0x34;				//T2作为UART0的接收发送时钟,
		
	TMR3RLL = 0x00;				//定时25ms = (0x10000-0x6A00)/(18432/12)
	TMR3RLH = 0x00;				//
	TMR3L 	= 0x00;				//
	TMR3H 	= 0x00;				//用作SM低电平超时检测
    TMR3CN 	= 0x00;				//溢出标志0;NOP:0000;TR3:1;使用SYS/12:0;选择时钟来SYS:0

    RCAP4H = 0x00;  			//Baudrate = 9600
    RCAP4L = 0x00;  			//
    TH4 = 0x00;     			//
    TL4 = 0x00;     			//
    T4CON = 0x00;   			//T4作为UART1的接收发送时钟,

// Reset Source Configuration
//
// Bit 7  | Bit 6  | Bit 5  | Bit 4  | Bit 3 | Bit 2 | Bit 1 | Bit 0
//------------------------------------------------------------------     
//    R	 |   R/W  |  R/W   |  R/W   |   R   |   R   |  R/W  |  R
//------------------------------------------------------------------
//  JTAG  |Convert | Comp.0 | S/W    | WDT   | Miss. | POR   | HW
// Reset  |Start   | Reset/ | Reset  | Reset | Clock | Force | Pin
// Flag   |Reset/  | Enable | Force  | Flag  | Detect| &     | Reset
//        |Enable  | Flag   | &      |       | Flag  | Flag  | Flag
//        |Flag    |        | Flag   |       |       |       |

	RSTSRC = 0x00;				// Reset Source Register


// Interrupt Configuration
	IE = 0x10;          		//EA=0;   IEGF0=0; ET2=0;    ESUART0=1; ET1=0; EX1=0; ET0=1; EX0=0
	IP = 0x02;          		//NOP=00; PT2=0;   PUART0=0; PT1=0;     PX1=0; PT0=1; PX0=0
	EIE1 = 0x00;        	//ECP1R=0; ECP1F=0;  ECP0R=0; ECP0F=0;  EPCA0=0; EWADC0=0; ESMB0=1; ESPI0=0;
	EIE2 = 0x00;        	//EXVLD=0; EES1=1;   EEX7=0;  EX6=0;    EADC1=0; ET4=0;   EADC0=0;  ET3=1
	EIP1 = 0x00;        		//PCP1R=0;.000..PPCA0=0,..000
	EIP2 = 0x00;        		//Extended Interrupt Priority 2

    EA=1;
    EA=1;						//冗余指令
// other initialization code here...

	}   //End of config

⌨️ 快捷键说明

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