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

📄 user.c

📁 这里有很多我自己做的凌阳单片机源程序
💻 C
字号:
#include<spce061a_chf.h>
#include"TX.h"
extern t_counter;
extern r_timer[18];
extern kk;
unsigned int *addr=0xf100;
///////////////////////////////////////////
//函数:void system_init(void)
//描述:系统初始化函数
//参数:无
//返回:无
/////////////////////////////////////////////
void system_init(void)
{
	*P_IOA_Dir=0x00ff;
	*P_IOA_Attrib=0x00ff;
	*P_IOA_Data=0x0000;
	*P_IOB_Dir=0x0100;
	*P_IOB_Attrib=0x0108;
	*P_IOB_Data=0x0008;			
}
///////////////////////////////////////////
//函数:void Tx_hanshu(unsigned int temp_data);
//描述:发送函数
//参数:要发送的数据
//返回:无
/////////////////////////////////////////////
void Tx_hanshu(unsigned int temp_data)
{
	unsigned int i=0;
	*P_TimerA_Data = 0xff61; 
	*P_TimerA_Ctrl = 0x0036;//开始先关闭;设置TimerA,使IOB8输出38KHz的PWM波形,供红外发射调制作
	*P_INT_Ctrl=0x0010;
	asm("irq on");
	while(t_counter<=16)
	{
		*P_TimerA_Ctrl = 0x03f0;
	}
	*P_TimerA_Ctrl = 0x0036;
	t_counter=0;	
	while(t_counter<=3)
	{
		*P_TimerA_Ctrl = 0x0036;
	}	
	for(i=0;i<16;i++)
	{		
		if(temp_data&0x8000)
		{
			t_counter=0;
			while(t_counter<3)
			{
				*P_TimerA_Ctrl = 0x03f0;
			}
			t_counter=0;
			while(t_counter<1)
			{
				*P_TimerA_Ctrl = 0x0036;
			}
		}
		else
		{
			t_counter=0;
			while(t_counter<1)
			{
				*P_TimerA_Ctrl = 0x03f0;
			}
			t_counter=0;
			while(t_counter<1)	
			{
				*P_TimerA_Ctrl=0x0036;
			}
		}
		temp_data<<=1;//左移一位
	}
}
///////////////////////////////////////////
//函数:unsigned int Rx_hanshu(void)
//描述:接收函数
//参数:无
//返回:接收到的数据
/////////////////////////////////////////////
unsigned int Rx_hanshu(void)
{
	unsigned int j=0;
	unsigned int temp_data=0;
	*P_SystemClock=clock_A;//24.576--24.576/8	
	Set_TimerA_Data(start_dataA);//定时器A从0开始计数
	Set_TimerA_Ctrl(stopA);//开始先不计数	
	*P_INT_Ctrl=0x0200;//开IRQ3_EXIT2中断	
	asm("irq on");
	while(kk<18)
	{
		*P_Watchdog_Clear=0x01;
	}	//等待译码结束
	asm("nop");
	if((r_timer[1]<2000)&(r_timer[1]>1400))//说明译码结束
	{
		for(j=2;j<18;j++)
		{
			if(r_timer[j]>250)//说明数据位开始
			{
				temp_data=temp_data|1;
			}
			if(r_timer[j]<250)
			{
				temp_data|=0;
			}
			if(j<17)
			{
				temp_data<<=1;
			}
			else
			{
				temp_data+=0;
			}
		}
		return (temp_data);	
	}
	return (0xf001);
}
///////////////////////////////////////////
//函数:void write_flash(unsigned int d)
//描述:向flash写入数据
//参数:d--要写入的数据
//返回:无
/////////////////////////////////////////////
void write_flash(unsigned int d)
{
	*P_Flash_Ctrl=0xaaaa;
	*P_Flash_Ctrl=0x5533;
	*addr=d;
}
///////////////////////////////////////////
//函数:void page_erase(void)
//描述:擦除相应页的内容
//参数:无
//返回:无
/////////////////////////////////////////////
void page_erase(void)
{
	*P_Flash_Ctrl=0xaaaa;
	*P_Flash_Ctrl=0x5511;
	*addr=0x0000;//向相应的页地址写如任意值;
}
///////////////////////////////////////////
//函数:unsigned int read_flash(void)
//描述:读取相应地址的数据
//参数:无
//返回:返回相应地址的数据
/////////////////////////////////////////////
unsigned int read_flash(void)
{
	unsigned int value;
	value=*addr;
	return (value);
}

⌨️ 快捷键说明

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