|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
程序如下:
//本段程序可以测试R232通讯是否正常,
//上位机发送'#'or'@',单片机发送'u'and 'e'.
#include <ADuC812.h>//ADuC812的P1口不能作为输出口。
#include <stdio.h>
#include <math.h>
void delay10ms(void);
sbit P2_0= P2^0;sbit P2_1= P2^1;sbit P2_2= P2^2;sbit P2_3= P2^3;
unsigned char command=0;
main()
{
unsigned int i;
//初始化很重要,波特率要对应
SCON = 0x50; /* SCON: mode 1, 8-bit UART, enable rcvr */
TMOD = 0x20; /* TMOD: timer 1, mode 2, 8-bit reload */
TH1 = 0xfd; /* TH1: reload value for 9600 baud @ 11.0592MHz */
TL1 = 0xfd;
TR1 = 1; /* TR1: timer 1 run */
// TI = 1;
// RCLK = 1;
// TCLK = 1;
// TH2 = 0xff;
// TL2 = 0xdc;
// RCAP2H = 0xff;
// RCAP2L = 0xdc;
// TR2 = 1;
ES =1;
EA = 1;
while(1)
{
while(i--){}
//send
if (command ==1)//串口发送
{
SBUF = 'u';
while(!TI) ;
TI = 0;
delay10ms();
SBUF = 'e';
while(!TI) ;
TI = 0;
command = 0;
}
}
}
void delay10ms(void)
{
unsigned char i,j,k;
for(i=12;i>0;i--)
//_nop_();
for(j=45;j>0;j--)
for(k=7;k>0;k--)//延时时间为t=[i*(j*(k*2+3)+3)+5]*T,这样延时时间是
//10.001ms
{}
}
void serial (void) interrupt 4 //中断接收
{
unsigned char r_byte;
ES = 0;
RI = 0;
r_byte = SBUF;
if (r_byte == '#') command = 1;
ES = 1;
if (r_byte == '@') command = 1;
ES = 1;
}
发送一个‘#’或‘@’,收到‘ue’,但是误码率太高了!请各位指点一下!谢谢! |
|