OpenEdv-开源电子网

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

哪位大佬帮忙看一下,51单片机用T1做外部计数模式,外部脉冲频率140Hz左右,单片机读不懂脉冲信号

[复制链接]

2

主题

9

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2020-5-21
在线时间
8 小时
发表于 2021-4-20 09:12:40 | 显示全部楼层 |阅读模式
1金钱

void Timer0_Configuration()
{
                ET0=1;
                AUXR |= 0x80;                //定时器时钟1T模式
                TMOD = 0x40;                //设置定时器模式
                TL0 = 0xCD;                //设置定时初值
                TH0 = 0xD4;                //设置定时初值
                TF0 = 0;                //清除TF0标志
                TR0 = 1;                //定时器0开始计时
}


void Timer1_Configuration()
{
                ET1=1;
                AUXR |= 0x70;                //定时器时钟1T模式
                TMOD = 0x40;                //设置计数模式
                TL1 = (65536-5)%256;                //设置定时初值
                TH1 = (65536-5)/256;                //设置定时初值
                TF1 = 0;                //清除TF0标
                TR1 = 1;       
                IP=0x08;
}

void Timer_Configuration()
{
                Timer1_Configuration();
                Timer0_Configuration();
                EA=1;//开启总中断
}

void Time1()interrupt 3 using 0
{
                P27=!P27;
                Reversal_Flag=1;
                TR1 = 0;       
}


void Time0()interrupt 1 using 1
{
                if(Main_Flag==1)
                        Enter_Set_count++;
                if(Running.Increase_material_Sensor_Detection_Delay_Flag==1)
                        Running.Increase_material_Sensor_Detection_Delay_Time++;
                if(Running.Brushless_Electric_Machine_On_Time_Flag==1)
                        Running.Brushless_Electric_Machine_On_Time++;
                if(Running.Brushless_Electric_Machine_Off_Time_Flag==1)
                        Running.Brushless_Electric_Machine_Off_Time++;
                if(Running.Brushless_Electric_Reversal_Flag==1)
                        Running.Brushless_Electric_Reversal_Time++;
                if(Running.Brushless_Electric_Foreward_Flag==1)
                        Running.Brushless_Electric_Foreward_Time++;
                if(Read_ADC_Value_Time_Flag==1)
                        Read_ADC_Value_Time++;
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

889

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1468
金钱
1468
注册时间
2020-8-19
在线时间
333 小时
发表于 2021-4-20 14:59:32 | 显示全部楼层
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2021-4-21 01:57:19 | 显示全部楼层
帮顶
回复

使用道具 举报

10

主题

3281

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8204
金钱
8204
注册时间
2020-5-11
在线时间
3697 小时
发表于 2021-4-21 14:49:56 | 显示全部楼层
“单片机读不懂脉冲信号”是怎么个现象?怎么没有main()?
专治疑难杂症
回复

使用道具 举报

2

主题

9

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2020-5-21
在线时间
8 小时
 楼主| 发表于 2021-4-22 16:33:28 | 显示全部楼层
LcwSwust 发表于 2021-4-21 14:49
“单片机读不懂脉冲信号”是怎么个现象?怎么没有main()?

51单片机用外部计数功能,脉冲信号频率在200H左右,读取不到脉冲信号,没有main函数是因为在另外一个源文件里,我是通过文件调用的方式来实现程序功能的,所以只贴出了计数器的代码
回复

使用道具 举报

2

主题

255

帖子

0

精华

高级会员

Rank: 4

积分
821
金钱
821
注册时间
2013-6-5
在线时间
141 小时
发表于 2021-5-14 14:58:25 | 显示全部楼层
本帖最后由 zhxzhx 于 2021-5-14 14:59 编辑

程序写的什么东西?和你要达到的目的无关
你想要达到什么目的?
是记录1秒内有多少脉冲,还是每个脉冲多宽?
回复

使用道具 举报

1

主题

58

帖子

0

精华

高级会员

Rank: 4

积分
798
金钱
798
注册时间
2016-11-13
在线时间
63 小时
发表于 2021-6-15 19:42:30 | 显示全部楼层
顶顶顶
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 02:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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