📄 2.c
字号:
#include "STC12C5410AD.H"
#define uint unsigned int
#define uchar unsigned char
sfr AURX1=0xA2;
sbit N485=P3^2;
sbit N4852=P3^5;
sbit led1=P1^3;
sbit led2=P1^4;
uchar bdata DATA;
sbit BIT0=DATA^0;
sbit BIT7=DATA^7;
uchar idata RX[10],TX[28];
uchar Rx_Num;
uchar FASONG;
void IN1_init() //外中断1初始化
{
PX1=1; //中断最高级
EX1=1; //中断允许
IT1=1; //下降沿触发
}
void ser_int1 (void) interrupt 2 using 3
{
EX1=0;
AURX1=0x80;
FASONG=1;
}
void InitialUart()
{
SCON = 0x50;
TMOD |= 0x20;
TH1 = 0xFa;
TL1 = 0xFa;
TR1 = 1;
ES = 1;
}
//-----------------------------------------------------------------------------
//串口发送一个字节
//功能:发送一个字节数据
//入口参数:发送数据
//出口参数:无
//-----------------------------------------------------------------------------
void Send_Data(uchar Serial_data)
{
TI = 0;
SBUF = Serial_data;
while(!TI);
TI = 0;
}
//-----------------------------------------------------------------------------
//发送一帧数据函数
//原型:void TXD_Int(uchar *TX);
//功能:发送一帧数据
//入口参数:发送数据帧地址指针,Send_Num:发送数据的个数
//出口参数:无
//-----------------------------------------------------------------------------
void TXD_Int(uchar *TX,uchar Send_Num)
{
uchar i;
for(i = 0; i < Send_Num; i ++) Send_Data(*(TX+i));
RI = 0;
}
//-----------------------------------------------------------------------------
//UART0_interrupt
//-----------------------------------------------------------------------------
void UART0_ISR (void) interrupt 4
{
if(RI == 1)
{
RI = 0;
RX[Rx_Num] = SBUF;
Rx_Num ++;
if((Rx_Num >= 5)&&(FASONG==1))
{
N4852=0;
Rx_Num = 0;
TXD_Int(RX,5);
N4852=1;
AURX1=0x00;
FASONG=0;
EX1=1;
}
}
}
void T0_init(void) //定时器0初始化
{
TR0=0;
TMOD = 0X01;
TL0 =0X66;
TH0 =0XFC;
TR0=1;
ET0 = 1; //置中断优先级为高
PT0 = 1; //允许定时器中断
}
void timer0 (void) interrupt 1 using 3
{
uchar i;
int j;
TR0=0;
TL0 =0X66;
TH0 =0XFC;
j++;
if ((j>=2000)&&(FASONG==1))
{
j=0;
AURX1=0x00;
EX1=0;
N485=0;
for (i=0;i<24;i++) TX[i]=i+16;
TXD_Int(TX,24);
N485=1;
EX1=1;
}
TR0=1;
}
void main(void)
{
unsigned int ShowNum;
for(ShowNum = 0; ShowNum < 0xffff; ShowNum ++);
T0_init();
InitialUart();
IN1_init();
EA=1;
ES = 1;
N485=1;
Rx_Num = 0;
while (1)
{
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -