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

📄 sc16is752.c

📁 sc16is752自定义命令
💻 C
字号:
#include<AT89X52.h>
#include<intrins.h>
sfr ISP_CONTR=0XE7;//见PDF的39页。当ISP_CONTR的值设置为0X60时,表示用户程序软件复位并从系统的ISP监控程序区开始执行程序。
sfr CCON=0XD8;//见PDF的72页。PCA计数器控制寄存器。
sfr CMOD=0XD9;//见PDF的72页。PCA模式寄存器。
sfr CL=0XE9;//见PDF的72页。
sfr CH=0XF9;//见PDF的72页。
sfr CCAPOL=0XEA;//见PDF的72页。
sfr CCAPOH=0XFA;//见PDF的72页。
sfr CCAPM0=0XDA;//见PDF的72页。
sfr CCAPM1=0XDB;//见PDF的72页。
sbit CR=0XDE;//见PDF的72页。PCA计数器运行控制位。通过软件置位1来启动PCA计数器,通过软件清零关闭PCA计数器。
sbit MCU_Start_led=P1^7;
//unsigned char self_command_array[4]={0x22,0x33,0x44,0x55};
#define Self_Define_ISP_Download_Command 0x22//自己定义的ISP命令。
#define RELOAD_COUNT 0Xfa;//晶振频率为22.1184MHZ,T1作为波特率发生器,SMOD=0,波特率为9600,定时器初值为0XFA。

void serial_port_initial();
void send_UART(unsigned char);
void UART_Interrupt_Receive(void);
void soft_reset_to_ISP_Monitor(void);
void delay(void);
void display_MCU_Start_led(void);
void send_PWM(void);

void main(void)
{
	unsigned char i=0;
	P2=0X01;
	serial_port_initial();
	display_MCU_Start_led();
	//send_UART(0X35);
	//send_UART(0Xa7);
	send_PWM();
	while(1)
	{
    //send_UART(0X35);
//   send_UART(0Xa7);
	P2=~P2;
	delay();
	
	}
}

void serial_port_initial()
{
	SCON=0X50;//串口工作在方式1,一个起始位,8位数据,一个停止位,接受允许。
	TMOD=0X20;//T1工作在模式2,8位自动重装模式
	TH1=RELOAD_COUNT;
	TL1=RELOAD_COUNT;
	TR1=1;
	ES=1;
	EA=1;
 }

void send_UART(unsigned char i)
{
	ES=0;
	TI=0;
	SBUF=i;
	while(TI==0);
	TI=0;
	ES=1;
 }

void UART_Interrupt_Receive(void) interrupt 4
{
	unsigned char K=0;
	if(RI==1)
		{
			RI=0;
			K=SBUF;
			if(K==Self_Define_ISP_Download_Command)
				{
					delay();
					delay();
					soft_reset_to_ISP_Monitor();
				}
				send_UART(K);
			}
			else
				{
					TI=0;
				}
}

void soft_reset_to_ISP_Monitor(void)
{
	ISP_CONTR=0x60;
}

void delay(void)
{
	unsigned int j=0;
	unsigned int g=0;
	for(j=0;j<5;j++)
	{
		for(g=0;g<60000;g++)
		{
			_nop_();
		  _nop_();
		  _nop_();
		  _nop_();
		  _nop_();
	   }
	  }
	}
	
	void display_MCU_Start_led(void)
	{
		unsigned char i=0;
		for(i=0;i<3;i++)
		{
			MCU_Start_led=0;
			delay();
			MCU_Start_led=1;
			delay();
			MCU_Start_led=0;
		}
	}
	
	void send_PWM(void)
	{
		CMOD=0X00;
		CL=0X00;
		CH=0X00;
		CCAPOL=0X80;
		CCAPOH=0X80;
		CCAPM0=0X42;
		CR=1;
	}
	
	

	
	

		
		
			
	

⌨️ 快捷键说明

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