找回密码
 立即注册
查看: 66|回复: 0

自己写了一个IO端口模式的预处理文件,感觉比较好用,分享一下!

[复制链接]
  • TA的每日心情
    擦汗
    2024-3-26 11:31
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    6

    主题

    16

    回帖

    80

    积分

    注册会员

    积分
    80
    发表于 2024-3-26 11:37:59 | 显示全部楼层 |阅读模式


    "hareware.h"

    #include <stc32g.h>

    #define        IOMODE_IO                                        0                                // 双向IO 模式
    #define IOMODE_PUSHPULL                1                                // 推挽模式
    #define IOMODE_HIGHIMP                2                                // 高阻模式
    #define IOMODE_DRAIN                        3                                // 开漏模式

    #define IOMODE_P10                IOMODE_PUSHPULL

    sbit PhotoResisterADC = P1^5;                // 光敏电阻ADC5
    #define IOMODE_P15                IOMODE_HIGHIMP

    // 一个按键
    sbit key_ap = P1^6;
    #define IOMODE_P16                IOMODE_IO



    // 两个LED指示灯
    sbit LED1 = P1^7;
    sbit LED2 = P1^3;
    #define IOMODE_P17                IOMODE_IO
    #define IOMODE_P13                IOMODE_IO


    “hareware_io_preprocess.h”

    #ifndef _HARDWARE_IO_PREPROCESS_
    #define _HARDWARE_IO_PREPROCESS_

    #include "hardware.h"


    #ifndef IOMODE_P00
            #define IOMODE_P00 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P01
            #define IOMODE_P01 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P02
            #define IOMODE_P02 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P03
            #define IOMODE_P03 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P04
            #define IOMODE_P04 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P05
            #define IOMODE_P05 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P06
            #define IOMODE_P06 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P07
            #define IOMODE_P07 IOMODE_HIGHIMP
    #endif


    #ifndef IOMODE_P10
            #define IOMODE_P10 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P11
            #define IOMODE_P11 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P12
            #define IOMODE_P12 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P13
            #define IOMODE_P13 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P14
            #define IOMODE_P14 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P15
            #define IOMODE_P15 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P16
            #define IOMODE_P16 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P17
            #define IOMODE_P17 IOMODE_HIGHIMP
    #endif


    #ifndef IOMODE_P20
            #define IOMODE_P20 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P21
            #define IOMODE_P21 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P22
            #define IOMODE_P22 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P23
            #define IOMODE_P23 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P24
            #define IOMODE_P24 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P25
            #define IOMODE_P25 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P26
            #define IOMODE_P26 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P27
            #define IOMODE_P27 IOMODE_HIGHIMP
    #endif


    #ifndef IOMODE_P30
            #define IOMODE_P30 IOMODE_IO
    #endif

    #ifndef IOMODE_P31
            #define IOMODE_P31 IOMODE_IO
    #endif

    #ifndef IOMODE_P32
            #define IOMODE_P32 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P33
            #define IOMODE_P33 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P34
            #define IOMODE_P34 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P35
            #define IOMODE_P35 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P36
            #define IOMODE_P36 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P37
            #define IOMODE_P37 IOMODE_HIGHIMP
    #endif


    #ifndef IOMODE_P40
            #define IOMODE_P40 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P41
            #define IOMODE_P41 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P42
            #define IOMODE_P42 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P43
            #define IOMODE_P43 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P44
            #define IOMODE_P44 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P45
            #define IOMODE_P45 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P46
            #define IOMODE_P46 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P47
            #define IOMODE_P47 IOMODE_HIGHIMP
    #endif


    #ifndef IOMODE_P50
            #define IOMODE_P50 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P51
            #define IOMODE_P51 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P52
            #define IOMODE_P52 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P53
            #define IOMODE_P53 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P54
            #define IOMODE_P54 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P55
            #define IOMODE_P55 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P56
            #define IOMODE_P56 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P57
            #define IOMODE_P57 IOMODE_HIGHIMP
    #endif


    #ifndef IOMODE_P60
            #define IOMODE_P60 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P61
            #define IOMODE_P61 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P62
            #define IOMODE_P62 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P63
            #define IOMODE_P63 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P64
            #define IOMODE_P64 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P65
            #define IOMODE_P65 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P66
            #define IOMODE_P66 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P67
            #define IOMODE_P67 IOMODE_HIGHIMP
    #endif


    #ifndef IOMODE_P70
            #define IOMODE_P70 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P71
            #define IOMODE_P71 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P72
            #define IOMODE_P72 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P73
            #define IOMODE_P73 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P74
            #define IOMODE_P74 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P75
            #define IOMODE_P75 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P76
            #define IOMODE_P76 IOMODE_HIGHIMP
    #endif

    #ifndef IOMODE_P77
            #define IOMODE_P77 IOMODE_HIGHIMP
    #endif


    #define IOMODE_P0M0  (((IOMODE_P00) & 0x1) | (((IOMODE_P01) & 0x1) << 1) | (((IOMODE_P02) & 0x1) << 2) | (((IOMODE_P03) & 0x1) << 3) | (((IOMODE_P04) & 0x1) << 4) | (((IOMODE_P05) & 0x1) << 5) | (((IOMODE_P06) & 0x1) << 6) | (((IOMODE_P07) & 0x1) << 7))
    #define IOMODE_P1M0  (((IOMODE_P10) & 0x1) | (((IOMODE_P11) & 0x1) << 1) | (((IOMODE_P12) & 0x1) << 2) | (((IOMODE_P13) & 0x1) << 3) | (((IOMODE_P14) & 0x1) << 4) | (((IOMODE_P15) & 0x1) << 5) | (((IOMODE_P16) & 0x1) << 6) | (((IOMODE_P17) & 0x1) << 7))
    #define IOMODE_P2M0  (((IOMODE_P20) & 0x1) | (((IOMODE_P21) & 0x1) << 1) | (((IOMODE_P22) & 0x1) << 2) | (((IOMODE_P23) & 0x1) << 3) | (((IOMODE_P24) & 0x1) << 4) | (((IOMODE_P25) & 0x1) << 5) | (((IOMODE_P26) & 0x1) << 6) | (((IOMODE_P27) & 0x1) << 7))
    #define IOMODE_P3M0  (((IOMODE_P30) & 0x1) | (((IOMODE_P31) & 0x1) << 1) | (((IOMODE_P32) & 0x1) << 2) | (((IOMODE_P33) & 0x1) << 3) | (((IOMODE_P34) & 0x1) << 4) | (((IOMODE_P35) & 0x1) << 5) | (((IOMODE_P36) & 0x1) << 6) | (((IOMODE_P37) & 0x1) << 7))
    #define IOMODE_P4M0  (((IOMODE_P40) & 0x1) | (((IOMODE_P41) & 0x1) << 1) | (((IOMODE_P42) & 0x1) << 2) | (((IOMODE_P43) & 0x1) << 3) | (((IOMODE_P44) & 0x1) << 4) | (((IOMODE_P45) & 0x1) << 5) | (((IOMODE_P46) & 0x1) << 6) | (((IOMODE_P47) & 0x1) << 7))
    #define IOMODE_P5M0  (((IOMODE_P50) & 0x1) | (((IOMODE_P51) & 0x1) << 1) | (((IOMODE_P52) & 0x1) << 2) | (((IOMODE_P53) & 0x1) << 3) | (((IOMODE_P54) & 0x1) << 4) | (((IOMODE_P55) & 0x1) << 5) | (((IOMODE_P56) & 0x1) << 6) | (((IOMODE_P57) & 0x1) << 7))
    #define IOMODE_P6M0  (((IOMODE_P60) & 0x1) | (((IOMODE_P61) & 0x1) << 1) | (((IOMODE_P62) & 0x1) << 2) | (((IOMODE_P63) & 0x1) << 3) | (((IOMODE_P64) & 0x1) << 4) | (((IOMODE_P65) & 0x1) << 5) | (((IOMODE_P66) & 0x1) << 6) | (((IOMODE_P67) & 0x1) << 7))
    #define IOMODE_P7M0  (((IOMODE_P70) & 0x1) | (((IOMODE_P71) & 0x1) << 1) | (((IOMODE_P72) & 0x1) << 2) | (((IOMODE_P73) & 0x1) << 3) | (((IOMODE_P74) & 0x1) << 4) | (((IOMODE_P75) & 0x1) << 5) | (((IOMODE_P76) & 0x1) << 6) | (((IOMODE_P77) & 0x1) << 7))

    #define IOMODE_P0M1  ((((IOMODE_P00) & 0x2) >> 1) | ((IOMODE_P01) & 0x2) | (((IOMODE_P02) & 0x2) << 1) | (((IOMODE_P03) & 0x2) << 2) | (((IOMODE_P04) & 0x2) << 3) | (((IOMODE_P05) & 0x2) << 4) | (((IOMODE_P06) & 0x2) << 5) | (((IOMODE_P07) & 0x2) << 6))
    #define IOMODE_P1M1  ((((IOMODE_P10) & 0x2) >> 1) | ((IOMODE_P11) & 0x2) | (((IOMODE_P12) & 0x2) << 1) | (((IOMODE_P13) & 0x2) << 2) | (((IOMODE_P14) & 0x2) << 3) | (((IOMODE_P15) & 0x2) << 4) | (((IOMODE_P16) & 0x2) << 5) | (((IOMODE_P17) & 0x2) << 6))
    #define IOMODE_P2M1  ((((IOMODE_P20) & 0x2) >> 1) | ((IOMODE_P21) & 0x2) | (((IOMODE_P22) & 0x2) << 1) | (((IOMODE_P23) & 0x2) << 2) | (((IOMODE_P24) & 0x2) << 3) | (((IOMODE_P25) & 0x2) << 4) | (((IOMODE_P26) & 0x2) << 5) | (((IOMODE_P27) & 0x2) << 6))
    #define IOMODE_P3M1  ((((IOMODE_P30) & 0x2) >> 1) | ((IOMODE_P31) & 0x2) | (((IOMODE_P32) & 0x2) << 1) | (((IOMODE_P33) & 0x2) << 2) | (((IOMODE_P34) & 0x2) << 3) | (((IOMODE_P35) & 0x2) << 4) | (((IOMODE_P36) & 0x2) << 5) | (((IOMODE_P37) & 0x2) << 6))
    #define IOMODE_P4M1  ((((IOMODE_P40) & 0x2) >> 1) | ((IOMODE_P41) & 0x2) | (((IOMODE_P42) & 0x2) << 1) | (((IOMODE_P43) & 0x2) << 2) | (((IOMODE_P44) & 0x2) << 3) | (((IOMODE_P45) & 0x2) << 4) | (((IOMODE_P46) & 0x2) << 5) | (((IOMODE_P47) & 0x2) << 6))
    #define IOMODE_P5M1  ((((IOMODE_P50) & 0x2) >> 1) | ((IOMODE_P51) & 0x2) | (((IOMODE_P52) & 0x2) << 1) | (((IOMODE_P53) & 0x2) << 2) | (((IOMODE_P54) & 0x2) << 3) | (((IOMODE_P55) & 0x2) << 4) | (((IOMODE_P56) & 0x2) << 5) | (((IOMODE_P57) & 0x2) << 6))
    #define IOMODE_P6M1  ((((IOMODE_P60) & 0x2) >> 1) | ((IOMODE_P61) & 0x2) | (((IOMODE_P62) & 0x2) << 1) | (((IOMODE_P63) & 0x2) << 2) | (((IOMODE_P64) & 0x2) << 3) | (((IOMODE_P65) & 0x2) << 4) | (((IOMODE_P66) & 0x2) << 5) | (((IOMODE_P67) & 0x2) << 6))
    #define IOMODE_P7M1  ((((IOMODE_P70) & 0x2) >> 1) | ((IOMODE_P71) & 0x2) | (((IOMODE_P72) & 0x2) << 1) | (((IOMODE_P73) & 0x2) << 2) | (((IOMODE_P74) & 0x2) << 3) | (((IOMODE_P75) & 0x2) << 4) | (((IOMODE_P76) & 0x2) << 5) | (((IOMODE_P77) & 0x2) << 6))


    #define SET_IO_MODE_ALL \
            P0M0 = IOMODE_P0M0; P1M1 = IOMODE_P0M1;\
            P1M0 = IOMODE_P1M0; P1M1 = IOMODE_P1M1;\
            P2M0 = IOMODE_P2M0; P2M1 = IOMODE_P2M1;\
            P3M0 = IOMODE_P3M0; P3M1 = IOMODE_P3M1;\
            P4M0 = IOMODE_P4M0; P4M1 = IOMODE_P4M1;\
            P5M0 = IOMODE_P5M0; P5M1 = IOMODE_P5M1;\
            P6M0 = IOMODE_P6M0; P6M1 = IOMODE_P6M1;\
            P7M0 = IOMODE_P7M0; P7M1 = IOMODE_P7M1


    #endif

    "hardware.c"

    void Hardware_Init()
    {
            EAXFR = 1;                //开启访问XFR
            CKCON = 0;                //外部数据总线速度最快
            WTST = 0x0;                //程序执行速度最快

            //设置端口状态
            //PnM1,PnM0, 00=准双向,01=强输出,10=高阻,11=开漏       
           
            SET_IO_MODE_ALL;


    ... 以下略!


    回复 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-6 00:25 , Processed in 0.050190 second(s), 28 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表