gaoshiduo 发表于 2013-1-12 22:53:06

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

//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_();
        }
}
页: [1]
查看完整版本: C51程序,进不了串口中断,求帮忙看下程序