PSoC的IO口的一些个人感觉

[复制链接]
8564|8
 楼主| ic开发者 发表于 2011-11-21 18:00 | 显示全部楼层 |阅读模式
PSoC的功能,大家都有目共睹,毋庸置疑,但是就IO来说,个人觉得不是那么简便。这里先不说它有8种输出模式,就简单的输入输出来说,在低级的51单片机里,赋高赋零一个简单的等式即可,例如P0_0=1;既简便又不占用资源,仅仅是一条赋值语句。但是在PSoC3里面,仅仅一个赋值,就需要用到一个函数,一个函数就相当于调用,占有一定的资源。用了一段时间PSoC了,也感受了它的强大,只是最近想做个东西,才发现确实不那么简便。
yangguangaisha 发表于 2011-12-7 22:40 | 显示全部楼层
的却如此 有同感啊
meishizhaoshi 发表于 2011-12-13 19:42 | 显示全部楼层
有共鸣
PSoC小子 发表于 2011-12-13 20:52 | 显示全部楼层
PSoC3/5的IO的读写也可以通过直接赋值/读取寄存器来完成,而且这种方法效率比直接用API要高得多。 推荐一篇博客,专门写PSoC3 IO口的不同赋值方式的比较,写的挺好。
http://www.cypress.com/?rID=38854&cache=0
去耦滤波 发表于 2011-12-19 22:22 | 显示全部楼层
值得借鉴一下
phnbs 发表于 2011-12-23 00:03 | 显示全部楼层
PSoC小子,你可试过用用SFR 寄存器如8051一样操作Pin口 用SFRPROxDR 和SFRPRTxSEL,请PSoC小子高人
PSoC小子 发表于 2011-12-24 14:50 | 显示全部楼层
6楼,我没这样用过,但是刚才试了一下,可以用。代码如下:

#include <device.h>
#define P15_Enable        SFRPRT1SEL |= 0x20
sfr  P1  = 0x90;
sbit P15 = P1^5;
void main()
{
    P15_Enable;
    for(;;)
    {
        CyDelay(500);
                P15 = 1;
                CyDelay(500);
                P15 = 0;
    }
}
PSoC3所有GPIO口的寄存器(SFRPRTxDR, SFRPRTxPS, SFRPRTxSEL)在256bytes的片内SRAM均有映射,具体可以参考AN60630 - PSoC3 - 8051 Code Optimization 第二页。
phnbs 发表于 2011-12-24 17:08 | 显示全部楼层
请较PSoC小子高人
1。SFRPRT1SEL |= 0x20 是不是设置端口P1的第六口P1_5 为1 使能?
    2.  SFR P1=0x09 是00001001 而不是第六口 为何要设这个?
3.SBIT P15 是设P1-5为1吗?
这个程序是操作P1_5 闪烁。但在topdesiger 里怎样做?
phnbs 发表于 2011-12-24 17:36 | 显示全部楼层
能说说 SFRPRTxDR, SFRPRTxPS, SFRPRTxSEL 干嘛用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

151

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部