|
//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_();
}
}
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|