共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 跳转至页
回复
| 有奖活动 | |
|---|---|
| 2026年“我要开发板活动”第三季,开始了! | |
| 硬核工程师专属补给计划——填盲盒 | |
| “我踩过的那些坑”主题活动——第002期 | |
| 【EEPW电子工程师创研计划】技术变现通道已开启~ | |
| 发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
| 【EEPW在线】E起听工程师的声音! | |
| 高校联络员开始招募啦!有惊喜!! | |
| 【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
我要赚赏金打赏帖 |
|
|---|---|
| 以启明云端ESP32P4开发板实现TF卡读写功能被打赏¥28元 | |
| 【分享开发笔记,赚取电动螺丝刀】树莓派5串口UART0配置被打赏¥25元 | |
| 【STM32F103ZET6】17:分享在Rtos项目中断管理的使用经验被打赏¥23元 | |
| 【STM32F103ZET6】16:分享在中断中恢复串口任务,遇到的问题被打赏¥31元 | |
| 在FireBeetle2ESP32-C5上实现温度大气压检测及显示被打赏¥21元 | |
| 【分享开发笔记,赚取电动螺丝刀】SAME51双串口收发配置被打赏¥27元 | |
| Chaos-nano操作系统在手持式VOC检测设备上的应用被打赏¥37元 | |
| 【分享开发笔记,赚取电动螺丝刀】关于在导入第三方库lib时,wchart类型冲突的原因及解决方案被打赏¥30元 | |
| 在FireBeetle2ESP32-C5上实现温湿度检测和显示被打赏¥20元 | |
| 在FireBeetle2ESP32-C5上实现光照强度检测及显示被打赏¥21元 | |
我要赚赏金
