OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4268|回复: 3

关于定时器问题

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2017-7-24
在线时间
0 小时
发表于 2017-7-24 18:44:12 来自手机 | 显示全部楼层 |阅读模式
T0,T1优先权已默认,为什么改变定时器就可以执行,而不改变i在等于5后就不变了,但频率一定要高优先级啊,求改错
#include<REG51.H>
#define uint unsigned int
#define uchar unsigned char
sbit beep=P1^5;
uint hh[]={50000,10000,5000,2500,1250,625,500};
uchar i=0,j=0;
void timer0() interrupt 1 // 定时器0控制频率
{ if(i==7)
   i=0 ;
TH0=(65536-hh[i])/256;
TL0=(65536-hh[i])%256;
beep=~beep;
}
void timer1() interrupt 3 // 定时器1控制同个频率持续的时间,50mS脉冲
{TR0=0;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
j++;
if(j==6){
              j=0;
              i++;
              }
TR0=1;
}
void main()
{  
EA=1; //开启总中断
ET0=1;ET1=1;//开启外部定时器中断
TMOD=0x11;
TH0=(65536-hh[i])/256;
TL0=(65536-hh[i])%256;//给定时器0赋初值
TH1=(65536-50000)/256;
TL1=(65536-50000)%256; //给定时器1赋初值
TR0=1;TR1=1;//启动两个定时器;

while(1);}
Screenshot_2017-07-24-18-43-25-437_com.miui.notes.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2017-7-24
在线时间
0 小时
 楼主| 发表于 2017-7-24 18:46:50 来自手机 | 显示全部楼层
想了好久,想不明白,贴吧一位大神让我把T0,T1换下,重复是可以了,但蜂鸣器声音不对了。
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2017-7-24
在线时间
0 小时
 楼主| 发表于 2017-7-24 18:47:45 来自手机 | 显示全部楼层
i在等于5后就死循环,不等于6了,,
回复 支持 反对

使用道具 举报

19

主题

126

帖子

0

精华

初级会员

Rank: 2

积分
142
金钱
142
注册时间
2016-8-12
在线时间
50 小时
发表于 2017-7-25 08:13:35 | 显示全部楼层
你确定是50ms脉冲吗?0.3s的脉冲吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-12-23 07:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表