本帖最后由 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)
- {
- }
- }
|