C语言中有规律的代码的生成方法

欢迎加我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 } )

保存后运行一下,文章最前面的代码就自动生成了!

  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓   ┃                                  ┃   ┃ 点击“生成“按钮后,所生成的文本自动放入剪贴板,可直接粘贴使用。 ┃   ┃                                  ┃   ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ┏━━━┓ ┃举例:┃ ┗━━━┛ 【先按如下设置】  前缀内容: <IMG SRC="http://www.LinTongJY.com/images/Pic-200611  中缀开始: 1   中缀结束: 10   中缀位数 3  后缀内容: -JDCZ.jpg"><br>   换行  启用分节  每 3 次为一节  节尾添加: <HR><!-- 每三张图片插入一条水平线 -->   换行 【可生成以下文本】 <IMG SRC="http://www.LinTongJY.com/images/Pic-200611001-JDCZ.jpg"><br> <IMG SRC="http://www.LinTongJY.com/images/Pic-200611002-JDCZ.jpg"><br> <IMG SRC="http://www.LinTongJY.com/images/Pic-200611003-JDCZ.jpg"><br> <HR><!-- 每三张图片插入一条水平线 --> <IMG SRC="http://www.LinTongJY.com/images/Pic-200611004-JDCZ.jpg"><br> <IMG SRC="http://www.LinTongJY.com/images/Pic-200611005-JDCZ.jpg"><br> <IMG SRC="http://www.LinTongJY.com/images/Pic-200611006-JDCZ.jpg"><br> <HR><!-- 每三张图片插入一条水平线 --> <IMG SRC="http://www.LinTongJY.com/images/Pic-200611007-JDCZ.jpg"><br> <IMG SRC="http://www.LinTongJY.com/images/Pic-200611008-JDCZ.jpg"><br> <IMG SRC="http://www.LinTongJY.com/images/Pic-200611009-JDCZ.jpg"><br> <HR><!-- 每三张图片插入一条水平线 --> <IMG SRC="http://www.LinTongJY.com/images/Pic-200611010-JDCZ.jpg"><br>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值