1、 写卡时,需要将两根绿色的线进行短接,否则写卡失败!!! 除此之外,当写卡烧录完写程序后,配置完读卡参数之后,需要重新上电,并且还需要重新关闭串口再打开串口。否则不能写卡 另外,注意卡片电池,如果电池电源太低,也不能写卡。 写卡器刚烧录完程序后,当配置完读卡器配置后,需要重新关闭和打开串口,再进行写卡器配置(或者软件重开),否则无法写卡。 2、 所有的内存在没有写之前都是FF 3、 RC振荡器: 在振荡电路中的频率选择部分可以只用电阻和电容构成。这种只用电阻和电容构成的振荡器称为RC振荡器。 晶振: 只要在晶体板极上施加交变电压,就会使晶片产生机械变形振动,此现象即所谓逆压电效应。当外加电压频率等于晶体谐振器的固有频率时,就会发生压电谐振,从而导致机械变形的振幅突然增大。 4、 温度系统:温度系数表征标称值受温度变化影响的程度,单位是 ppm/°C。如电阻的阻值,基准电压源的电压值等。温度系数通常非常小,采用百万分比(ppm)表示更容易。 5、 编程总结: 1、nrf24le1芯片使用时,有一个寄存器,是用于控制端口操作的,如果关闭此端口则不能正确操作此端口。OPMCON = 0x02;则表示关闭了端口,在使用端口时,应该重新打开端口。如OPMCON = 0x00; 2、nrf24le1芯片,当使用它与C8051F120进行SLAVE SPI通信时,如果已经完数据,而要从已写完的数据中,再读取出来,则需要一定的延时! 3、两块单片机使用SPI通信时,如果配置的晶振频率过高,有可能使得程序在while循环等待过程中接收不到另一发起人单片机的程序,从而出现单片机死机的现象。 4、使用nrf24le1时,在使用二维数组,不能将二维数组的地址传递给一个数a,再把a传递给b而就直接交二维数组传递给b 5、关于return和break:使用return时是跳出此子函数,回到调用该子函数的后面。而使用break时是跳出该循环体。 6. 关于卡片睡眠醒来操作内存:当卡片醒来,若是要操作内存,则必须将系统时钟重新配置:CLKCTRL=0;delay_nms(30);(延时是为了等待时钟响应)。否则操作不了内存。 7、if和while不满足时,程序如何执行:当程序中,如果if或while不满足条件时,程序将跳过if或while的条件判断语句及,执行语句,直接执行后面的语句。4/25/2013 11:31:24 PM 6、 如何计算数据在空中传送的时间:4BYTE数据,空速1M 则T=4*(8/1M)=32us 7、 参数传递可以分为两种:一各是数值传递,另一各是引用传递。前者仅仅是交数值传递给了形参,而不返回结果,后者其实是把的地址传递给形参,实参和形参其实都是同一个变量,被调用函数通过修改该变量的值返回给调用函数,从而把结果带回,在参数传递过程中,通过在参数前加上&,表示引用传递,如果参数前没有&,表示数值传递。 8、 指针变量和变量一样,都可以对数据进行操作,指针变量的操作主要是通过取地址运算符&和指针运算符*来实现的。例如,&a指的是变量a的地址,*prt表示变量ptr所指向的内存单元存放的内容。 另外:“*”和“&”这两个运算符是互逆的。 9、 当使用extern时,被exrern的参数必须是在主函数中定义,不能只是在子函数中定义。否则虽然编译时没有问题,但是不能生成HEX文件。 10、关于->运算符: 若是指针就用->,若是结构名就用.就是了.这个是成员操作符,控制具体的成员. 11、对于nrf24le1芯片,当对端口进行执行操作时,如指令P11=1,P11=0;这两个指令之间的执行时间为750ns。 12、对于卡片,当写卡已经写好600ms发送一次卡号时,大致还是600ms多一点发送一次数据,但是并不是每隔600ms发送一次,有可能某一次没有发送。也就是说并不能保证每一次都发送数据。 13、使用Keil软件时,HEX文件以及包含HEX文件的文件夹,不能使用逗号进行命名。否则烧录程序的时候会出现错误的文件名提示。 使用Keil软件时,文件名的命名不能使用小括号“()”,否则会造成调试程序时,当查找某一个变量时,虽然查找到了该变量,但跳转不到该变量的位置。但是可以使用中括号“[]” 14、读卡器配置为主动上传时,功率调节只能设置为硬件可调,因为如果设置为软件调节时,主动上传会占用系统总线使得无法从上位机上下发数据至读卡器。 当读卡器配置为组网时,功率真调节既可设置为组硬件可调也可以设置为软件可调。 15、关于2I03硬件问题:当使用通用485时,会出现乱码,有时也无法授权;而当使用黑盒子时,没有任何类似的问题。解决方法:将SIPEX485EEN-L/NSOIC-8的输出A和B线的上拉电阻除去。因为SIPEX485EEN-L/NSOIC-8这个芯片本身已经带了上拉了。 16、当使用端口灯,或者蜂鸣器作为标志跟踪数据,在反复循环过程中,如果没有发现灯闪,或者蜂鸣器鸣叫,则有可能是灯闪了或蜂鸣器叫了,只是人眼/耳朵没有分辨出来。特别是蜂鸣器,示波器是看不出来的,因为它是鸣叫一声一个高电平,所以即使有反复的鸣叫,也只能看到高电平一次,而不是一个反复的波形。 17、hal_flash_bytes_read(DEVICEID,IDE,4);这个函数,不能读取程序存储区里的数据。若要读取程序存储区里的数据,只需要将hal_flash_bytes_read(DEVICEID,IDE,4);函数里的关键字Xdata换成code即可。 18、当发射等待用delay_nms(1)等待发射完成时,有可能造成卡片数据多次重发。所以建议使用while(!TX_DS); 19、2.4G腕带卡死机情况:卡片板子焊接有问题,重新烫一下就好了。 20、卡片程序功耗问题:配置void rf_init(void),沿用之前的机制,即swith语句,否则功耗则非常大。 21、卡片程序连续再次发送卡号:程序如下(必须重新配置射频,必须清sta。) TX_TEST_Mode(); while(!(TX_DS)); sta=0; rf_init(); TX_Mode(); while(!(TX_DS)); 本文来源:https://www.wddqw.com/doc/16f8a6b8cc22bcd126ff0c4c.html