IO 引脚中断问题

[复制链接]
4385|17
 楼主| langgq 发表于 2011-7-5 21:10 | 显示全部楼层 |阅读模式
用一个按键当开关,按一下,灯的状态就改变
  p1.0作为按键输入 配置为 drive:High    Z 上升沿触发   
p1.1接LED灯

程序为
#include <m8c.h>        // part specific constants and macros
#include "PSoCAPI.h"    // PSoC API definitions for all User Modules
#include "ports.h"
#pragma interrupt_handler APSoC_GPIO_ISR;
int i=0;
void main()
{
M8C_EnableGInt;
INT_MSK0|=INT_MSK0_GPIO;//版上说这个是开GPIO中断的,具体的不是很清楚
LED_1_Switch(1);

}
void APSoC_GPIO_ISR()
{  i++;
   LED_1_Invert();
   }

然后boot.asm文件改成

    org   1Ch                      ;GPIO Interrupt Vector
    ljmp _APSoC_GPIO_ISR
    reti

开始我是
  org   1Ch                      ;GPIO Interrupt Vector
    ljmp PSoC_GPIO_ISR
    reti
然后再在
PSoC_GPIO_ISR:

reti
中加入中断服务程序** 这样不行
wangzsa 发表于 2011-7-5 21:16 | 显示全部楼层
改成直接在boot.asm中跳转不行吗?
 楼主| langgq 发表于 2011-7-5 21:21 | 显示全部楼层
zhuww 发表于 2011-7-5 21:26 | 显示全部楼层
tpl的那个文件改了没
zhanglli 发表于 2011-7-5 21:40 | 显示全部楼层
这样改boot.asm,如果工程重新生成(generate),那么boot.asm会被默认的覆盖,之前的修改就没了。
 楼主| langgq 发表于 2011-7-5 21:49 | 显示全部楼层
那怎么办啊
wangpe 发表于 2011-7-5 21:57 | 显示全部楼层
1)在chip editor里点击P1.0 pin脚,在配置窗口里选择interrupt为enable,这样boot.asm里会天价GPIO的ISR程序
org   1Ch                      ;GPIO Interrupt Vector
    ljmp _GPIO_ISR
    reti
2) 然后main.c文件如下
#include <m8c.h>        // part specific constants and macros
#include "PSoCAPI.h"    // PSoC API definitions for all User Modules
#include "ports.h"
#pragma interrupt_handler APSoC_GPIO_ISR;
int i=0;
void main()
{
M8C_EnableGInt;
INT_MSK0|=INT_MSK0_GPIO; //打开中断控制器中GPIO中断的屏蔽位
LED_1_Switch(1);

}

// 注意这里一定要与boot.asm中的函数名一致,去掉那个最开始的下划线
#pragma interrupt_handler GPIO_ISR  
void GPIO_ISR()
{  i++;
   LED_1_Invert();
   }
zhuww 发表于 2011-7-5 22:22 | 显示全部楼层
非要用终端吗?
llia 发表于 2011-7-5 22:29 | 显示全部楼层
你可以这样。将你P10的IO管脚设为IN,然后,用PRT1DR & 0x01来判别来的更快,更直接。
yufe 发表于 2011-7-5 22:37 | 显示全部楼层
按常理,按键管脚要设置为输入,如果设为三态高阻High Z的话,它的输入一定是高的,自然不会有中断产生。
guoyt 发表于 2011-7-5 22:46 | 显示全部楼层
对PSOC了解的不多,程序里面好像没有进行引脚的配置啊,难道PSOC不用在程序里面设置吗?
jxin 发表于 2011-7-6 09:50 | 显示全部楼层
对PSOC了解的不多,程序里面好像没有进行引脚的配置啊,难道PSOC不用在程序里面设置吗?
guoyt 发表于 2011-7-5 22:46
在程序里进行配置也可以,但是在pinout 窗口配置省事,配置完了代码在psocconfigtbl.asm中就完成了
jxin 发表于 2011-7-6 09:54 | 显示全部楼层
PSoC 1 GPIO Demystified,这个BLOG有两部分,看完了就可以对psoc1 的GPIO的使用方法掌握了
http://www.cypress.com/?rID=39496
guoyt 发表于 2011-7-6 14:44 | 显示全部楼层
在程序里进行配置也可以,但是在pinout 窗口配置省事,配置完了代码在psocconfigtbl.asm中就完成了
jxin 发表于 2011-7-6 09:50
哦,这样啊
 楼主| langgq 发表于 2011-7-6 16:11 | 显示全部楼层
哦,知道了,多谢
liuyu1955920 发表于 2011-7-8 14:31 | 显示全部楼层
用户模块配置有没有问题?
jxin 发表于 2011-7-8 14:38 | 显示全部楼层
用户模块配置有没有问题?
liuyu1955920 发表于 2011-7-8 14:31
不是很明白你的问题,可以举个例子?
landelixulin 发表于 2014-7-18 22:57 | 显示全部楼层
朋友你们好啊,我遇到大问题要请教你。#include "ports.h",我在psoc1 的main.c里加的时候, 编译时说cannot include source file "ports.h"; file not found。我要不加#include "ports.h",编译时问题更多。您知道怎么回事吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

932

主题

8762

帖子

1

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