打印

KEIL uVISION3超怪问题

[复制链接]
1578|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
czhlcai|  楼主 | 2007-5-25 14:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用C8051F310在硬件上调试程序
void main (void)
{
    Init_Device();
    Read_Dip_Switch();
    
    P_XMS1 = 0;
    P_XMS2 = 0;
    P_XDIR = 0;
    PCA0CP2 = 0xC350;   //单用这个就不进入中断。
    //PCA0CPL2 = 0x50;
    //PCA0CPH2 = 0xC3;
    EA = 1;      
    while (1);
}
当我换成这样就可以进入PCA0定时器的2中断
    //PCA0CP2 = 0xC350;
    PCA0CPL2 = 0x50;   //换成这两句就行。
    PCA0CPH2 = 0xC3;   //换成这两句就行。
    EA = 1;      
    while (1);
我看了一下编译后的汇编。都是
MOV      PCA0CPH2(0xEC),#ADC0GTL(0xC3)
MOV      PCA0CP2(0xEB),#0x50
为什么就不中断呢?怎么回事??

相关帖子

沙发
czhlcai|  楼主 | 2007-5-25 15:15 | 只看该作者

我又仔细的看了看汇编

    PCA0CP2 = 0xC350; 
    //PCA0CPL2 = 0x50;
    //PCA0CPH2 = 0xC3;
是  MOV      PCA0CPH2(0xEC),#ADC0GTL(0xC3)
    MOV      PCA0CP2(0xEB),#0x50
先写高位再写低位。
而  //PCA0CP2 = 0xC350; 
    PCA0CPL2 = 0x50;
    PCA0CPH2 = 0xC3;
是  MOV      PCA0CPL2(0xEB),#0x50
    MOV      PCA0CPH2(0xEC),#ADC0GTL(0xC3)
先写低位再写高位。
为什么结果却是上面的不会进中断,而下面的则会进入?

使用特权

评论回复
板凳
czhlcai|  楼主 | 2007-5-25 15:21 | 只看该作者

在调试中也出现问题,

我想在PCA0=0xC350处中断
    PCA0CPL2 = 0x50;
    PCA0CPH2 = 0xC3;
执行完这两句后,如下图,PCA0CP2=0x0050H,PCA0CP1=0xC300H,真怪。
而且PCA0CP2不会在0x0050H处中断,而是0xC350处。是不是KEILC51有问题?

使用特权

评论回复
地板
czhlcai|  楼主 | 2007-5-28 10:44 | 只看该作者

没人知道吗?

使用特权

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

本版积分规则

43

主题

136

帖子

0

粉丝