|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
中断中写入buf[0]与buf[a]有什么不同 |
作者:yu_minghan 栏目:单片机 |
我用的是18F452,c环境,调试时用tmr1做软串口,用到tmr0、tmr1和串口中断。在中断中向buf[a]中写数据,软串口就全是乱码,改为buf[0]就没有问题。 100us中断一回,用11.0592晶震。速度应该没有问题,不知问题出在什么地方,郁闷中,请教各位,谢谢!!! |
2楼: | >>参与讨论 |
作者: 张明峰 于 2004/10/18 21:43:00 发布:
差别大了 buf[0]为单元直接寻址,而buf[a]用间接寻址。这就是不了解汇编而用C的结果。 |
3楼: | >>参与讨论 |
作者: yu_minghan 于 2004/10/20 14:10:00 发布:
pic中断中 pic中断中调用直接和间接地址差别不会这样大吧, 程序在51下跑是没什么问题阿,都是用的c . 我的汇编是不大好,但是不应该是直接间接地址的问题吧。 各位,帮帮忙,有没有什么好的办法。 |
4楼: | >>参与讨论 |
作者: XIEYUANBIN 于 2004/10/20 14:48:00 发布:
51和PIC 有相当大的区别。包括C,你还是先了解一下PIC的汇编和硬件结构 PIC的内存结构:16系列以128字节为一个页面,18系列我不太清楚,也许要多一点,但肯定是分页的。内存寻址时直接寻址页面由STATUS里的rp0/rp1决定。间接寻址时页面由FSR的最高位和STATUS里的IRP决定。 |
5楼: | >>参与讨论 |
作者: 张明峰 于 2004/10/20 18:22:00 发布:
照道理,buf[0和buf[a]的结果应是一致的 问题是你的程序不知道还有什么其它毛病。光拿这一句叫劲有什么用? Hotpower语录之一:“没病不死人” |
6楼: | >>参与讨论 |
作者: yu_minghan 于 2004/10/21 12:47:00 发布:
谢谢,XIEYUANBIN ! 谢谢,XIEYUANBIN,看来是要好好看下汇编了,头大,呵呵。 回张工,我已经就在中断里调用一个trm1中断,内存只用256字节,外围程序就是一个while(1); 中断里只有十二行程序,还是一样,只要用buf[a]存就是乱码。呵呵,不是叫劲,我也知道直接间接地址,如果问题这么简单就好了。 我是觉得我的程序应没什么问题,只是向XIEYUANBIN所说,可能是系统那里用的不对,正头痛呢,可爱又可恨的PIC18F452。 呵呵,也许是picc的问题,已经发现了一个小bug了。 |
7楼: | >>参与讨论 |
作者: bolofeng 于 2004/10/21 14:28:00 发布:
晕 不要动不动就怀疑编译器或芯片本身的问题。 还是多看看自己程序有什么问题吧。 |
8楼: | >>参与讨论 |
作者: 张明峰 于 2004/10/21 20:45:00 发布:
这种没问题的保证见多了 反正在我所帮助解决的问题中,绝大部分一开始都号称自己的程序或设计没有问题的。 自己找不出问题!=自己没有问题 |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |