c8051f020 I/O装备小结
留意的问题:
1.低端口既能按位寻址,也能够按字节寻址;高端口只能按字节寻址。
2.没有被分配到的引脚作为一般的数字通用I/O口。
3.P1口还能够用作ADC1的模仿输入。
4.P0MDOUT~P3MDOUT用于操控I/O端口每一位的输出状况。
5.EMIF(外部存储器接口)是用于CPU与片外XRAM之间的数据传输通道,经过寄存器EMI0CF和EMI0CN挑选和办理端口完成数据的传输。
6.为了能拜访片外存储器空间,有必要设置EMI0CN寄存器的内容为片外存储器的空间页地址。
7.假如把外部存储器接口(EMIF)设置在高端口则首要要把EMI0CF的PRTSEL位设置为1,挑选高端口,一起挑选地址的复用或非复用办法,在把XBR的外部寄存器的EMIFLE位设置为0。
8.复用办法装备:在复用办法下,数据总线和地址总线的第8位共用相同的引脚(AD0~AD7)。在该办法下,要用一个外部锁存器(如74HC373或相同功用的锁存器)坚持RAM地址的低8位。外部锁存器由ALE(地址锁存使能)信号操控,ALE信号由外部存储器接口逻辑驱动。
9.在总线复用时,需求把地址数据复用端口装备为漏极开路。
10.ALE高/低脉宽占1个SYSCLK周期,地址树立/坚持时刻占0个SYSCLK周期,/WR和/RD占12个SYSCLK周期,EMIF作业在地址/数据复用办法,即:EMI0CF |= 0x2c;EMI0TC |= 0x2c;装备EMIF的过程是:先将EMIF选到低端口或高端口;然后挑选复用办法或非复用办法;再挑选存储器的方法(只用片内存储器、不带块挑选的分片办法、带块挑选的分片办法或只用片外存储器);然后设置EMI0TC;最终经过寄存器PnMDOUT和P74OUT挑选所希望的相关端口的输出办法。如:
void PORT_Init (void)
{
}
11.防止高端口处于“浮空”状况,以防止因输入浮空为无效逻辑电平而导致不必要的功率耗费,为此应采纳如下办法的任何一种:a.将XBR2.7位设置为逻辑0挑选弱上拉状况
R/W
WEAKPUD
位7
位7 WEAKPUD 弱上拉制止位
0 弱上拉大局答应
1 弱上拉大局制止
位6 XBARE 交叉开关答应位
0 交叉开关制止端口0 1 2 和3 的一切引脚被强制为输入办法
1 交叉开关答应
位5 未用读0 写=疏忽
位4 T4EXE T4EX 输入答应位
0 T4EX 不连到端口引脚
1 T4EX 连到端口引脚
位3 T4E T4 输入答应位
0 T4 不连到端口引脚
1 T4 连到端口引脚
位2 UART1E UART1 I/O 答应位
0 UART1 I/O 不连到端口引脚
1 UART1 TX 和RX 连到两个端口引脚
位1 EMIFLE 外部存储器接口低端口答应位
0 P0.7 P0.6 和P0.5 的功用由交叉开关或端口锁存器决议
1 假如EMI0CF.4 = 0 外部存储器接口为复用办法
则P0.7 (/WR) P0.6 (/RD)和P0.5 (/ALE)被交叉开关越过它们的输出
状况由端口锁存器和外部存储器接口决议
1 假如EMI0CF.4 = 1 外部存储器接口为非复用办法
则P0.7 (/WR)和P0.6 (/RD)被交叉开关越过它们的输出状况由端口锁
存器和外部存储器接口决议
位0 CNVSTE 外部转化发动输入答应位
0 CNVSTR 不连到端口引脚
1 CNVSTR 连到端口引脚;
b.令P74OUT=0xFF,将高端口输出办法装备为推拉办法(P74OUT为高端口输出办法寄存器);
c.向高端口数据寄存器P4、P5、P6和P7写0。
12.装备端口引脚的输出办法
每个端口引脚的输出办法都可被装备为漏极开路或推挽办法。在推挽办法下向端口数据寄存器中的相应位写逻辑0 将使端口引脚被驱动到GND 写逻辑1 将使端口引脚被驱动到VDD ,在漏极开路办法下向端口数据寄存器中的相应位写逻辑0 将使端口引脚被驱动到GND 写逻辑1 将使端口引脚处于高阻状况,当体系中不同器材的端口引脚有同享衔接。即多个输出衔接到同一个物理线时(例如SMBus 衔接中的SDA 信号),运用漏极开路办法能够防止不同器材之间的抵触。(推挽办法在有些书中称为推拉办法)
转载-关于开漏、推挽办法2008-01-27 17:53漏级开路即高阻状况,适用于输入/输出,其可独立输入/输出低电平和高阻状况,若需求发生高电平,则需运用外部上拉电阻或运用如LCX245等电平转化芯片。有些朋友,尤其是未学过此方面常识的朋友,在实际作业中将I/O口设置为漏开,并想输出高电平,但向口线上写1后对方并未认出高电平,但用万用表丈量引脚确有电压,这种认为是不对的,关于高阻状况来说,丈量电压是无意义的,正确的办法应是外加上拉电阻,上拉电阻的阻值=上拉电压/芯片引脚最大灌(拉)电流。
推挽办法可彻底独立发生凹凸电平,推挽办法为低阻,这样,才干确保口线上不分走电压或分走极小的电压(可疏忽),确保输出与电源相同的高电平,推挽适用于输出而不适用于输入,由于若对推挽(低阻)加高电平后,I=U/R,I会很大,将形成口的焚毁。
对与C8051F的许多类型片子,将I/O口设置为推挽办法的做法为:PnMDOUT=0xff,Pn=0x00,这样设置I/O口为推挽,并输出低电平(可降低功耗)将I/O口设置为漏开办法的做法为:PnMDOUT=0x00,Pn=0x11,这样设置I/O口为漏开。
假如学过三极管扩大电路必定知道,前置单管扩大器和功放末级扩大电路的差异。单片机内部的逻辑经过内部的逻辑运算后需求输出到外面,外面的器材或许需求较大的电流才干推进,因而在单片机的输出端口有必要有一个驱动电路。
推挽办法可彻底独立发生凹凸电平,推挽办法为低阻,这样,才干确保口线上不分走电压或分走极小的电压(可疏忽),确保输出与电源相同的高电平,推挽适用于输出而不适用于输入,由于若对推挽(低阻)加高电平后,I=U/R,I会很大,将形成口的焚毁。
推挽输出0的时分和开漏特性相同,便是1的时分能够当作直接接VCC.
推挽输出的驱动才干适当强,由于输出1就等于接到了VCC.而一起推挽输出的IO也需求留意不要直接接到地,不然一旦输出1,就等于VCC经过内部的场效应管直接到地了,这时分IO端发热就很大,时刻长就就拜拜了.
你看到DX32试验板上,按键部分都是串了个300欧才到地的,便是为了防止IO误操作,使这些输入变成推挽输出1而做的维护.
以此为规划根据,一般情况下,一切的IO都尽量防止直接到地,即便这个IO你是计划用来做输入的.