本帖最后由 qbwww 于 2020-4-17 23:35 编辑
/***************************************************************/
#define P00_PushPull_Mode P0CON |= 0X01;
#define P01_PushPull_Mode P0CON |= 0X02;
#define uchar unsigned char
#define uint unsigned int
/********************************************************************
* 名称 : Delay_1ms()
* 功能 : 延时子程序,延时时间为 1ms
* x * 输入 : x (延时一毫秒的个数)
* 输出 : 无
***********************************************************************/
void Delay_1ms(uint i)//1ms延时
{
uchar x,j;
for(j=0; j<i; j++)
for(x=0; x<=148; x++);
}
/*****************************************************
*函数名称:void Uart_Init()
*函数功能:Uart中断初始化
*****************************************************/
void Uart_Init() //选择Timer1作为波特率信号发生器
{
P2CON &= 0xFC; //TX/RX设置为输入带上拉
P2PH |= 0x03;
SCON |= 0X50; //设置通信方式为模式一,允许接收
TMCON |= 0X02;
TH1 = (32*1000000/115200)>>8; //波特率为T1的溢出时间;
TL1 = 32*1000000/115200;
TR1 = 0; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数
ET1 = 0; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断
EUART = 1; //开启Uart中断
EA = 1;
}
/********************************************************************
* 名称 : Com_Int()
* 功能 : 串口中断子函数
* 输入 : 无 * 输出 : 无
***********************************************************************/
void Com_Int(void) interrupt 4
{
uchar receive_data;
EA = 0;//中断使能的总控制 0:关闭所有的中断 1:打开所有的中断
if(RI == 1) //当硬件接收到一个数据时,RI会置位,sbit RI = SCON^0;
{
RI = 0;
receive_data = SBUF;//接收到的数据
if(receive_data == '1')
{
P00 =1;
P01 =0;
}
if(receive_data == '2')
{
P00 =0;
P01 =1;
}
if(receive_data == '3')
{
P00 =0;
P01 =0;
}
}
for(i=0; i<36; i++)
{
SBUF = PuZh[i]; //将要发送的数据放入到发送寄存器
while(!TI); //等待发送数据完成
TI=0; //清除发送完成标志位
Delay_1ms(1);
}
EA = 1;
}
void main(void)
{
P00_PushPull_Mode; //LED1灯配置为强推挽
P01_PushPull_Mode; //LED1灯配置为强推挽
Uart_Init();
while(1)
{
}
}
|