共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电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
汽车+汽车电子电阻解释与分析被打赏5分 | |
STM32F103的I2C驱动OLED动态显示被打赏30分 | |
分享汽车通信和多媒体总线结构被打赏20分 | |
【我踩过的那些坑】结构堵孔导致的喇叭无声问题被打赏50分 | |
NUCLEO-U083RC学习历程38+串口通过队列的方式输出两个字符串被打赏20分 | |
【我踩过的那些坑】分享一下调试一款AD芯片的遇到的“坑”被打赏50分 | |
电流检测模块MAX4080S被打赏10分 | |
【我踩过的那些坑】calloc和malloc错误使用导致跑飞问题排查被打赏50分 | |
分享电控悬架的结构与工作原理(一)被打赏20分 | |
多组DCTODC电源方案被打赏50分 |