登录 免费注册 首页 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

中断中写入buf[0]与buf[a]有什么不同

作者:yu_minghan 栏目:单片机
中断中写入buf[0]与buf[a]有什么不同
我用的是18F452,c环境,调试时用tmr1做软串口,用到tmr0、tmr1和串口中断。在中断中向buf[a]中写数据,软串口就全是乱码,改为buf[0]就没有问题。
100us中断一回,用11.0592晶震。速度应该没有问题,不知问题出在什么地方,郁闷中,请教各位,谢谢!!!


2楼: >>参与讨论
张明峰
差别大了
buf[0]为单元直接寻址,而buf[a]用间接寻址。这就是不了解汇编而用C的结果。

3楼: >>参与讨论
yu_minghan
pic中断中

pic中断中调用直接和间接地址差别不会这样大吧,
程序在51下跑是没什么问题阿,都是用的c .
我的汇编是不大好,但是不应该是直接间接地址的问题吧。
各位,帮帮忙,有没有什么好的办法。

4楼: >>参与讨论
XIEYUANBIN
51和PIC
有相当大的区别。包括C,你还是先了解一下PIC的汇编和硬件结构
PIC的内存结构:16系列以128字节为一个页面,18系列我不太清楚,也许要多一点,但肯定是分页的。内存寻址时直接寻址页面由STATUS里的rp0/rp1决定。间接寻址时页面由FSR的最高位和STATUS里的IRP决定。

5楼: >>参与讨论
张明峰
照道理,buf[0和buf[a]的结果应是一致的
问题是你的程序不知道还有什么其它毛病。光拿这一句叫劲有什么用?

Hotpower语录之一:“没病不死人”

6楼: >>参与讨论
yu_minghan
谢谢,XIEYUANBIN !

谢谢,XIEYUANBIN,看来是要好好看下汇编了,头大,呵呵。

回张工,我已经就在中断里调用一个trm1中断,内存只用256字节,外围程序就是一个while(1); 中断里只有十二行程序,还是一样,只要用buf[a]存就是乱码。呵呵,不是叫劲,我也知道直接间接地址,如果问题这么简单就好了。

我是觉得我的程序应没什么问题,只是向XIEYUANBIN所说,可能是系统那里用的不对,正头痛呢,可爱又可恨的PIC18F452。 呵呵,也许是picc的问题,已经发现了一个小bug了。

7楼: >>参与讨论
bolofeng

不要动不动就怀疑编译器或芯片本身的问题。
还是多看看自己程序有什么问题吧。

8楼: >>参与讨论
张明峰
这种没问题的保证见多了
反正在我所帮助解决的问题中,绝大部分一开始都号称自己的程序或设计没有问题的。

自己找不出问题!=自己没有问题

参与讨论
昵称:
讨论内容:
 
 
相关帖子
如何运用FILL来设置软件陷阱
张教主的书能邮购么
帮忙
PIC数码管显示升级为LCD,有人能帮忙吗?
dodome521
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号