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

📄 int.c

📁 采用LPC935控制的一个项目
💻 C
字号:
#include <REG935.H>
#include"..\SOURCE\general.h"

BYTE CONTRAST_ADD=0x01;
BYTE CONTRAST=0x80;
void cpuint(void)
{

	//	BYTE i;
	//RSTSRC=0x32;		//内部复位

	//PT0AD=PT0AD&0xff;	

	P0M1=0x00;		   	// 推挽输出        //准双向口
	P0M2=0x00;

	P1M1=0xae;			//
	P1M2=0x5d;

	P2M1=0x33;			//P2:0xcf,0x7e
	P2M2=0xcc;
	
	P3M1=0x00;		   	//P3:0x03,0x00
	P3M2=0x03;
 
	POWCTRL=1;

	DIVM = 0x00;//0分频
	//TRIM|=0xc0;	
	TMOD|=0x11;//16位方式 
	
	TH0=0x20;//28036/256;	
	TL0=0x03;//28036%256;
	
	TH1=0x8a;//35536/256
	TL1=0xd0;//35536%256

	SCON=0x50; //使能接收选择串口模式1
	SSTAT=0xE0; //选择独立的Tx/Rx 中断
	BRGR0=0xF0; //9600 baud @ 7.373MHz
	BRGR1=0x02;
	BRGCON =0x03; //使能BRG  

	TR0=0;
	ET0=0;
	TR1=0;
	ET1=0;

	CLR=0;
	P0=0x03;	
	//EN=0;

	DEECON=0x00;

}
void CCU_init(DWORD pwm)
{
	
	OCB=1;			// enable ports P1.6 PWM outputs
	TPCR2H=0x00;	// set CCU Prescaler:
	TPCR2L=0x31;	// divide by 100 (99+1)
					
	TCR21=0x04;		// Prescaler for Phase Locked Loop:
					// Input frequency must be in range of 0.5-1Mhz
					// InpFrq=PCLK/(PLLDIV+1)=(CCLK/2)/(PLLDIV+1)
					// using the internal RC oscillator: CCLK=7.373MHz 
					// 		PLLDiv=6, 6+1=7      => 0.526 MHz
					// using Crystal 11.0592 MHz => 0.789 MHz

	CCCRB=0x01;		// non-inverted PWM output on channel B
//	CCCRD=0x02;		// inverted PWM output on channel D
	
	TCR20=0x80;		// Start PLL, OutputMode: stop
	OCB=1;			// wait a machine cycle
	while(PLLEN==0);// wait until PLL  locked

	TOR2H=0x00;		// Reload Value 0x00FF=255	
	TOR2L=0xff;		// -> PWM period
	TCR21|=0x80;	// update reload value

	OCRBH=(pwm&0x300)>>8;
	OCRBL=pwm&0xff;
//	OCRBH=0x00;		// initialize Duty-Cycle channel A 0x0100 => 25%
//	OCRBL=EEPROM_R(CONTRAST);
//	OCRBL=0x01;		
	TCR21|=0x80;	// update duty cycle

//	OCRDH=0x00;		// initialize Duty-Cycle channel D 0x0100 => 25%
//	OCRDL=0x0F;			
//	TCR21|=0x80;	// update duty cycle

	TCR20=0x82;		// Set output mode: asymmetrical PWM 

}

void delay(BYTE x)
{
	BYTE i,j,k;
	for(i=0;i<x;i++)
	{
		for(j=0;j<200;j++)
		{
			for(k=0;k<50;k++)
			{
				_nop_();
			}
		}
	}

}
BYTE EEPROM_R(WORD addr)
{
	BYTE i,addr1;
	EA=0;
	DEECON=0;
	if(addr>0xff)
	{
		DEECON|=0x01;	
		addr1=addr%0xff;
	}
	else
	{
		DEECON&=0xfe;
		addr1=addr;
	}
	DEEADR=addr1;
	while((DEECON&0x80)==0);
	i=DEEDAT;
	DEECON=0;
	EA=1;
	return i;
}

void EEPROM_W(WORD addr,BYTE dat)
{
	BYTE addr1;
	EA = 0;
	DEECON = 0;
	if(addr>0xff)  //高八位地址
	{
		DEECON |= 0x01;	
		addr1 = addr%0xff;
	}
	else
	{
		DEECON &= 0xfe;
		addr1 = addr;
	}
	DEEDAT = dat;
	DEEADR = addr1;
	while((DEECON&0x80)==0);
	DEECON&=0x7f;//清零数据EEPROM 中断标志
	EA = 1;
}

⌨️ 快捷键说明

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