查看: 2342|回复: 5

[其他] KBI模块出问题了,跪求解答!

[复制链接]

该用户从未签到

4

主题

6

帖子

0

新手上路

Rank: 1

积分
27
最后登录
1970-1-1
发表于 2013-1-6 15:29:40 | 显示全部楼层 |阅读模式
本人想用MC9S08MP16单片机KBI模块,从KBI2P7端输入4.3v的1HZ的50%的PWM波,但是为什么没有给PWM波的时候主函数里面的LED还能正常闪,但是一旦给了PWM波LED就不亮了 !而且从PTD0看不到正常的PWM波,只有500mv的方波,这好像是因为函数信号发生器激起来的。为什么我在中断中明明在中断中给了高低电平却测不到?
void KBI_INIT()
{
//  PTBDD &=0X7F;//PB7输入
//  PTCDD &=0X7F;//PC7输入
//按照手册上要求的步骤
//  KBI3SC &=0XFD;//先把中断允许关掉
//  KBI3PE =0X01;//PTD0检测速度、允许引脚中断
//  KBI3ES =0X00;//下降沿中断
//  KBI3SC =0X06;//清楚标志,开中断,只边沿检测
PTCD  =0X00;
PTCPE =0XFF;
KBI2SC_KBIE =0;//先把中断允许关掉

KBI2ES =0X00;//下降沿,低电平
KBI2PE =0X80;//PTc7检测速度、允许引脚中断
KBI2SC =0X02;//边沿检测
}
unsigned int numk=0;
unsigned int count=0;
void main(void)
{
EnableInterrupts; /* enable interrupts */
// include your code here  
//  
init_clk();
delay(1);

//    PDB1();
//  PWM();
//  MTIM();
KBI_INIT();
PTDDD =0XFF;
while(1)
{  
DisableInterrupts;
PTDD_PTDD2 =1;        //亮LED1; PTDD_PTDD2
asm (nop);asm (nop);

PTDD_PTDD3 =1;        //亮LED2;
asm (nop);asm (nop);
EnableInterrupts;
delay(200);

DisableInterrupts;
PTDD_PTDD2 =0;        //亮LED1; PTDD_PTDD2
asm (nop);asm (nop);     
PTDD_PTDD3 =0;
asm (nop);asm (nop);
EnableInterrupts;
delay(200);
count++;               
__RESET_WATCHDOG();    //默认是开看门狗的
}
}
interrupt VectorNumber_Vkeyboard2 void kbi2()
{
//    KBI2SC_KBACK=1;//清除外部中断标志位
//    kbi_value = PTGD;//读取按键值
KBI2PE =0;
KBI2SC =0X04;
KBI2SC_KBACK=1;//清除外部中断标志位
KBI2SC_KBACK=1;//清除外部中断标志位
asm (nop);asm (nop);
asm (nop);asm (nop);
numk++;
if(numk%2)
{

PTDD_PTDD0 =0;
asm (nop);asm (nop);
asm (nop);asm (nop);
delay(2);  
}
else
{                  
PTDD_PTDD0 =1;
asm (nop);asm (nop);
asm (nop);asm (nop);     
//         PTDD_PTDD3 =1;        //亮LED2;
delay(2);
}
if(numk==2000)
numk=0;
KBI2PE =0X80;//PTc7检测速度、允许引脚中断
KBI2SC =0X02;//边沿检测
}

 
2 分钟前 上传
下载附件 (76.62 KB)
 

 
我知道答案 目前已有4人回答
回复

使用道具 举报

该用户从未签到

11

主题

288

帖子

0

版主

Rank: 7Rank: 7Rank: 7

积分
610
最后登录
1970-1-1
发表于 2013-1-6 15:41:23 | 显示全部楼层

RE:KBI模块出问题了,跪求解答!

PTCD =0X00;
PTCPE =0XFF;
这里KBI2P7引脚设置为输出了。应该为输入。还有,你图上是不是把KBI2P7画错了?
回复 支持 反对

使用道具 举报

该用户从未签到

4

主题

6

帖子

0

新手上路

Rank: 1

积分
27
最后登录
1970-1-1
 楼主| 发表于 2013-1-6 23:19:27 | 显示全部楼层

RE:KBI模块出问题了,跪求解答!

对,图上画错了。KBI2P7用的是复用功能,不是不用设置输入输出了吗?
PTCE=0XFF手册上是说启动上拉,还请版主帮我再看看是不是我弄错了,谢谢啦。
回复 支持 反对

使用道具 举报

该用户从未签到

11

主题

288

帖子

0

版主

Rank: 7Rank: 7Rank: 7

积分
610
最后登录
1970-1-1
发表于 2013-1-7 11:25:26 | 显示全部楼层

RE:KBI模块出问题了,跪求解答!

你改成输入试一下。我这里也没有8位的板子。没法帮你测试,只能在理论上帮你分析一下。
回复 支持 反对

使用道具 举报

该用户从未签到

4

主题

6

帖子

0

新手上路

Rank: 1

积分
27
最后登录
1970-1-1
 楼主| 发表于 2013-1-7 23:48:06 | 显示全部楼层

RE:KBI模块出问题了,跪求解答!

版主你好,我的这个程序为什么在中断中不能对引脚数据寄存器赋值?比如说中断中的PTDD_PTDD0,不能对其赋值,导致了出现这个问题?还有就是中断执行到倒数第二行 KBI2PE =0X80;//  马上中断标志位就置位了。导致程序一直循环中断。但是当我把最后一行KBI2SC =0X02;//  改成KBI2SC =0X06;的时候程序却又进不了中断了!
回复 支持 反对

使用道具 举报

该用户从未签到

11

主题

288

帖子

0

版主

Rank: 7Rank: 7Rank: 7

积分
610
最后登录
1970-1-1
发表于 2013-1-9 09:14:30 | 显示全部楼层

RE:KBI模块出问题了,跪求解答!

在中断中不要再进行初始化,有可能你初始化的时候会产生中断。在中断中只要清除中断标志位就可以了。另外,你注意IO口的方向是不是正确。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-21 00:21 , Processed in 0.093878 second(s), 26 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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