打印
[STC单片机]

各位大侠,STC11L16XEd单片机帮忙做个程序功能如下

[复制链接]
3346|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
longcomeon|  楼主 | 2014-5-23 20:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 longcomeon 于 2014-5-23 20:13 编辑

各位大侠,STC11L16XEd单片机帮忙做个程序功能如下
单片机的晶体用的是22.1184Mhz
A,B,C,三个信号。
3个IO口,在P2口。
A为输入信号,有三种状态0,1,方波(频率大约在1Khz,占空比一直在变化的波形)。
单片机通过检测A信号的状态,来确定B,C输出状态。
当A=1时,B,C都为高电平,即B=1,C=1。
当A=0时,B,C都为低电平,即B=0,C=0。
当A为方波时,B为高电平,C为低电平,即B=1,C=0。
单片机通过uart串口接电脑,检测B,C的状态。

大侠们,帮忙看下这么做,谢谢。

相关帖子

沙发
longcomeon|  楼主 | 2014-5-23 20:37 | 只看该作者
有大侠帮下吗没,我是初学者

使用特权

评论回复
板凳
望断云山| | 2014-5-23 22:44 | 只看该作者
如果放一段你自己写的代码,会有人帮你看有什么问题.
但是像这样让人帮你从头到尾写一个工程,估计是没有人理的

使用特权

评论回复
地板
longcomeon|  楼主 | 2014-5-24 00:03 | 只看该作者
望断云山 发表于 2014-5-23 22:44
如果放一段你自己写的代码,会有人帮你看有什么问题.
但是像这样让人帮你从头到尾写一个工程,估计是没有人理 ...

来个提示也行,呵呵

使用特权

评论回复
5
longcomeon|  楼主 | 2014-5-24 10:43 | 只看该作者
等待好人

使用特权

评论回复
6
diy1997| | 2014-5-24 12:09 | 只看该作者
你都知道要实现什么样的功能了,自己写吧.

使用特权

评论回复
7
longcomeon|  楼主 | 2014-5-24 12:20 | 只看该作者
diy1997 发表于 2014-5-24 12:09
你都知道要实现什么样的功能了,自己写吧.

不知道怎么用IO口检测外部输入到单片机的波形

使用特权

评论回复
8
yamato2011| | 2014-5-24 15:10 | 只看该作者
使用中断的边沿触发检测A的状态。

使用特权

评论回复
9
longcomeon|  楼主 | 2014-5-24 20:32 | 只看该作者
yamato2011 发表于 2014-5-24 15:10
使用中断的边沿触发检测A的状态。

A的IO口不是中端口,是普通的IO口

使用特权

评论回复
10
yamato2011| | 2014-5-25 14:42 | 只看该作者
longcomeon 发表于 2014-5-24 20:32
A的IO口不是中端口,是普通的IO口

那你的A就是不能接到中断口上了?如果这样的话,就写程序检测吧,很简单。

使用特权

评论回复
11
longcomeon|  楼主 | 2014-5-26 12:33 | 只看该作者
yamato2011 发表于 2014-5-25 14:42
那你的A就是不能接到中断口上了?如果这样的话,就写程序检测吧,很简单。 ...

大侠能简单写下,让我参考下吗,谢谢饿

使用特权

评论回复
12
yamato2011| | 2014-5-26 13:15 | 只看该作者
具体不知道你要干嘛,根据你现在的需求,试试以下方案:
A = 0;
A_old = 0;
t = 0;

while(1)
{
        time_off();//关定时器
        t = get_counter();//获取定时器内部计数器的值。
        //此处加上初次运行的条件过滤
        time_open();//开定时器       
        A = Pxx;
       
        if( A != A_old )
        {
                //根据t的值折算时间T,看T有没有超过1ms(1KHZ)
                if(在1ms内)
                {
                        端口为1KHZ的情况
                }
                else
                {
                        if(A==0)
                        {
                                端口为0的情况
                        }
                        else
                        {
                                端口为1的情况
                        }
                }
        }
       
        A_old = A;
}

使用特权

评论回复
13
longcomeon|  楼主 | 2014-5-26 13:28 | 只看该作者
yamato2011 发表于 2014-5-26 13:15
具体不知道你要干嘛,根据你现在的需求,试试以下方案:
A = 0;
A_old = 0;

大侠,A = Pxx;这个Pxx是什么意思?

使用特权

评论回复
14
x13686626760| | 2014-5-26 13:33 | 只看该作者
PXX的意思端口分配,看你是分配在什么端口。想学习Q我392248167

使用特权

评论回复
15
longcomeon|  楼主 | 2014-5-26 13:55 | 只看该作者
x13686626760 发表于 2014-5-26 13:33
PXX的意思端口分配,看你是分配在什么端口。想学习Q我392248167

好的,我加你

使用特权

评论回复
16
ayb_ice| | 2014-5-26 14:43 | 只看该作者
过采样A输入即可,

检测方波:
计数一段时间内的电平变化次数

检测高电平:
一段时间内连续高电平

检测低电平:
一段时间内连续低电平

输出相关信号标志

主程序显示信号

采样可以通过定时中断来完成

使用特权

评论回复
17
longcomeon|  楼主 | 2014-5-26 15:25 | 只看该作者
ayb_ice 发表于 2014-5-26 14:43
过采样A输入即可,

检测方波:

采样的代码应该怎么写

使用特权

评论回复
18
ayb_ice| | 2014-5-26 15:49 | 只看该作者
longcomeon 发表于 2014-5-26 15:25
采样的代码应该怎么写

本次的值与上次的值班比较就可以了

使用特权

评论回复
19
longcomeon|  楼主 | 2014-5-26 16:19 | 只看该作者
ayb_ice 发表于 2014-5-26 15:49
本次的值与上次的值班比较就可以了

能具体点吗,谢谢哈,我是小白

使用特权

评论回复
20
longcomeon|  楼主 | 2014-5-28 14:46 | 只看该作者
还是不会,占空比不确定,无法定时啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

87

主题

170

帖子

3

粉丝