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

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

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2024-03-26 11:31:32

6

主题

17

回帖

86

积分

注册会员

积分
86
发表于 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, 2025-5-2 15:28 , Processed in 0.229330 second(s), 45 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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