注册 登录
编程论坛 单片机编程

C51程序,进不了串口中断,求帮忙看下程序

小草朵朵 发布于 2013-01-12 23:09, 4443 次点击
//C51程序,使用的芯片是AT89C52。程序是要接收数据,但是进不去串口中断。以下是被我简化的程序,把其他子程序删除了。
//仿真的时候,把RI=1,可以进入串口中断;硬件调试时,接收不到数据,用示波器看P2.0,没有翻转波形。是否是波特率设置的问题?请高手指教。谢谢


#include "reg52.h"
#include <intrins.h>

sbit DA_CS = P1^4;
sbit DA_CLK = P1^5;
sbit DA_SDI = P1^6;
sbit DA_LD = P1^7;
sbit WTD = P3^5;
sbit P20=P2^0;

void Sys_Init()
{
    WTD=1;
    WTD=0;
    DA_SDI = 0;
    DA_LD = 0;
    DA_CLK = 1;
    DA_CS = 1;
    IO_SOUND = 1;
    }

void Timer_Init()
{        
    IE = 0;
    TCON = 0x00;
    TMOD=0x21;
    TH1=0xf4;
    TL1=0xf4;
    PCON=0x80;    //晶振是22.1184,SMOD为1,T1定时器工作模式2
    SCON=0xd0;  //串口工作模式1
    TH0=0x75;
    TL0=0x1d;
    T2CON=0;
    RCAP2H=0xfa;
    RCAP2L=0;
    IT0=1;
//    RI=0;
//    TI=0;
    REN=1;
    TR0=1;
    TR1=1;
    EX0=1;
    EX1=0;
    ET0=1;
    ET1=0;
    ES=1;
    EA=1;
    PS=1;
}

void timer0(void) interrupt 1
{
    ET0=0;
    TL0=0x1d;
    TH0=0x75;
    WTD=1;
    WTD=0;
    ET0=1;
}

void timer2(void) interrupt 5
{
    EA=0;
    T2CON&=0x7f;
    EA=1;
}

void Extern_0(void) interrupt 0
{
    EX0=0;
    T2CON|=0x04;
    EX0=1;
}

void Serial_comm(void) interrupt 4
{
    uint8 i,Temp;
    ES=0;
    P20=~P20;
    RI=0;
    ES=1;
}


void main()
{
    Sys_Init();
    Timer_Init();
    while(1)
    {
         WTD=1;
        WTD=0;
        _nop_();
    }
}
3 回复
#2
wangjialong2013-01-12 23:30
貌似放错地方了
#3
yaobao2013-01-13 12:30
膜拜啊,单片机才起步处于点亮LED阶段,只能帮顶了
#4
q9137942862017-04-27 10:14
初始化吧串口定时器关掉是几个意思?
1