本帖最后由 xxkj2010 于 2024-7-17 14:59 编辑
使用STC芯片需要加密的时候,最实用、最方便的方法就是将ID通过软件计算存放到某个固定的地址,加密的方法大致如下: 加密的时候还需要将ID通过运算的结果写入到程序空间某个固定地址(如1000H开始的地址),那么我们就必须在源代码中将这些地址(如1000H~1006H)予以保留,并定义为FFH,而不能其他数据。这也是很重要的一步。 现在问题就来了,c语言大师们说可以用 _at_来定义一个七字节的数组:
- u8 code __at(0x1000) xxx[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}
复制代码
但编译会提示错误: app\main.c(5): error C141: syntax error near '_at_' app\main.c(5): error C141: syntax error near '0x1000' 而通过百度,网上有说到,可以使用: - #pragma asm
- ORG 1000H
- DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
- #pragma endasm
复制代码
开始的时候测试,总是提示错误,但也不知道什么原因,后来可以使用了。 除此之外,还可以这样:
- __asm ORG 1000H
- __asm DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
复制代码
不过编译前需要设置一下:
汇编语言可以加到main的下面即可: 最后说明一下,本人比菜鸟还菜,上述有不正确的地方,敬请各位大佬赐教!
|