哪位大侠用过Winbond 的 77E58

mshaolin 2003-05-05 09:56:51
请问如何使用串口1?尤其是波特率定时器如何编程?

哪位大侠有初始化的例子,在下感激不尽!
...全文
106 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
li_hai_quan 2003-05-24
  • 打赏
  • 举报
回复
我在用呀
具体情况具体分析呀
看门狗建议用汇编写
switch(BAUD)
{
case 0: // 波特率 = 1200
RCAP2L = 0x40; // 晶振 = 36.864 MHz
RCAP2H = 0xfc;
break;
case 1: // 波特率 = 2400
RCAP2L = 0x20; // 晶振 = 36.864 MHz
RCAP2H = 0xfe;
break;
case 2: // 波特率 = 4800
RCAP2L = 0x10; // 晶振 = 36.864 MHz
RCAP2H = 0xff;
break;
case 4: // 波特率 = 19200
RCAP2L = 0xc4; // 晶振 = 36.864 MHz
RCAP2H = 0xff;
break;
case 5: // 波特率 = 38400
RCAP2L = 0xe2; // 晶振 = 36.864 MHz
RCAP2H = 0xff;
break;
default: // 波特率 = 9600
RCAP2L = 0x88; // 晶振 = 36.864 MHz
RCAP2H = 0xff;
break;
}
T2CON= 0x34; //定时器2为波特率发生器
TMOD= 0x11; //定时器T0,T1为16位计数器
SCON= 0x50; //方式一,8位UART方式
TL0 = 0;
TH0 = 0xFA;
TH1=0xFC;
TL1=0x40;
ET0 = 1; //允许T0中断
TR0 = 1; //启动T0,每秒中断2000次
PT0 = 1; // 定时器一高优先
IT0=1; //跳变触发方式
EX0 = 1; //不禁止INT0中断
TR1 = 1; //启动T1,每秒中断3200次
tmp=READE2_WORD(166);//EEPROM
if(tmp==0x0f0f)
{
freqin=1;
PX0=1;
}
else freqin=0;
tmp=READE2_WORD(167);
if(tmp==0x0f0f)
{
ET1 = 1; //允许T1中断
CURSELF=1;
SAVESELF=1;
}
else
{
ET1 = 0; //禁止T0中断
CURSELF=0;
SAVESELF=0;
}
ES = 1; //允许串口中断
EA = 1; // 开放中断
wangluyan 2003-05-22
  • 打赏
  • 举报
回复
up!

27,520

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧