社区
单片机/工控
帖子详情
51同时使用串口与定时器
AjunlintianxiaA
2011-02-10 09:52:24
不知有没有高手用51同时使用串口和定时器,串口设置波特率用占用一个计数器,定时器占用一个计数器,为什么我同时使用时定时器就完全不受控制了(不管THO TLO装什么数频率都不变),感觉这个应用应该很基础啊,在网上搜了半天也没有答案,求高手指教。。。
...全文
925
9
打赏
收藏
51同时使用串口与定时器
不知有没有高手用51同时使用串口和定时器,串口设置波特率用占用一个计数器,定时器占用一个计数器,为什么我同时使用时定时器就完全不受控制了(不管THO TLO装什么数频率都不变),感觉这个应用应该很基础啊,在网上搜了半天也没有答案,求高手指教。。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jzys8000
2011-08-21
打赏
举报
回复
把你的keyscan()函数 改成 串口中断函数即可
Great_Bug
2011-02-21
打赏
举报
回复
1
有没有串口中断服务程序?
你允许了串口中断,如果没有提供相应的ISR,是要出问题的。
AjunlintianxiaA
2011-02-12
打赏
举报
回复
[Quote=引用 6 楼 great_bug 的回复:]
串口使用不会影响定时器0的,你的程序可能有问题。
[/Quote]
void Chuankou()
{
ES=1;
SM0=0;
SM1=1;
REN=1;
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
}
//定时器初始化
void Timer0_Init()
{
TMOD |= 0x01;
TH0=0xff;
TL0=0xb0;
EA=1;
ET0=1;
TR0=1;
}
// 定时器中断函数
void Timer0_Int() interrupt 1
{
TH0=0xff;
TL0=0xb0;
if(m1<jd1)
pwm1=1;
else
pwm1=0;
if(m2<jd2)
pwm2=1;
else
pwm2=0;
count++;
count%=200;
m1=count;
m2=count;
}
void keyscan()
{
while(!RI); //RI=1时表示一帧数据接收完毕,并已经装入接收SBUF中,要求CPU取走数据。
P2=SBUF;
RI=0;
}
void main()
{
Chuankou();
Timer0_Init();
while(1)
{
keyscan();
}
}
有没有高手能指教错误。。。
xmxqiyan
2011-02-11
打赏
举报
回复
定时器1用来控制串口,定时器0用来作为普通定时器用,这样同时用定时器用串口没有问题
如果想只用定时器1来同时作定时器和控制串口比较麻烦
lbing7
2011-02-11
打赏
举报
回复
被占用的定时器是不能再被使用的
用定时器直接作为通信的时钟源,这个也是51不太给力的一个地方
现在很多其它的MCU都可以引用多种时钟源作为通信用,而不占用独立的定时器
DISINHUI
2011-02-11
打赏
举报
回复
如果精度可以接受,建议用软串口,自己写代码。
DISINHUI
2011-02-11
打赏
举报
回复
禁止串口,才能按照普通Timer使用。
Great_Bug
2011-02-11
打赏
举报
回复
串口使用不会影响定时器0的,你的程序可能有问题。
AjunlintianxiaA
2011-02-11
打赏
举报
回复
[Quote=引用 4 楼 xmxqiyan 的回复:]
定时器1用来控制串口,定时器0用来作为普通定时器用,这样同时用定时器用串口没有问题
如果想只用定时器1来同时作定时器和控制串口比较麻烦
[/Quote]
我就是这样用的啊。。。可只能设置TMOD=0x20时串口才能用,但定时器0不受控制,而TMOD=0x21串口就不能用,定时器0正常。
51
串口
计算
串口
调试
定时器
初值计算
51
串口
计算
串口
调试
定时器
初值计算 郭天祥同款
51
串口
计算
串口
调试
定时器
初值计算 郭天祥同款
51
单片机
串口
(
定时器
2和波特率发生器)的
使用
内含程序包括
使用
定时器
2作为
串口
发生器的
定时器
和
使用
专门的波特率发生器,详尽的示例,经过测试成功。
51
单片机
定时器
的
使用
51
单片机
定时器
的
使用
51
单片机定时
51
单片机
定时器
的
使用
器的
使用
高级
51
单片机
串口
程序(
定时器
1)
基于STC增强型单片机STC90RC
51
6RD+单片机、采用
定时器
1做为波特率发生器、
定时器
0做为检测字符串接收结束标志、加入CRC16校验
51
串口
通信计算器自动计算
定时器
初始值
51
串口
通信计算器,可以根据选定的波特率来自动计算
定时器
初始值
单片机/工控
27,374
社区成员
28,770
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章