80c51单片机p3口做输入端置1代码
89C51单片机的P0~P3口不是标准意义的双向口 ,他只是准双向口
你可以对照着P0口的结构图看这段话,向端口写1,就是向锁存器写1,
也就是让其口输出FF,为什么,是这样的,给锁存器写1,那么锁存器
的反向端就输出0,那么和它相接的MOS管也就在截止状态,也就是呈高
阻态,这样P0口上数据就会从读引脚的三态缓冲器上正确的输入,如果
不写1,那么锁存器上次锁存的可能为0,那么反向端有可能出现1,这样
和反向端相接的MOS管就倒通,也就是直接拉到地,那么不管你P0口上输
入什么信号都会拉成低电平,输入就错了
双向口与准双向口的区别主要是:准双向口I/O口操作时做数据输入时需
要对其置1,否则若前一位为低电平,后一位输入的电平为高则MOS管拉不起来
导致出错。而双向口则不需要做此动作,因为双向口有悬浮态。
准双向口只能有效的读取0,而对1则是采用读取非零的方式,就是读入的时候要先向接口上写1,然后再读。真正的双向口正如其名,就是真正的双向io不需要任何预操作可直接读入读出
复位时,都已经自动置一了。
当你清零后,再想要输入,就必须重新置一。
区别在于,用或运算得到的结果仅改变低4位,高4位无论原来是什么都保持不变
用赋值的多余作用是,在给低4位置1后,高4位被强制清0
请教c51单片机,c语言编程,关于控制LED灯闪烁频率?
代码 ```include <reg51.h> sbit LED = P2^0;sbit K1 = P3^0;sbit K2 = P3^1;unsigned int freq = 50; \/\/ 初始频率为50Hz void Timer0_ISR() interrupt 1 { static unsigned int cnt = 0;cnt++;if(cnt == 1000\/freq){ LED = ~LED; \/\/每达到一定时间就更改LED灯状态 cn...
单片机原理流水灯实验报告
二、实验原理:MCS-51系列单片机有四组8位并行I\/O口,记作P0、P1、P2和P3。每组I\/O口内部都有8位数据输入缓冲器、8位数据输出锁存器及数据输出驱动等电路。四组并行I\/O端口即能够按字节操作,又能够按位操作。当系统没有扩展外面器件时,I\/O端口用作双向输入输出口;当系统作外面扩展时,使用P0...
单片机c51的按键0~f的代码
P3=0x0f;scan2=P3;keycode=scan1|scan2; \/\/组合成键编码 for(j=0;j<=15;j++){ if(keycode== key_code[j]) \/\/查表得键值 { key=j;return(key);} } } } else P3=0xff;return (16);} \/ 判键是否按下子函数 \/ void keydown(){ P3=0x0f;if((P3&0x0f)!=0x0f...
c51单片机上电后io口默认的电平时什么?
默认都是高电平,因为只不过P0没有内部上拉电阻,是弱上拉,不加外部上拉电阻的话只能驱动外部的门电路。P1到P3都有上拉电阻,是强上拉,可以直接驱动外部的接口电路。
急!C51单片机I\/O口默认高电平问题!!!
sfr P0 = 0x80; sfr P1 = 0x90; sfr P2 = 0xA0; sfr P3 = 0xB0 指的是端口寄存器的地址,并不是端口初始值。二,如果你的发光二极管是高电平驱动亮,则P0口输出10000000时,发光管会亮 但是这个1000000值不是你加载头文件得到的值,是在程序赋值得到的。补充回答:...
单片机c51,p3.2和p3.3端口接按钮,然后随意按下一个按钮跳到自己原先设...
P3.2 P3.3 是两个外部中断入口,对应的中断入口为0003H 0013H ,(你要使按下键为低电平)你不需要设定任何转移指令 只要系统中断允许已打开(在程序前面加一条 MOV IE,#85H 既可,根据你自己想要 用电平触发 还是下降沿触发,选择设定 SETB ITO SETB IT1 或者CLR IT0 CLR IT1) 这样 ...
单片机c51,p3.2和p3.3端口接按钮,然后随意按下一个按钮跳到自己原先设...
ORG 0000H LJMP MAIN LJMP SUB1 ;p3.2口按按钮,跳子程序 ORG 0013H LJMP SUB1 ;p3.3口按按钮, 跳子程序 MAIN: ORG 0100H SETB IT0 SETB IT1 SETB EX0 SETB EX1 SETB EA ;允许中断 SJMP $ ;等待中断 SUB1: ; 自己原先设计的...
用单片机c51,c语言编0-9计数器程序!谢谢!!!
你的硬件电路有问题啊,单片机31号脚要接高电平 还有,你的数码管接法也不对啊 看你的排阻接法,你的数码管要用共阴极的 当加到9之后,再按一下,是不是又恢复到0啦???下面是更改的回答 include<reg51.h>unsigned char a;unsigned char code table[]={ 0x3f,0x06,0x5b,0x4f,0x66,...
急求:单片机上电时数码管显示“0”,编写C51语言程序 利用单片机的外部中 ...
include<reg51.h> define uchar unsigned char;uchar distab[]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};uchar flag;sbit key=P3^2;void ext0() interrupt 0 { flag=1;} main(){ IT0=1;EA=1;EX0=1;P1=distab[0];...
80C51单片机引脚有哪些第二功能?
P0和P1,除了做I\/O口外,还做地址总线(当接外部存储器时)有第二功能的还有P3口的八个引脚,除此还有两引脚有第二功能。P3第二功能各引脚功能定义:P3.0:RXD串行口输入 P3.1:TXD串行口输出 P3.2:INT0外部中断0输入 P3.3:INT1外部中断1输入 P3.4:T0定时器0外部输入 ...
地荔生物: 区别在于,用或运算得到的结果仅改变低4位,高4位无论原来是什么都保持不变 用赋值的多余作用是,在给低4位置1后,高4位被强制清0
呼兰县13649654298: C51用P3口做输入时,一定需要先对该口置1吗? 我P3每个引脚都上拉了一个500欧的电阻的 - ?
地荔生物: 没必要置1的,如果IO口驱动能力不足的时候才会用到上拉,一般也不需要上拉的,只有P0口没有上拉电阻,其他几个IO口内部都自带上拉电阻了.51单片机上电默认IO口就是高电平,用软件来完成最简单了,直接写1就行了. 单片机引脚作为输入和输出是由程序来决定的,与外围电路无关. 比如你想做输出,就直接给P3口赋值.P3 = 0xFE; MOV P3,#0FEH 如果你想让P3口做输入,直接读取P3口就行了 A=P3; MOV A,P3 最好把电路发上来,说清楚你想要完成的功能,才能更好的帮你解决.
呼兰县13649654298: 51单片机中p0,p1,p2和p3端口在输入前都需要置1吗? - ?
地荔生物: 复位时,都已经自动置一了.当你清零后,再想要输入,就必须重新置一.
呼兰县13649654298: 51单片机P3口作为第二功能使用要先写1吗 - ?
地荔生物: 原理上,51单片机P3口作为第二功能使用前,是要先写1的.但是,既然做第二功能用了,就不会给所用引脚写过0的.而且,单片机开机复位P3口各引脚本就是为1的,所以,在开机后保证没有写过0,就不必写1啦.假如,有指令给引脚写过0(这种可能性不大,因为用第二功能了,就不能做输出脚),那就应该再写1.
呼兰县13649654298: 51单片机 我想让p3口做输入口, 然后用程序读取p3口的数据,应用汇编语言的哪个指令? - ?
地荔生物: 先对要读的P3端口置高,再用传送指令.mov p3,#0ff (如P3固定只用作输入这句可不用) mov a,P3
呼兰县13649654298: 单片机P1—P3口作为输入口的时候,为什么要先向该口写1呢? - ?
地荔生物: 问题很简单,要说清不容易,原因是P0~P3都是准双向口,为什么呢?这要看四个并口的口结构图就明白了. 什么叫准双向,就是说P0~P3输出没问题,输入就不然了.就象我们常见的门,朝外开,没有拉锁,用一节弹簧拉着.出去是一顶门就开了,进来的时候,无论如何要伸手拉一下门. 这个拉门的动作就是向Px口先写1. 目的是使场效应管被钳位在低电平的漏极与源极截断.使输入的电平信号能正确的被单片机读出.
呼兰县13649654298: 单片机P0口作为输入,需要先置1吗? - ?
地荔生物: P0作输入时不需要上拉电阻,但要先置1. 因为P0口作一般I/O口时上拉场效应管一直截止,所以如果不置1,下拉场效应管会导通,永远只能读到0. 因此在输入前置1,使下拉场效应管截止,端口会处于高阻浮空状态,才可以正确读入数据. 至于输出时,输出0是正常的,输出1时由于端口处于浮空状态不能正确输出1,因此才需要接上拉电阻.
呼兰县13649654298: 51单片机的端口怎么置1 - ?
地荔生物: 51单片机的端口 操作 如:MOV P1, #00H ; 字节操作 P1 口 8 位 置 0MOV P1, #0FFH ; 字节操作 P1 口 8 位 置 1MOV P1, #0FH ; 字节操作 P1 口 高 4 位 置 0 ,低 4 位 置 1SETB P1.0 ; 位操作 P1.0 = 1CLR P1.1 ; 位操作 P1.0 = 0SETB C ; 位操作 C = 1MOV P1.2, C ; 位操作 P1.2 = C ( C = 1 则 P1.2 = 1)MOV C, P1.3 ; 位操作 C = P1.3
呼兰县13649654298: 请问51单片机P3口作为数据接收口时,书上写要先将口置1,不懂什么意思?请教 - ?
地荔生物: 单片机标准双向I/O口,只有先给置1读出来的数据才准确,如果I/O口送0的话,无论怎么读都是0
呼兰县13649654298: 89C51单片机的P0~P3端口进行输入时为什么要设置为1? - ?
地荔生物: 89C51单片机的P0~P3口不是标准意义的双向口 ,他只是准双向口 你可以对照着P0口的结构图看这段话,向端口写1,就是向锁存器写1, 也就是让其口输出FF,为什么,是这样的,给锁存器写1,那么锁存器 的反向端就输出0,那么和它相接...