ABOV单片机端口引脚GPIO讲解及示例代码-[MC96F6332D]
一、准备工作
1、KEIL C51编译环境
2、CodeGen8 代码生成器
3、MC96F6332D 开发板
4、USB-OCD II仿真器
二、生成GPIO的代码
1、在CodeGen8 代码生成器的外设窗口中选择内部RC时钟作为时钟源,并设置时钟的频率为8MHz,配置情况如下图①所示;设置GPIO中P07为输出引脚,模式配置为推挽输出且不使能引脚的上拉电阻;配置情况如下图②所示:
在main.c的窗口中可以看到CodeGen8 已经根据选择自动生成设置的代码段。
2、点击CodeGen8 中的C 图标,自动打开KEIL C51软件;下一步进行代码的修改、编译和程序下载;
1)、在代码中删除LCD驱动代码,本实验暂时用不到LCD部分;
2)、添加可以直接操作P07端口的置位和复位代码段,如下所示:
//设置P07置位
void P0GPIO_SETBit7()
{P0 |= 0x80;}//设置P07复位
void POGPIO_RESETBit7()
{P0 &= 0x7F;}
针对端口P07初始化代码如下所示,P0GPIO_Bit7_Init();函数要放到代码生成器中port_init()函数之后;
//P07初始化操作
void P0GPIO_Bit7_Init()
{P0IO |= 0x80; // direction //Bit7 set output //P0 方向寄存器 (0:输入 1:输出)P0PU |= 0x00; // pullup //Bit7 set output //P0 上拉电阻选择寄存器(0:禁止 1:使能)P0OD |= 0x00; // open drain //Bit7 set open drain //P0 漏极开路选择寄存器(0:推-拉输出 1:漏极开路输出)P0DB |= 0x00; // bit7~6(debounce clock), bit5~0=P07~02 debounce //P0 消抖使能寄存器 }
3)、增加延时函数,代码如下所示:
/*** @brief Inserts a delay time.* @param nCount: specifies the delay time length.* @retval None*/
void Delay(int nCount)
{/* Decrement nCount value */while (nCount != 0){nCount--;}
}
4)、编写主函数中while语句,代码如下:
// TODO: add your main code here while(1){/* Toggle LEDs LD1..LD4 */P0GPIO_SETBit7();Delay(0xFFFF);POGPIO_RESETBit7();Delay(0xFFFF);}
5、将仿真工具OCD II连接到电脑端的USB口,点击KEIL C51编译器中的魔术棒,在Debug选项卡中选择ABOV OCD-1/2 dongle,在Utilities选项卡的 Configure Flash Menu Command选项中同样选择ABOV OCD-1/2 dongle;最后点击OK。
6、编译工程,可以看到编译结果:无错误、无警告。
8、代码解析:通过MC96F6332D的user‘s Manual手册中 I/O Ports章节可以看出实验代码的含义:
针对 P0 方向寄存器和 P0PU 上拉电阻寄存器如下:
针对P0OD开漏寄存器和消抖寄存器P0OB的寄存器如下:
其中消抖寄存器P0OB是在GPIO引脚作为外部中断功能的时候才使能,如果引脚作为普通GPIO可以不需要开启。针对P0OB寄存器后面用到后再详细讲解。关于P0FSRH/L寄存器为P0端口的复用功能寄存器,同样在后面章节用到后再详细讲解,此处暂时忽略。
总结:此时可以看出,单片机的GPIO操作和功能都十分简单,根据自己的需求配置对应的寄存器即可。
9、点击编译器的下载按钮,将刚刚编译好的代码下载到MCU中进行调试仿真。
三、实验现象
1、本实验是通过操作P07引脚的GPIO的寄存器,实现LED灯的闪烁现象;
2、具体的参考代码可以访问链接:https://share.weiyun.com/500WLKu;进行免费下载。
备注:
1)、系统时钟切换为8MHz;
2)、针对数据寄存器Px(x取值为0,1,2,3,4,5)的操作:采用字节进行操作,避免采用位操作,即IF(P10) → IF(P1&0x01),左边的指令应该改成右边的指令形式。在数据手册同样有说明。
因为小编自己能力水平有限,文中难免有错误或表达不到的信息,还望广大阅读者留言批评指正,谢谢。
ABOV单片机端口引脚GPIO讲解及示例代码-[MC96F6332D]相关推荐
- ABOV单片机UART串口通讯实现讲解及示例代码-[MC96F6332D]
一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.生成串口通讯代码 1.在CodeGen8 代码生成器 ...
- ABOV单片机内部中断优先级寄存器IP1x/IPx的设置代码实现讲解及示例代码-[MC96F6332D]
一.准备工作 1.KEIL C51编译环境 2.外部中断EINT示例代码-MC96F6332D 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.代码部分 1.现代单片机MC96F ...
- ABOV单片机外部引脚中断EINT实现讲解及示例代码-[MC96F6332D]
一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.生成外部引脚中断的代码 1.在CodeGen8 代码 ...
- ABOV单片机UART串口通讯中Printf函数实现讲解及示例代码-[MC96F6332D]
一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.生成串口代码 1.在CodeGen8 代码生成器的外 ...
- ABOV单片机内部定时器Timer1的定时器代码实现讲解及示例代码-[MC96F6332D]
一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.内部定时器PWM代码生成 1.在CodeGen8 代 ...
- ABOV单片机内部看门狗WDT的代码实现讲解及示例代码-[MC96F6332D]
一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.内部看门狗代码生成 1.在CodeGen8 代码生成 ...
- ABOV单片机时钟切换讲解及示例代码-[MC96F6332D]
一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.生成系统时钟代码 1.在CodeGen8 代码生成器 ...
- ABOV单片机模数转换ADC部分代码实现讲解及示例代码-[MC96F6332D]
一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.ADC的配置和代码生成 1.在CodeGen8 代码 ...
- ABOV单片机内部WT时钟RTC的代码实现讲解及示例代码-[MC96F6332D]
一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.内部WT时钟代码生成 1.在CodeGen8 代码生 ...
最新文章
- 查看器_三款完美替代Windows10自带照片查看器的神器!
- Leetcode 92 反转链表 II (每日一题 20210726)
- 草履虫纳米机器人_Nature:看不见的外科医生——比头发丝还小的微型“机器人大军”正在走来...
- [云炬创业基础笔记]第五章创业机会评估测试4
- 谷歌浏览器首页被改hao123_百度浏览器停更?今日头条、微博谁将获利?
- SAP CRM WebClient UI html 格式的 Text 显示逻辑
- 批处理延迟sleep应用
- 认识服务器与web服务器
- asp.net获取ip地址的方法
- 搭建证书服务器(2003)学习笔记
- 遗传算法优化变分模态分解VMD包络熵和参数及MATLAB代码
- 电池SOC仿真系列-基于双卡尔曼滤波算法的电池SOC估算研究
- win8 查看和更换密钥方法
- 流媒体网络性能指标——抖动
- 债券价格和到期收益率的关系_债券价格与到期收益率之间的关系.PPT
- 19 「沉淀」,20「继续沉淀」
- 为什么都瞧不起培训班出来的程序员?
- CVBS-复合视频广播信号[转]
- html中计时器,计时器.html
- 涉密资质要求的保密室建设标准有哪些?