📄 tx_send.c
字号:
unsigned int i=0;
unsigned int j=3;
char new_comm = 0; //通讯完成标志
void SYSCLK_Init();
void Interrupt_Init();
void Init_IO(void);
void Build_InitWord(void);
void Init_Send(void); //初始化发射模块
void Init_Tim1(void); //初始化定时器1,做波特率发生器
void ClockS(void); //产生发射时钟脉冲
void delay1(unsigned int x); //软件延时
void delay600ns(void);
void Send(void); //发送数据包
void watchdog_Init(void);
void UART_Init (void); //配置串口通讯
void main()
{
EA=0;
PCA0MD&=~0x40; // Disable Watchdog timer
PCA0CN=0x40;
SYSCLK_Init();
Init_IO();
Interrupt_Init (); //中断配置
UART_Init ();
Init_Tim1();
watchdog_Init();
Build_InitWord(); //构造初始化配置字
Init_Send(); //配置发送模块
delay1(4998); //delay 3.125ms,Tpd2sby,min 3 ms
Txword[0]=0xcc;
Txword[1]=0xcc;
Txword[2]=0xcc;
Txword[3]=0;
Txword[4]=0;
Txword[5]=0;
i = 0;
EA = 1; //上位机通讯程序robotest接口测试
while(1)
{
PCA0CPH2=0x20;
if(new_comm==1)
{
Send();
new_comm=0;
LED = ~LED;
}
}
}
void comm(void) interrupt 4
{
if(RI0==1)
{
RI0=0;
if(j<6)
Txword[j++]=SBUF0;
}
if(j==6)
new_comm=1;
}
void UART_Init (void)
{
SCON0 = 0x70; // Serial Port Control Register(01110000b),方式1,8位可变波特率
}
void Init_Tim1(void)
{
TCON = 0x40;
TMOD = 0x20;
CKCON=0x02;//2400
// CKCON=0x08;//115200
TL1=0x96;
TH1 = 0x96;
}
void watchdog_Init(void)
{
PCA0CN=0x40; //允许PCA计数器功能
PCA0MD=0x40; //允许看门狗定时器,并设系统时钟为计数时钟
PCA0CPL2=0xff; //设定复位时间为32ms
PCA0CPH2=0x00;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -