导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→C51中断函数在传递参数时候出错?谁能帮我看看,谢谢!

* 64745: C51中断函数在传递参数时候出错?谁能帮我看看,谢谢!

   qinr 
qinr发表的帖子 

 C51中断函数在传递参数时候出错?谁能帮我看看,谢谢!
下面的这个程序的外部中断响应函数里面调用printfNumber(16,220,x_zb);的时候
第一个传递参数16,到了printfNumber传递到函数里面的x就成0了,为什么?
谁能帮我看看?谢谢!
用keil模拟的

整个程序如下:


#include   <reg52.h>  
#include   <stdlib.h>  
#include   <intrins.h>  
#include   <stdio.h>  

#define Uchar unsigned char
#define Uint unsigned int

Uchar x_zb,y_zb;

void WriteData( Uchar dataW );
void WriteCommand( Uchar CommandByte );
void Delay( Uint );
void printfNumber(Uchar x,Uchar y,Uchar Number);
void Locatexy(Uchar,Uchar);
void EnableINT(void);
void DisableINT(void);

void interrupt0(void) interrupt 2 using 3   //定义外部中断1
{
    DisableINT();
    Delay(20);
    printfNumber(16,220,x_zb);
    printfNumber(21,220,y_zb);
    Delay(20);

    EnableINT();
}

void Main( void )
{
    DisableINT();
    Delay(30);
    EnableINT();
    while(1)
    {
    }
}

void EnableINT(void)
{
    EA=1;       //开所有中断
    IT1=1;  //外部中断1 边沿触发
    EX1=1;  //开外部中断1
}

void DisableINT(void)
{
//  EA=0;       //关所有中断
    EX1=0;  //关外部中断1
}

void Delay(Uint MS)
    {
        Uchar us,usn;
        while(MS!=0)
            { usn = 4;
                while(usn!=0)
                    {
                        us=0xf0;
                        while (us!=0){us--;};
                        usn--;
                    }
                MS--;
            }
    }

void WriteCommand( Uchar CommandByte ) {

    P1 = CommandByte;
}

void WriteData( Uchar dataW ) {

    P1 = dataW;
}

void Locatexy(Uchar x,Uchar y) {
    Uint temp;
    temp = (Uint)y*40+x;
    WriteCommand( 0x29 );
    WriteData( (Uchar)(temp & 0xff) );
    WriteData( (Uchar)(temp /256 ) );
}

void printfNumber(Uchar x,Uchar y,Uchar Number)
{
    Uchar a[3];
    Uchar i,j;

    a[0]=Number/100;
    a[1]=(Number%100)/10;
    a[2]=Number%10;

    WriteCommand( 0x14 );
    for(i=0;i  <3;i++)
    {
        Locatexy(x,y);
        WriteCommand( 0x47 );
        for(j=0;j  <16;j++)
            WriteData(a[j%3]);
        x++;


}

发表时间:2004年10月19日10:56:21

  
回复该帖

本主题共有 4 帖,分页:>>>>>该主题的所有内容[4]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  64749.[详细]谁能帮我看看?谢谢!上面的帖子好长啊,一下子就沉了我的帖子
摘要:......(无内容)
- [qinr][1220次] 2004年10月19日

  64758.[详细]printfNumber中使用寄存器组和中断中不一样
摘要:void interrupt0(void) interrupt 2 using 3   //定义外部中断1 { ... }&nbs......(161字)
- [lenglianxi][1187次] 2004年10月19日

  64768.[详细]多谢!再请教一下,如果void printfNumber(Uchar x,Uc..
摘要:多谢! 再请教一下,如果void printfNumber(Uchar x,Uchar y,Uchar Number)这个函数需要多次调用,我的意思是除了中断里面调用,外面的函数也会调用的,......(191字)
- [qinr][1266次] 2004年10月19日

[上一篇帖子]:请问大侠,冯诺曼与哈佛结构的单片机区别?!为什么ARM7采用冯诺曼结构,高端的如ARM9 
[下一篇帖子]:GPRS无线数据猫解决方案现有GPRS无线数据猫全面解决方案,提供原理图,程序源码,pcb图,目标码