0%

HELLO, NEW DREAGONM

HELLO, NEW WORLD

操作方法

新建一个KEIL工程,只在code区建立一个数组
1.png
然后生成HEX,使用STC-ISP在打开EEPROM中选择该HEX文件即可

高阶用法

观察生成的.hex文件
由形如这样的数据构成
:0E|0003|00|75801175902275A03375B04480FE|93

冒号为每行数据的开始符号;
1:表示此行数据长度,十六进制,如0E就是14;
2:数据存放的地址,如0003;
3:是表示数据类型,00表示数据记录,01表示文件结束,02表示扩展段地址记录,03表示开始段地址记录,04表示扩展线性地址记录,05表示开始线性地址记录;
4:后面紧跟着的是N位数据,长度由长度位决定;
5:为校验位,算法:0x100-((所有数码和))%256) % 256。

这样我们就可以自己写一个.hex生成器了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import os
Trans = ('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F')
class DataFrame(object):
DataType = 0 # 默认为数据变量
Length = 0 # 默认长度为0
Position = 0 # 默认内存地址为0000h
Data = []

def __init__(self,DataType_,Length_,Position_,Data_):
self.DataType=DataType_
self.Length=Length_
self.Position=Position_
self.Data=Data_

def __print_hex(self,x):
return '%c%c'%(Trans[(x&0xF0)>>4],Trans[x&0x0F])

def __str__(self):
s = ':'
Calc = 0
Calc = Calc+(self.Length)
s = s+self.__print_hex(self.Length)
Calc = Calc+(self.Position>>8)
Calc = Calc+(self.Position&0xFF)
s = s+self.__print_hex(self.Position>>8)+self.__print_hex(self.Position&0xFF)
Calc = Calc+(self.DataType)
s = s+self.__print_hex(self.DataType)
for x in self.Data:
s = s+self.__print_hex(x)
Calc = Calc + x
Calc = 0x100 - Calc % 256
s = s+self.__print_hex(Calc&0xFF)
return s

if __name__ == '__main__':
os.mkdir('EEPROM.Hexs')
os.chdir('EEPROM.Hexs')
with open('test.hex','w') as f:
Frame1 = DataFrame(0,2,0,[x,y])
Frame2 = DataFrame(1,0,0,[])
f.write(str(Frame1)+'\n')
f.write(str(Frame2)+'\n')