今天调试了PIC 的SPI通信,利用双机通信一个pic做主机,一个PIC做从机,主机一直不停的发送两个不同的数据,从机接收,当接收完后进入中断,中断中将接收到的数据传给PD口的LED做指示,仿真通过,显示正确。在经过仿真LCD传输显示后可以得到正确的传输数据,但在传输字符串时还是有些问题。之后在发送字符串程序中设置发送一个字符后就设置一段延时后,传送情况好了很多,从机在LCD上已经可以正常显示字符串。但效果还是不十分理想。
在调试中出现了一个问题,当我在做中断处理时,在其中调用某些函数后,编译时会出现"cgpic.exe应用程序错误","0x00444342指令引用的'"0x000000008内存"无法写的错误,经过查询,原因是在PIC单片机中,中断是不可重入的,也就是在中断处理服务调用的函数,在别处是不允许在被调用的。解决的方法是设置标志位,传递标识,主程序循环扫描标识位。但感觉存在问题,就是程序的实时性能否保证,这个需要实际的测试。
在做键盘扫描时,对于PORTA口,首先要将ADCON1=0x07; 将其设置成为数字口,PORTA默认不是数字口。然后再设置其输入,执行键盘扫描,这是才可以读回端口状态。
对于端口D,在将其用作IO口线时,需要在PSPMODE清零的情况下,如果PSPMODE置位,此时端口D作为微处理器端口,工作在从动并行方式。