请教UART6的问题。【恢复】
我写了一段程序,想让单片机与主机进行通信,单片机型号是NEC78F0822,将单片机的TXD6脚和RXD6脚通过电阻串成一根线,然后用MAX232、RS232和主机相连,不知道这段程序什么地方出现了问题,望高手指点。#pragma sfr
#pragma di
#pragma ei
#pragma nop
#define uint unsigned int
#define uchar unsigned char
#define RXD6 P1.2
#define TXD6 P1.3
uchar rdata,rdata1,rdata2;
void delay(uint Z)
{
uint x,y;
for(x=Z;x>0;x--)
for(y=200;y>0;y--);
}
void init_CPU(void)
{
DI();
PCC=0;
RCM=0x01;
MOC=0;
WDTM = 0x7f;
MCM=0x03;
}
void init_UART()
{
PM1.2=1;
PM1.3=0;
CKSR6=0x02;
BRGC6=104;
ISC=0x0f;
ASICL6.1=1;
ASICL6.0=0;
SRIF6=0;
SRMK6=0;
STIF6=0;
STMK6=0;
}
void UART_send(uchar data)
{
ASIM6=0xC4;
TXB6=data;
while(!STIF6);
STIF6=0;
NOP();
}
uchar UART_read(void)
{
ASIM6=0xA4;
while(!SRIF6);
rdata=RXB6;
SRIF6=0;
return(rdata);
NOP();
}
void main()
{
init_CPU;
init_UART;
rdata1=UART_read();//读取电脑发过来的数据
delay(200);
rdata2=rdata1+1; //将数据加1后发出
delay(200);
UART_send(rdata2);
delay(200);
UART_send(rdata2);
delay(200);
UART_send(rdata2);
delay(200);
UART_send(rdata2);
delay(200);
UART_send(rdata2);
delay(200);
} 你好像没开中断,不用开啊?! 是的,就是通过电阻后连在一起,我就是按照设置步骤过来的,但就是通不过啊 “将单片机的TXD6脚和RXD6脚通过电阻串成一根线”你这句话怎么理解呢?是将TXD6和RXD6两个线连载一起吗?
对于NEC串口不能正常通信的问题,基本出在设置串口波特率上。你可以看看数据手册,上面有设置步骤。
TO tarzar M48
NEC的单片机有些串口名叫做“UART 6”,并不意味着他是第6个串口,一个命名而已 NEC78F0822
啊,有6个串口啊?
页:
[1]