📄 user.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 + -