- 打卡等级:偶尔看看III
- 打卡总天数:54
- 最近打卡:2025-05-01 09:07:55
管理员
- 积分
- 15609
|
发表于 2025-3-6 19:28:59
|
显示全部楼层
本楼附件有参考程序
I/O 口的工作模式 实验建议:
【准双向口/弱上拉】;
【强推挽输出】;
【高阻输入】,内部还有6K上拉电阻配合;
===打开内部上拉6K上拉配合读外部状态
【开漏模式】,内部还有6K上拉电阻配合;
===打开内部上拉6K,就相当于【准双向口/弱上拉】
I/O读外部状态,可以用如下三种模式:
【准双向口/弱上拉】;
【高阻输入】,内部还有6K上拉电阻配合;
===打开内部上拉6K上拉配合读外部状态
【开漏模式】,内部还有6K上拉电阻配合;
===打开内部上拉6K,就相当于【准双向口/弱上拉】
I/O对外输出高/低,可以用如下三种模式:
【准双向口/弱上拉】;
【强推挽输出】;
【开漏模式】
===对外输出低,就是强推挽的低
===对外输出高,就是高阻输入,没电流流进,也没电流流出,灯不亮
P3.2/P3.3/P3.4/P3.5 都有按键接地,建议:
P0口 都有单独的指示灯
实验1, 位操作,用USB直接仿真来调试:
单独 读这几个独立I/O的状态,P3.2/P3.3/P3.4/P3.5
输出到 P0.2/P0.3/P0.4/P0.5 对应的指示灯
单独读时,分别用三种I/O口的工作模式测试下
单独输出时,分别用三种I/O口的工作模式测试下
I/O读外部状态,可以用如下三种模式:
【准双向口/弱上拉】;
【高阻输入】,内部还有6K上拉电阻配合;
===打开内部上拉6K上拉配合读外部状态
【开漏模式】,内部还有6K上拉电阻配合;
===打开内部上拉6K,就相当于【准双向口/弱上拉】
I/O对外输出高/低,可以用如下三种模式:
【准双向口/弱上拉】;
【强推挽输出】;
【开漏模式】
===对外输出低,就是强推挽的低
===对外输出高,就是高阻输入,没电流流进,也没电流流出,灯不亮
实验2, 整组8位端口操作,用USB直接仿真来调试:
整组 读这几个I/O的状态【P3.2/P3.3/P3.4/P3.5】,一次性读全部P3口
整体输出到 【P0.2/P0.3/P0.4/P0.5】在的P0口对应的指示灯
整组读时,分别用三种I/O口的工作模式测试下
整组输出时,分别用三种I/O口的工作模式测试下
I/O读外部状态,可以用如下三种模式:
【准双向口/弱上拉】;
【高阻输入】,内部还有6K上拉电阻配合;
===打开内部上拉6K上拉配合读外部状态
【开漏模式】,内部还有6K上拉电阻配合;
===打开内部上拉6K,就相当于【准双向口/弱上拉】
I/O对外输出高/低,可以用如下三种模式:
【准双向口/弱上拉】;
【强推挽输出】;
【开漏模式】
===对外输出低,就是强推挽的低
===对外输出高,就是高阻输入,没电流流进,也没电流流出,灯不亮
实验三,不用USB仿真,用 USB-CDC通信:
电脑 ISP软件中的,USB-CDC串口助手 通知 单片机读 P3.2/P3.3/P3.4/P3.5的状态。
1,送回 USB-CDC串口助手 显示
2,送到 AIapp-ISP 软件中的 【调试仿真接口 | 擎天柱-LED-PID40】虚拟显示
===通信协议见 【调试仿真接口 | 接口协议及帮助】部分
功能2: | 控制DIP40的指定组管脚上LED的状态 | 命令格式: | 4CH 45H 44H 28H 02H x1 px | 命令说明: |
| 第1~4字节: | 命令头 | 第5字节: | 后面有效数据长度 | 第6字节: | P0~P5端口的屏蔽位
(01H:P0, 02H:P1, 04H:P2, 08H:P3, 10H:P4, 20H:P5) | 第7字节: | 端口的状态 |
| 使用串口通讯请参考下面的示例发送串口数据 | 示例1: | 发送4CH 45H 44H 28H 02H 01H 55H |
| 设置P0口的状态为55H | 示例2: | 发送4CH 45H 44H 28H 02H 04H AAH |
| 设置P2口的状态为AAH | 库函数声明: | void LED40_SetPort(BYTE port, BYTE dat);
*** 包含库函数的头文件后,不用另外声明 *** |
| 项目中包含库函数后,可直接调用下面的库函数 | 库函数调用: | LED40_SetPort(0, 0x55); //设置P0口输出55H
LED40_SetPort(1, 0xaa); //设置P1口输出AAH |
功能3: | 控制DIP40的指定管脚输出高电平 | 命令格式: | 4CH 45H 44H 28H 02H 00H px ... | 命令说明: |
| 第1~4字节: | 命令头 | 第5字节: | 后面有效数据长度 | 第6字节: | 固定为00H | 第7字节: | 端口的状态数据px
px的bit7:固定为1
px的bit6~bit3:指定第几组管脚(0:P0,1:P1,2:P2,...)
px的bit2~bit0:指定管脚的第几位(0:bit0,1:bit1,...) |
| 使用串口通讯请参考下面的示例发送串口数据 | 示例1: | 发送4CH 45H 44H 28H 02H 00H 83H |
| 设置P0.3口输出高电平 | 示例2: | 发送4CH 45H 44H 28H 02H 00H a5H |
| 设置P4.5口输出高电平 | 库函数声明: | void LED40_SetBit(BYTE port, BYTE bt);
*** 包含库函数的头文件后,不用另外声明 *** |
| 项目中包含库函数后,可直接调用下面的库函数 | 库函数调用: | LED40_SetBit(0, 3); //设置P0.3口输出高电平
LED40_SetBit(4, 5); //设置P4.5口输出高电平 |
功能4: | 控制DIP40的指定管脚输出低电平 | 命令格式: | 4CH 45H 44H 28H 02H 00H px ... | 命令说明: |
| 第1~4字节: | 命令头 | 第5字节: | 后面有效数据长度 | 第6字节: | 固定为00H | 第7字节: | 端口的状态数据px
px的bit7:固定为0
px的bit6~bit3:指定第几组管脚(0:P0,1:P1,2:P2,...)
px的bit2~bit0:指定管脚的第几位(0:bit0,1:bit1,...) |
| 使用串口通讯请参考下面的示例发送串口数据 | 示例1: | 发送4CH 45H 44H 28H 02H 00H 03H |
| 设置P0.3口输出低电平 | 示例2: | 发送4CH 45H 44H 28H 02H 00H 25H |
| 设置P4.5口输出低电平 | 库函数声明: | void LED40_ClrBit(BYTE port, BYTE bt);
*** 包含库函数的头文件后,不用另外声明 *** |
| 项目中包含库函数后,可直接调用下面的库函数 | 库函数调用: | LED40_ClrBit(0, 3); //设置P0.3口输出低电平
LED40_ClrBit(4, 5); //设置P4.5口输出低电平 |
|
|