微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 写了一个开关的程序。可是串口通信的中断加入后有问题

写了一个开关的程序。可是串口通信的中断加入后有问题

时间:10-02 整理:3721RD 点击:

#include<reg52.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit S=P2^0;
u16 count=0;
u16 time0=1000;
u16 time1=0;
u8 temp[2];
u8 number=0;
void init_Timer0(void);           
void main()
{
        init_Timer0();               //定时器T0初始化
        PCON=0;                                                      //波特率不加倍
        REN=1;                                                  //串行口接收允许
        SM0=0;                                                   //
        SM1=1;                                                  //工作模式2(10位异步收发器)
        ES=1;                                                   //打开串口中断允许
        TH1=253;
        TL1=253;                           //赋初值,波特率9600        
        TR1=1;                      //定时器1开始计时  
                                   
        while(1)         
        {        
                S=0;
        }
}
void init_Timer0(void)
{
        TMOD=0x21;
        EA=1;
        ET0=1;
        TH0=0xFC;
        TL0=0x6e;                 
}
void Timer0_Interrupt(void) interrupt 1
{
    TH0 = 0xFC;
    TL0 = 0x6e;
        count++;          //count每毫秒加一
}
void C_interrupt(void) interrupt 4
{         
           temp[number]=SBUF;
        number++;
        RI=0;
        if(number==2)
        {
                  time1=temp[1]*256+temp[0];
                number=0;                  TR0=1;
                while(count<time1)
                {
                        S=1;
                }
                count=0;
                TR0=0;
        }
                                                     
}


串口通信中断不可能执行完,因为你的计时器中断又开始计时了。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top