共2条
1/1 1 跳转至页
77e58 关于77e58的双串口问题?
问
各位道友:
我的硬件电路是用77e58设计的一个双串口的中继器,在软件设计的时候,仿真的时候显示正确,但烧录的片中之后就显示不对,到底是怎么回事??
在软件设计时,对77e58还有什么特殊的要求吗?麻烦分析一下下面的程序!!
/***********************中继器程序*************************/
#include<77e58.h>
#define uint unsigned int
#define uchar unsigned char
sbit DERE0=P1^6;
sbit DERE1=P1^5;
sbit WDOG=P1^4;
uint time_count1;
/********************串口及定时器初始化*************/
void serial_init(void)
{
TMOD=0x21;
TH0=(65536-50000)/256; //t0延时时间为50ms
TL0=(65536-50000)%256;
TH1=0xfd; //定时器t1设置,串口1设置波特率9600
TL1=0xfd;
SCON1=0x50; //串口1工作在方式1
PCON=0x00;
EA=1;
ET0=1; //定时器0中断允许
TR0=1; //启动定时器
T2CON=0x30; //用定时器2做串口0的波特率发生器
RCAP2H=0xff; // 11.0592M晶振下,baud rate=9600
RCAP2L=0xd9;
TH2=0xff;
TL2=0xd9;
SCON0=0x50;
TR1=1; //启动定时器1
TR2=1; //启动定时器2
}
/************定时器t0中断,喂狗程序???????***************/
void time0(void) interrupt 1
{
EA=0;
TR0 = 0;
time_count1++;
if(time_count1 == 30) //共1.5s时间
{
WDOG=!WDOG; //喂狗
time_count1 = 0;
}
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
TR0=1;
}
/*******************主程序************************/
void main()
{
time_count1=0;
//DS12887_init();
serial_init();
DERE0=0;
DERE1=0;
while(1)
/*用查询的方法进行判断***********/
{
if(RI==1)
{
RI=0;
ACC=SBUF;
SBUF1=ACC;
DERE0=1;
DERE1=1;
}
else if(TI==1)
{
TI=0;
DERE0=0;
DERE1=0;
}
else if(RI1==1)
{
RI1=0;
ACC=SBUF1;
SBUF=ACC;
DERE0=1;
DERE1=1;
}
else if(TI1==1)
{
TI1=0;
DERE1=0;
DERE0=0;
}
}
}
答 1: re:T2 定时器设错了。应该是TH2=0xff;
TL2=0xdc.
我的硬件电路是用77e58设计的一个双串口的中继器,在软件设计的时候,仿真的时候显示正确,但烧录的片中之后就显示不对,到底是怎么回事??
在软件设计时,对77e58还有什么特殊的要求吗?麻烦分析一下下面的程序!!
/***********************中继器程序*************************/
#include<77e58.h>
#define uint unsigned int
#define uchar unsigned char
sbit DERE0=P1^6;
sbit DERE1=P1^5;
sbit WDOG=P1^4;
uint time_count1;
/********************串口及定时器初始化*************/
void serial_init(void)
{
TMOD=0x21;
TH0=(65536-50000)/256; //t0延时时间为50ms
TL0=(65536-50000)%256;
TH1=0xfd; //定时器t1设置,串口1设置波特率9600
TL1=0xfd;
SCON1=0x50; //串口1工作在方式1
PCON=0x00;
EA=1;
ET0=1; //定时器0中断允许
TR0=1; //启动定时器
T2CON=0x30; //用定时器2做串口0的波特率发生器
RCAP2H=0xff; // 11.0592M晶振下,baud rate=9600
RCAP2L=0xd9;
TH2=0xff;
TL2=0xd9;
SCON0=0x50;
TR1=1; //启动定时器1
TR2=1; //启动定时器2
}
/************定时器t0中断,喂狗程序???????***************/
void time0(void) interrupt 1
{
EA=0;
TR0 = 0;
time_count1++;
if(time_count1 == 30) //共1.5s时间
{
WDOG=!WDOG; //喂狗
time_count1 = 0;
}
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
TR0=1;
}
/*******************主程序************************/
void main()
{
time_count1=0;
//DS12887_init();
serial_init();
DERE0=0;
DERE1=0;
while(1)
/*用查询的方法进行判断***********/
{
if(RI==1)
{
RI=0;
ACC=SBUF;
SBUF1=ACC;
DERE0=1;
DERE1=1;
}
else if(TI==1)
{
TI=0;
DERE0=0;
DERE1=0;
}
else if(RI1==1)
{
RI1=0;
ACC=SBUF1;
SBUF=ACC;
DERE0=1;
DERE1=1;
}
else if(TI1==1)
{
TI1=0;
DERE1=0;
DERE0=0;
}
}
}
答 1: re:T2 定时器设错了。应该是TH2=0xff;
TL2=0xdc.
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图四被打赏50分 | |
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 |