这里要注意的是,2个密钥的顺序,与STM8的用户手册上是相反的,如果按照手册上的顺序,就会停留在do…while循环中。具体原因,也不是很清楚,也可能是我拿到的手册(中文和英文的都一样)太旧了,或者是理解有误。 另外,上面的实验程序中,ch不能为局部变量,否则的话,在调试环境中跟踪ch变量时,显示的结果就不对,通过反汇编,我觉得是编译有问题,当定义成局部变量时,ch= *p的汇编代码如下: main.c:23 ch =*p; // 将写入的内容读到变量ch中 0x80f0<main+34> 0x7B01 LD A,(0x01,SP) LD A,(0x01,SP) 0x80f2<main+36> 0x97 LD XL,A LD XL,A 0x80f3<main+37> 0x1E02 LDW X,(0x02,SP) LDW X,(0x02,SP) 0x80f5<main+39> 0xF6 LD A,(X) LD A,(X) 0x80f6<main+40> 0x97 LD XL,A LD XL,A 如果将ch定义成全局变量,则汇编代码为: main.c:22 ch =*p; // 将写入的内容读到变量ch中 0x80ef<main+33> 0x1E01 LDW X,(0x01,SP) LDW X,(0x01,SP) 0x80f1<main+35> 0xF6 LD A,(X) LD A,(X) 0x80f2<main+36> 0xB700 LD 0x00,A LD 0x00,A 这一段代码的分析仅供参考,本人使用的开发环境为STVD4.1.0,编译器版本号为:COSMIC的CxSTM84.2.4
|