大龄青年学习单片机——笔记

2020-01-19 19:39发布

本帖最后由 bmelz 于 2015-9-6 12:43 编辑

大龄青年学习单片机!
上次学习单片机时是12年前,12年后有因工作需要开始重新学习。我现在把暑假期间学习的内容再这里以笔记的形式做个小结。
不对的地方请大侠们不吝赐教,多谢啦!
如有疑问或者建议请和我联系:liangzhen#foxmail.com
单片机:IAP15W4k58S4
开发环境:keil C51 9.54
工程组织结构按照如下来设定:
user/inc :          config.h
                mcu_cfg.h
                drivers_cfg.h
      /src:        main.c
                ...
mcu/inc:        GPIO.h
                UART.h
                mytypes.h
                exmath.h
                ...
      /src:    GPIO.c
                uart.c
                ...
drivers/inc:                lcd1602.h
                        DC_motor.h
         /src:                lcd1602.c
                        DC_motor.c

config.h见4楼!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
81条回答
bmelz
2020-01-21 04:40
GPIO.h
/*************************************************************
        Copyright (C), 2009-2015, C&IIL
        File name: GPIO.h
        Description:
                NULL
        Compiler:
                IDE: Keil C51 9.51, 9.52
                OS:        win8,win8.1
        Function List:
                NULL
        History:
                Author: Liang Zhen Version: 0.1 Date: 2015/07/22 Email: liangzhen##foxmail.com
                Description: Created
*************************************************************/

#ifndef __GPIO_H__
#define __GPIO_H__
#include "config.h"
#include "exmath.h"


//设置Port端口为上拉准双向口。例如:PORT_PullUp(1) 设置P1口为上拉准双向口。
#define _PORT_PullUp(Port)                {P##Port##M1 = 0; P##Port##M0 = 0; }
#define PORT_PullUp(Port)                _PORT_PullUp(Port)

//设置Port端口为强推挽输出。例如:PORT_PP(1) 设置P1口为强推挽输出
#define _PORT_PP(Port)                        {P##Port##M1 = 0; P##Port##M0 = 1; }
#define PORT_PP(Port)                        _PORT_PP(Port)

//设置Port端口为高阻态。例如:PORT_PP(1) 设置P1口为高阻态
#define _PORT_HighZ(Port)                {P##Port##M1 = 1; P##Port##M0 = 0; }
#define PORT_HighZ(Port)                _PORT_HighZ(Port)

//设置Port端口为开漏输出。例如:PORT_PP(1) 设置P1口为开漏输出
#define _PORT_OD(Port)                        {P##Port##M1 = 1; P##Port##M0 = 1; }
#define PORT_OD(Port)                        _PORT_OD(Port)

//设置Port端口的Pin引脚为上拉准双向口。例如:PIN_PullUp(1,2) 设置P12引脚为上拉准双向口。
#define _PIN_PullUp(Port,Pin)        {clrBit(P##Port##M1,Pin);clrBit(P##Port##M0,Pin);}       
#define PIN_PullUp(Port,Pin)        _PIN_PullUp(Port,Pin)

//设置Port端口的Pin引脚为强推挽输出。例如:PIN_PP(1,2) 设置P12引脚为强推挽输出。
#define _PIN_PP(Port,Pin)                {clrBit(P##Port##M1,Pin);setBit(P##Port##M0,Pin);}       
#define PIN_PP(Port,Pin)                _PIN_PP(Port,Pin)

//设置Port端口的Pin引脚为高阻态。例如:PIN_HighZ(1,2) 设置P12引脚为高阻态。
#define _PIN_HighZ(Port,Pin)                {setBit(P##Port##M1,Pin);clrBit(P##Port##M0,Pin);}       
#define PIN_HighZ(Port,Pin)                        _PIN_HighZ(Port,Pin)

//设置Port端口的Pin引脚为开漏输出。例如:PIN_OD(1,2) 设置P12引脚为开漏输出。
#define _PIN_OD(Port,Pin)                {setBit(P##Port##M1,Pin);setBit(P##Port##M0,Pin);}       
#define PIN_OD(Port,Pin)                _PIN_OD(Port,Pin)


#endif

一周热门 更多>