请帮忙看下这段C51程序.为什么调用子函数时,参数传递不正确?比如程序中 DispStr(1,2,"KKK") 则使用单步执行跟踪时,lin值为1 column值为0x6F,这是为什么呢? 另外uchar idata i=0,l=0;中不加idata时 i和l的赋值都不正确,idata的作用是把i,l定义在256字节区域内,若是不写idata,keil默认编译 在data区域吧,应该也不会不正确啊?
/***********显示字符串***********/ void DispStr(uchar lin, uchar column, uchar *ptr) { uchar idata i = 0, l = 0; uchar idata dat = 0; uint idata StartAddr = 0; while (ptr[l] != 0){l++;}; StartAddr = lin * LINECHAR + column; //定位起始行 OutPortCom3((uchar)(StartAddr), (uchar)(StartAddr>>8), 0x24); AutoWCheck(); OutPortCom1(0xb0); //有些重复,可以修改 for (i=0; i<l; i++) { dat = (ptr - 0x20); OutPortData(dat); } OutPortCom1(0xb2); //自动写结束 } /******************************* |