打印

在PIC单片机上如何做RAM和ROM完整性检查?

[复制链接]
506|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
flycamelaaa|  楼主 | 2021-2-7 16:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
RAM测试时有点类似下面的程序(当然你可以修改它来使这个测试更全面些)——这里测试的RAM的数量是特定于PIC16C76的,如果要用于其它单片机型号,你需要查阅数据手册来确定相应型号的存储器范围。
#include
volatile unsigned char INDF @ 0x0; // not defined in pic.h
main()
{
        IRP = 0;                /* select bank 0/1 */
        FSR = 0x20;             /* check bank 0 */
        do {
                INDF = 0x55;
        } while(++FSR != 0x80);
        FSR = 0x20;
        do {
                if(INDF != 0x55)
                        for(;;);
        } while(++FSR != 0x80);
        FSR = 0xA0;                // check bank 1
        do {
                INDF = 0x55;
        } while(++FSR != 0xF0);    // avoid the common area, already checked
        FSR = 0xA0;
        do {
                if(INDF != 0x55)
                        for(;;);
        } while(++FSR != 0xF0);
        IRP = 1;        /* select bank 2/3 */
        FSR = 0x10;     /* bank 2 RAM starts at 110 */
        do {
                INDF = 0x55;
        } while(++FSR != 0x70);  // last address is 170 (common is 170-17F)
        FSR = 0x10;
        do {
                if(INDF != 0x55)
                        for(;;);
        } while(++FSR != 0x70);  
        FSR = 0x90;                 // bank 3 RAM, 190-1EF
        do {
                INDF = 0x55;
        } while(++FSR != 0xF0);
        FSR = 0x90;
        do {
                if(INDF != 0x55)
                        for(;;);
        } while(++FSR != 0xF0);
}
ROM的校验和就要看情况而定了。并不是所有的PIC单片机都能够读它自己的程序存储器的。部分Flash的型号是可以读的,但是PIC16C76是不能够读的,请查看相应单片机的数据手册来确定。

使用特权

评论回复
沙发
lcczg| | 2021-2-9 16:02 | 只看该作者
看下来是用0x55检查,是否要再用0xaa再查一遍比较完全

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

653

主题

2697

帖子

0

粉丝