通讯有问题,示波器上没有波形,不知道哪里有错误,哪位大神帮忙看看
*********************************************SH79F3283***************************************
#include "SH79F32.h"
extern uchar r_Data; //用来接受SBUF的数据
extern uchar out_flag; //输出标志位
void euartInital(void); //初始化EUART
/***************************************
************ 初始化串口 *************
****************************************
*/
void euartInital(void)
{
PCON=0x00; //SMOD=0;波特率不加倍 SSTAT=0;SCON[7:5]工作方式为SM0,SM1,SM2
SCON=0x40; //选择方式1,8位异步方式,可变波特率
T2CON=0x30; //RCLK=1;定时器2产生接受波特率 TCLK=1定时器2产生发送波特率 TR2=0; 开始定时器2
T2MOD=0x20; //TCLKP2=0;选择系统时钟作为定时器2的时钟源8M T2OE=0;设置P0.5/T2作为时钟输入或I/O端口 DCEN=0;定时器2仅作为递增计数器
RCAP2L=0xFE; //波特率为115200 0xFFCC 9600
RCAP2H=0xFF;
TL2=0XFE;
TH2=0xFF;
SADDR=0x00;
SADEN=0x00;
TR2=1; //启动定时器2
}
void euart_ISR(void) interrupt 4
{
if(TI==1)
{
TI=0;
}
else if(RI==1)
{
r_Data=SBUF;
RI=0;
out_flag=1;
}
}
void main(void)
{
SYSInitial();
ADCInitial(); //ADC初始化
INTInitial(); //INT初始化
IOInitial(); //IO初始化
euartInital(); //EUART初始化
while(1)
{
if(out_flag==1)
{
SBUF=8;
out_flag=0;
}
}
}
void INTInitial(void)
{
IEN0=0xF0; //EA=1,所有中断允许位开启;EADC=1,ADC中断允许位; ET2=1,定时器中断允许位
//ES0=1, EUART0中断允许位
LPDCON=0x89;
}
********************************************************SH79F166A***************************************************
#include "SH79F166A.h"
#include <INTRINS.H>
extern uchar r_data=0;
extern uchar out_flag=0;
void main(void)
{
IOInitial();
UARTInitial();
TimerInitial();
INTInitial();
PWMInitial();
while(1)
{
if(r_data==8)
{
led();
delay_50ms(30);
led_OFF();
}
}
}
void SYSInitial(void)
{
// CLKCON=0x00;
CLKCON=0x08;
Delay=0xff;
while(--Delay);
CLKCON=0x0C; //8M
}
void UARTInitial(void)
{
PCON=0x00; //SMOD=0,SSTAT=0;SCON[7:5]工作方式为SM0,SM1,SM2
SCON=0x40; //SM[1:0]=01,方式1,SM2=0,禁止停止位确认检验,停止位将置RI为1产生终端
T2CON=0x34; //定时器2产生接受/发送波特率,TR=1,定时器2启动
T2MOD=0; //系统时钟作为定时器2的时钟源,设置P0.5/T2作为时钟输入或I/O端口,禁止定时器2作为递增/递减计数器,定时器2仅作为递增计数器
RCAP2L=0xFE; //波特率为115200
RCAP2H=0xFF;
TL2=0xFE;
TH2=0xFF;
}
void INTInitial(void)
{
EXF0=0x00; //外部中断4、3、2低电平触发。外部中断3、2中断请求标志位无中断挂起
IEN0=0xF2; //EA=1,打开中断总开关;ES0=1,允许EUART0中断;ET5=1,允许定时器5溢出中断, ET2=1,定时器打开
IEN1=0x02; //ET4=1,ET3=1,允许定时器4、3溢出中断;EX4=1,允许外部中断2中断
LPDCON=0x89; //低电压检测控制寄存器。LPDEN=1,LPD允许位,允许低电压检测,LPDS[3:0]LPD电压允许位。1001:3.75v
}
void UART_ISR(void) interrupt 4
{
if(TI==1)
{
TI=0;
}else if(RI==1)
{
r_data=SBUF;
RI=0;
out_flag=1;
}
}
|