📄 serial_ctrl.c
字号:
#include"spce061a.h"
#define W_CLK 0x0001
#define FQ_UD 0x0002
#define RESET 0x0004
#define serial_in 0x0008
#define A 0 //A与B口转换(0为A口)
unsigned long int ctrl_word;//32位控制字
unsigned int phase_word;//相位控制字
/****************写频率*************************/
void writef(unsigned long int Hz)
{
ctrl_word=(unsigned long int)(Hz*35.7913941333);
}
/*******************************************************/
/*********************写相位********************************/
void writep(unsigned int dec)
{
phase_word=(unsigned int)dec*0.0888888888889;
}
//----------------串行写入(低位到高位)------------------------------
void serial_update()
{
unsigned char i;
cleario_bit(A,FQ_UD);
for(i=0;i<32;i++)//写频率控制字
{
cleario_bit(A,W_CLK);
if((ctrl_word>>i)&0x00000001) //取出位
setio_bit(A,serial_in);
else
cleario_bit(A,serial_in);
setio_bit(A,W_CLK);
}
//**********************************************
for(i=0;i<8;i++)//写W0
{
//************写前三位控制字**************************
cleario_bit(A,W_CLK);
if(i==0)
setio_bit(A,serial_in);
else if(i==1||i==2)
cleario_bit(A,serial_in);
//*******************************************************
//*******************相位控制字**************************
else
{
if((phase_word>>(i-3))&0x0001)
setio_bit(A,serial_in);
else
cleario_bit(A,serial_in);
setio_bit(A,W_CLK);
}
//********************************************************
setio_bit(A,W_CLK);
}
setio_bit(A,FQ_UD); //频率更新
}
//-------------------------------------------------
void delay(unsigned int time)
{
while(time--)
*P_Watchdog_Clear=0x0001;
}
void initial(void)
{
*P_SystemClock=C_Fosc_49M;
setdir_bit(A, W_CLK+FQ_UD+RESET+serial_in);
setattrib_bit(A,W_CLK+FQ_UD+RESET+serial_in);
cleario_bit(A,W_CLK);
setio_bit(A,RESET);//复位
delay(2);
cleario_bit(A,RESET);
//==================================================
setio_bit(A,W_CLK);//从并行方式转换到串行方式
setio_bit(A,FQ_UD);
writef(1000);
serial_update();
//==================================================
}
//*******************测试********************************
main()
{
initial();
writep(0);
writef(10000);
serial_update();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -