欢迎加我QQ12537370讨论:
前些天,我发现一个小子努力的在敲PIC16LF1907的LCD驱动代码,其中一段如下:
union {
uchar data;
struct {
unsigned SEG0COM0 : 1;
unsigned SEG0COM1 : 1;
unsigned SEG0COM2 : 1;
unsigned SEG0COM3 : 1;
} bits;
} LCDDATA0 @ 0x140;
union {
uchar data;
struct {
unsigned SEG1COM0 : 1;
unsigned SEG1COM1 : 1;
unsigned SEG1COM2 : 1;
unsigned SEG1COM3 : 1;
} bits;
} LCDDATA0 @ 0x141;
…………(此处省略N行)
union {
uchar data;
struct {
unsigned SEG23COM0 : 1;
unsigned SEG23COM1 : 1;
unsigned SEG23COM2 : 1;
unsigned SEG23COM3 : 1;
} bits;
} LCDDATA23 @ 0x157;
看见了这代码,我跟他说,这样有规律的代码可以要用代码去生成,能节省时间也避免一些错误。
这是怎么一回事?我让他先把python环境安装了。
python环境搭建:
这步简单,网上也有好多教材,只要在python官网http://www.python.org/getit/ 找到相应平台下的python安装就可以了
完了设一下环境变量就可以,如图:
然后随便写段代码,运行成功……
用phthon生成C语言文件:
直接上代码:
tmpl = '''volatile union {
uchar data;
struct {
unsigned SEG%(idx)dCOM0 : 1;
unsigned SEG%(idx)dCOM1 : 1;
unsigned SEG%(idx)dCOM2 : 1;
unsigned SEG%(idx)dCOM3 : 1;
} bits;
} LCDDATA%(idx)d @ 0x%(addr)x;
'''
with open("lcd_def.h", "w") as outfile:
for i in range(24):
idx = i
addr = 0x140+i
outfile.write( tmpl % { 'idx': idx, 'addr': addr } )
保存后运行一下,文章最前面的代码就自动生成了!