logo
 
首页-> 产品信息-> 16位单片机
 
入门指南
开发&工具
应用方案
客户支持
 
快速编程
一、IO口设置 二、AD设置 三、CMT定时器设置 四、MCP定时器设置
五、PDC定时器设置 六、中断系统的操作 七、SPI的设置 八、UART的设置
九、内部Flash自编程操作 十、Buzzer频率输出操作 十一、看门狗的设置 十二、低功耗模式
十三、程序设计技巧      

IO口设置

1. 将IOA口设置为上拉输入

汇编代码:
//将IOA口设置为上拉输入
r1 = 0x0000
[P_IOA_Dir] = r1 //设置P_IOA_Dir寄存器,将IOA口设置为输入
[P_IOA_Attrib] = r1 //设置P_IOA_Attrib寄存器,将IOA口设置为非悬浮
r1 = 0xFFFF
[P_IOA_Buffer] = r1 //设置P_IOA_ Buffer寄存器,将IOA口设置为上拉

C语言代码:
//将IOA口设置为上拉输入
P_IOA_Dir->W = 0x0000; //设置P_IOA_Dir寄存器,将IOA口设置为输入
P_IOA_Attrib->W = 0x0000; //设置P_IOA_Attrib寄存器,将IOA口设置为非悬浮
P_IOA_Buffer->W = 0xFFFF; //设置P_IOA_ Buffer寄存器,将IOA口设置为上拉

2. 将IOA口设置为下拉输入

汇编代码:
//将IOA口设置为下拉输入
r1 = 0x0000
[P_IOA_Dir] = r1 //设置P_IOA_Dir 寄存器,将IOA口设置为输入
[P_IOA_Attrib] = r1 //设置P_IOA_Attrib 寄存器,将IOA口设置为非悬浮
[P_IOA_Buffer] = r1 //设置P_IOA_ Buffer寄存器,将IOA口设置为下拉

C语言代码:
//将IOA口设置为下拉输入
P_IOA_Dir->W = 0x0000; //设置P_IOA_Dir 寄存器,将IOA口设置为输入
P_IOA_Attrib->W = 0x0000; //设置P_IOA_Attrib 寄存器,将IOA口设置为非悬浮
P_IOA_Buffer->W = 0x0000; //设置P_IOA_ Buffer寄存器,将IOA口设置为下拉

3. 将IOA口设置为悬浮输入

汇编代码:
//将IOA口设置为悬浮输入
r1 = 0x0000
[P_IOA_Dir] = r1 //设置P_IOA_Dir 寄存器,将IOA口设置为输入
r1 = 0xFFFF
[P_IOA_Attrib] = r1 //设置P_IOA_Attrib 寄存器,将IOA口设置为悬浮

C语言代码:
//将IOA口设置为悬浮
P_IOA_Dir->W = 0x0000; //设置P_IOA_Dir 寄存器,将IOA口设置为输入
P_IOA_Attrib->W = 0xFFFF; //设置P_IOA_Attrib 寄存器,将IOA口设置为悬

4. 将IOA口设置为输出,初始化为高电平

汇编代码:
(1)反向输出
//将IOA口设置为反向输出,输出高电平
r1 = 0xFFFF
[P_IOA_Dir] = r1 //设置P_IOA_Dir寄存器,将IOA口设置为输出
r1 = 0x0000
[P_IOA_Attrib] = r1 //设置P_IOA_Attrib寄存器,将IOA口设置为反向输出
[P_IOA_Buffer] = r1 //设置P_IOA_Buffer寄存器,IOA口输出高电平

(2)非反向输出
//将IOA口设置为非反向输出,输出高电平
r1 = 0xFFFF
[P_IOA_Dir] = r1 //设置P_IOA_Dir寄存器,将IOA口设置为输出
[P_IOA_Attrib] = r1 //设置P_IOA_Attrib寄存器,将IOA口设置为非反向输出
[P_IOA_Buffer] = r1 //设置P_IOA_Buffer寄存器,IOA口输出高电平

C语言代码:
(1)反向输出
//将IOA口设置为反向输出,输出高电平
P_IOA_Dir->W = 0xFFFF; //将IOA口设置为输出
P_IOA_Attrib->W = 0x0000; //将IOA口设置为反向输出
P_IOA_Buffer->W = 0x0000; //IOA口输出高电平

(2)非反向输出
//将IOA口设置为非反向输出,输出高电平
P_IOA_Dir->W = 0xFFFF; //将IOA口设置为输出
P_IOA_Attrib->W = 0xFFFF; //将IOA口设置为非反向输出
P_IOA_Buffer->W = 0xFFFF; //IOA口输出高电平

5. 将IOA口设置为输出,初始化为低电平

汇编代码:
(1)反向输出
//将IOA口设置为反向输出,输出低电平
r1 = 0xFFFF
[P_IOA_Dir] = r1 //设置P_IOA_Dir寄存器,将IOA口设置为输出
r1 = 0x0000
[P_IOA_Attrib] = r1 //设置P_IOA_Attrib寄存器,将IOA口设置为反向输出
r1 = 0xFFFF
[P_IOA_Buffer] = r1 //设置P_IOA_Buffer寄存器,IOA口输出低电平

(2)非反向输出
//将IOA口设置为非反向输出,输出低电平
r1 = 0xFFFF
[P_IOA_Dir] = r1 //设置P_IOA_Dir寄存器,将IOA口设置为输出
[P_IOA_Attrib] = r1 //设置P_IOA_Attrib寄存器,将IOA口设为非反向输出
r1 = 0x0000
[P_IOA_Buffer] = r1 //设置P_IOA_Buffer寄存器,IOA口输出低电平

C语言代码:
(1)反向输出
//将IOA口设置为反向输出,输出低电平
P_IOA_Dir->W = 0xFFFF; //将IOA口设置为输出
P_IOA_Attrib->W = 0x0000; //将IOA口设置为反向输出
P_IOA_Buffer->W = 0xFFFF; //IOA口输出低电平

(2)非反向输出
//将IOA口设置为非反向输出,输出低电平
P_IOA_Dir->W = 0xFFFF; //将IOA口设置为输出
P_IOA_Attrib->W = 0xFFFF; //将IOA口设置为非反向输出
P_IOA_Buffer->W = 0x0000; //IOA口输出低电平

6. 将IOA口设置为特殊功能使能

汇编代码:
//使用IOA口各位的特殊功能
//如果只使能其中几位的特殊功能,则只需P_IOA_SPE寄存器中的对应位置1
r1 = [P_IOA_SPE] //取P_IOA_SPE的值
r1 |= 0x7E00 //为了不影响其他位的设置
[P_IOA_SPE] = r1 //设置P_IOA_SPE寄存器,使能IOA[9-14]的特殊功能

C语言代码:
//使用IOA口各位的特殊功能
//如果只使能其中几位的特殊功能,则只需P_IOA_SPE寄存器中的对应位置1
P_IOA_SPE->W |= 0x7E00;

7. 将IOA[2]设置为上拉输入,不改变其它端口(位操作)

汇编代码:
//将IOA[2]设置为上拉输入,不改变其它端口
r1 = [P_IOA_Dir] //取P_IOA_Dir的值
r1 &= 0xFFFB //为了不影响其他位的设置
[P_IOA_Dir] = r1 //设置P_IOA_Dir 寄存器,将IOA[2]设置为输入
r1 = [P_IOA_Attrib]
r1 &= 0xFFFB
[P_IOA_Attrib] = r1 //设置P_IOA_Attrib 寄存器,将IOA[2]设置为非悬浮
r1 = [P_IOA_Buffer]
r1 |= 0x0004
[P_IOA_Buffer] = r1 //设置P_IOA_Buffer寄存器,将IOA[2]设置为上拉

C语言代码:
//将IOA[2]设置为上拉输入,不改变其它端口
P_IOA_Dir->W &= 0xFFFB; //将IOA[2]设置为输入,不影响其他位
P_IOA_Attrib->W &= 0xFFFB; //将IOA[2]设置为非悬浮,不影响其他位
P_IOA_Buffer->W |= 0x0004; //将IOA[2]设置为上拉,不影响其他位

8. 将IOA[2]设置为下拉输入,不改变其它端口(位操作)

汇编代码:
//将IOA[2]设置为下拉输入,不改变其它端口
r1 = P_IOA_Dir //将P_IOA_Dir地址送R1
clrb [r1],2 //将[P_IOA_Dir]第2位清0
r1 = P_IOA_Attrib //将P_IOA_Attrib地址送R1
clrb [r1],2 //将[P_IOA_Attrib]第2位清0
r1 = P_IOA_Buffer //将P_IOA_Buffer地址送R1
clrb [r1],2 //将[P_IOA_ Buffer]第2位清0

C语言代码:
//将IOA[2]设置为下拉输入,不改变其它端口
P_IOA_Dir->B.bit2 = 0; //将IOA[2]设置为输入,不影响其他位
P_IOA_Attrib->B.bit2 = 0; //将IOA[2]设置为非悬浮,不影响其他位
P_IOA_Buffer->B.bit2 = 0; //将IOA[2]设置为下拉,不影响其他位

9. 将IOA[2]设置为悬浮输入,不改变其它端口(位操作)

汇编代码:
//将IOA[2]设置为悬浮,不改变其它端口
r1 = P_IOA_Dir //将P_IOA_Dir地址送R1
clrb [r1],2 //将[P_IOA_Di]r第2位清0
r1 = P_IOA_Attrib //将P_IOA_Attrib地址送R1
setb [r1],2 //将[P_IOA_Attrib]第2位置1

C语言代码:
//将IOA[2]设置为悬浮,不改变其它端口
P_IOA_Dir->B.bit2 = 0; //将IOA[2]设置为输入,不影响其他位
P_IOA_Attrib->B.bit2 = 1; //将IOA[2]设置为悬浮,不影响其他位

10. 将IOA[2]设置为输出高电平,不改变其它端口(位操作)

汇编代码:
(1) 反向输出
//将IOA[2]设置为输出高电平(反向输出),不改变其它端口
r1 = P_IOA_Dir //将P_IOA_Dir地址送R1
setb [r1],2 //将[P_IOA_Dir]第2位置1
r1 = P_IOA_Attrib //将P_IOA_Attrib地址送R1
clrb [r1],2 //将[P_IOA_Attrib]第2位清0
r1 = P_IOA_Buffer //将P_IOA_Buffer地址送R1
clrb [r1],2 //将[P_IOA_Buffer]第2位置1

(2)非反向输出
//将IOA[2]设置为输出高电平(非反向输出),不改变其它端口
r1 = P_IOA_Dir //将P_IOA_Dir地址送R1
setb [r1],2 //将[P_IOA_Dir]第2位置1
r1 = P_IOA_Attrib //将P_IOA_Attrib地址送R1
setb [r1],2 //将[P_IOA_Attrib]第2位置1
r1 = P_IOA_Buffer //将P_IOA_Buffer地址送R1
setb [r1],2 //将[P_IOA_Buffer]第2位置1

C语言代码:
(1) 反向输出
//将IOA[2]设置为输出高电平(反向输出),不改变其它端口
P_IOA_Dir->B.bit2 = 1; //将IOA[2]设置为输出,不影响其他位
P_IOA_Attrib->B.bit2 = 0; //将IOA[2]设置为反向输出,不影响其他位
P_IOA_Buffer->B.bit2 = 0; //IOA[2]输出高电平,不影响其他位

(2)非反向输出
//将IOA[2]设置为输出高电平(非反向输出),不改变其它端口
P_IOA_Dir->B.bit2 = 1; //将IOA[2]设置为输出,不影响其他位
P_IOA_Attrib->B.bit2 = 1; //将IOA[2]设置为非反向输出,不影响其他位
P_IOA_Buffer->B.bit2 = 1; //IOA[2]输出高电平,不影响其他位

11. 将IOA[2]设置为输出低电平,不改变其它端口(位操作)

汇编代码:
(1)反向输出
//将IOA[2]设置为输出低电平(非反向输出),不改变其它端口
r1 = P_IOA_Dir //将P_IOA_Dir地址送R1
setb [r1],2 //将[P_IOA_Dir]第2位置1
r1 = P_IOA_Attrib //将P_IOA_Attrib地址送R1
clrb [r1],2 //将[P_IOA_Attrib]第2位清0
r1 = P_IOA_Buffer //将P_IOA_Buffer地址送R1
setb [r1],2 //将[P_IOA_Buffer]第2位置1

(2)非反向输出
//将IOA[2]设置为输出低电平(非反向输出),不改变其它端口
r1 = P_IOA_Dir //将P_IOA_Dir地址送R1
setb [r1],2 //将[P_IOA_Dir]第2位置1
r1 = P_IOA_Attrib //将P_IOA_Attrib地址送R1
setb [r1],2 //将[P_IOA_Attrib]第2位置1
r1 = P_IOA_Buffer //将P_IOA_Buffer地址送R1
clrb [r1],2 //将[P_IOA_Buffer]第2位清0

C语言代码:
(1)反向输出
//将IOA[2]设置为输出低电平(反向输出),不改变其它端口
P_IOA_Dir->B.bit2 = 1; //将IOA[2]设置为输出,不影响其他位
P_IOA_Attrib->B.bit2 = 0; //将IOA[2]设置为反向输出,不影响其他位
P_IOA_Buffer->B.bit2 = 1; //IOA[2]输出低电平,不影响其他位

(2)非反向输出
//将IOA[2]设置为输出低电平(非反向输出),不改变其它端口
P_IOA_Dir->B.bit2 = 1; //将IOA[2]设置为输出,不影响其他位
P_IOA_Attrib->B.bit2 = 1; //将IOA[2]设置为非反向输出,不影响其他位
P_IOA_Buffer->B.bit2 = 0; //IOA[2]输出低电平,不影响其他位

版权所有:北京凌阳爱普科技有限公司 京ICP备05061966号 未经许可网站内容严禁复制、转载,任何人不得擅自使用
友情链接:凌阳爱普 嵌入式培训 安卓培训 凌阳大学计划 北京嵌入式培训 深圳嵌入式培训 成都嵌入式培训