51开发的源程序。希望对大家学习单片机有帮助。
源代码在线查看: winbond的w77e58双串口测试程.txt
硬件:关于w77e58双串口的求助! [explorer_7] [51次] 01-5-10 下午 05:36:31
我现在正在用w77e58的双串口功能,但是我照华邦公司主页上的资料做实验做了半天,第一
个串口运行良好,始终打不开第二个串口,希望大侠能给一点帮助,发一点相关资料,最好
有一个例程。谢谢!E-mail:cj@cool.com.cn
w77e58例程 [RSCZ] [81次] 01-5-10 下午 07:51:12
winbond的w77e58双串口测试程
序:
打开超级终端(com1,baud rate=2400),用串口线连接单片机的任意一个串口,在超
级终端任意一个键,串口都产生中断,单片机的串口中断程序会予以响
应。
********************************************************************************
#include" w77c32.h"
static int flag_1,flag_0;
char c1[]="hello china";
char c2[]="hello World";
main()
{
int i;
flag_1=1;
flag_0=1;
//system init ,其中串口0用定时器2,串口1用定时器1
//串口1的设置
IE=0x90; //允许总中断和串口0的中断
TMOD=0x20; //定时器1工作在模式1
TL1=0xf4; //baud rate=2400
TH1=0xf4;
SCON1=0x58; //工作在模式1,允许接收
PCON=0x00; // SM0=0 SM1=1 在10位异步收发模式 SMOD=0 溢出速率/32
ES1=1; //串口1中断允许
SCON=0x58; //工作在模式1,接收允许
T2CON=0x30; //用定时器2做串口0的波特率发生器
RCAP2H=0xff; // 11.0592M晶振下,baud rate=2400
RCAP2L=0x70;
TR2=1;
TR1=1;
while(1)
{
if(flag_0) {TI=1;flag_0=0;}
for(i=0;i ;
if(flag_1) {TI_1=1;flag_1=0;}
for(i=0;i ;
}
}
void serial_0(void)interrupt 4
{
int i;
if(RI)
{
flag_0=1;
RI=0;
}
if(TI)
{
for(i=0;i {
TI=0;
SBUF=c1[i];
while(TI==0) ;
TI=0;
}
}
}
void serial_1(void)interrupt 7
{
int i;
if(RI_1)
{
flag_1=1;
RI_1=0;
}
if(TI_1)
{
for(i=0;i {
TI_1=0;
SBUF1=c2[i];
while(TI_1==0) ;
TI_1=0;
}
}
}
谢谢RSCZ大哥!你真是帮我解决了大难题! [explorer_7] [12次] 01-5-11 上午 09:10:46
我现在做一个消防系统的远程数据传输,有空多联系!谢谢!
不用谢 [RSCZ] [14次] 01-5-11 下午 07:36:55
有空可以发邮件联系(rscz@china.com)
点击这里回复这篇贴子>>
_____________________________________________________________________________
Copyright?,C51BBS论坛 2000-2001