PIC单片机IO口无法控制

#include<pic18.h>
__PROG_CONFIG(1, 0xF387);
__PROG_CONFIG(2, 0xF004);
void main()
{
TRISD=0x00;
PORTD=0xff;
TRISC=0X00;
PORTC=0XFF;
TRISB=0X00;
PORTB=0XFF;

while(1);
}
这几个口不是AD口 到底哪里有错 烦死了

在PIC18系列里,PORT寄存器不是用来做输出的,LAT才是用来做输出的。如LATB=0xff;
PORT寄存器是用来读取IO的状态,而LAT其实是读-修改-写操作。
如果对PORT寄存器进行写操作,只是会将你要写的数据放到IO口的锁存器中,但并不会发送到IO上。而写LAT则是先读锁存器的数据,然后像用PORT操作那样将其修改写到IO口的锁存器中,最后发送到IO引脚上。
其实,数据手册上在IO口那一章的开始就明确指出:
“每个端口有三个与其相关的寄存器”
“TRIS寄存器(数据方向)”
“PORT寄存器(读取引脚的电平)”
“LAT寄存器(输出锁存)”

玩PIC,只要你仔细阅读对应的数据手册,你不需要看其他书籍都能弄懂。而且大部分都有官方中文版。追问

那为什么 D口有的口可以设置 有的不能设置啊

追答

请说清楚芯片型号

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-01-28
使用单步运行,否则主程序运行太快了,你无法看到D、C、B口的状态。在while(1){ }里写你的执行代码,记得加上延时程序,否则你也看不到状态的变化。

PIC单片机IO口无法控制
在PIC18系列里,PORT寄存器不是用来做输出的,LAT才是用来做输出的。如LATB=0xff;PORT寄存器是用来读取IO的状态,而LAT其实是读-修改-写操作。如果对PORT寄存器进行写操作,只是会将你要写的数据放到IO口的锁存器中,但并不会发送到IO上。而写LAT则是先读锁存器的数据,然后像用PORT操作那样将其...

PIC单片机PIC12F510怎么GP0和GP1无法正常的作为输入IO口,当设为输入...
十有八九是你没有设置这二个脚为数字口,因为默认时它是AD模拟口(GP0为AN0,GP1为AN1).还有,比较器要关闭,因为GP0,GP1也是比较器的输入端,默认时比较器是打开的。程序如下,仿真运行是正确的,我用的是C编程。include <htc.h>__CONFIG(0x0FCA); \/\/采用内部4MHz RC,void DELAY(unsig...

帮忙看一下这个PIC单片机的按键电路吧
一、L1DRV、L2DRV、L3DRV和L4DRV是数码管的共阴极,三极管就是配合上这个几个脚进行电流放大的,因为IO口无法承受那么大的电流,是用来进行LED数码管的位选,因为他采用动态扫描。二、二极管是按键扫描中进行各个按键进行隔离作用,防止按键误检,因为他采用显示扫描和按键扫描共用的,这样可以少用些IO口。

,PIC单片机IO口什么时候设置为输入,什么时候设置为输出,这个输入输出...
如果要用某个引脚控制一个东西,如让它高电平或低电平,则这个引脚就得设置为输出。如果你想知道某个引脚是高电平或低电平,则这个引脚就得设置为输入。还有如果作为AD转换,相应的引脚就得做为输入。设置引脚是输出或输入,就是把对应的TRISx的寄存器的位设为0为1,这个容易记住:0象OUTOUT的第一个...

pic单片机输入时,端口检测不到高电平
首先,你要确保周边电路没问题,也就是单片机能正常运行,你所需要检测的那个IO口电平变换正常(如果电平变换不正常你去检测高电平,那是笑话)。你所选的那个IO口配置是否正确,pic的单片机是好多功能复用一个IO的,如果你把该IO配置成了别的功能,而不是通用IO,肯定也有问题。其他原因,如程序在其他...

初学pic,有个问题请高手证实。
首先就IO口来说,51单片机不需要设置方向寄存器。给IO口寄存器赋值就是输出,读IO口寄存器就是输入。而PIC若设置输入的话,给PORT寄存器赋值是没法输出的。而且51单片机的IO口是各种单片机中,驱动能力最差的,要想点亮个LED灯一般都要加三极管放大(虽然直接接也可以,但亮度没那么高)。而PIC、AVR等51...

我用PIC单片机直接带动多路ULN2003可以吗?单片机还有其他输出,功率够不...
一个IO口不能同时控制多路ULN2003,因为这个芯片没有片选,不需要隔离,直接5V输入信号就可以。输出可以是12V

请教PIC12\/16\/18系列单片机io口位操作方法种类!
只有用LAT寄存器才能输出到IO上,比如LATD=0X01,则 D口的最低位输出一个高电平(当然方向寄存器TRISD还是要设置的)说了那么多,其实就是想告诉你,PIC单片机种类很多,虽然内部CPU架构和指令集差不太多,但在一些外设的配置上是变化很多的,这需要你写程序的时候,必须对照相应的数据手册来经行开发。

P1口为啥只能驱动4个LSTTL负载而不是8个
比如说你的IO口接了一个EEPROM,你须要读取这个EEPROM的管脚状态时,如果此时IO的驱动能力太强,EEPROM芯片无法改变此管脚的高底状态,那么后果大家都知道了啊。所以如果你须要驱动大负载的电路的话,最好是加一个三极管来进行增强驱动能力,或是选择具有设置管脚状态的芯片(比如PIC系列芯片机以将IO设置为...

单片机上空闲的io口怎么处理?
空闲的io口不用管它,关系不大。输入输出I\/O口内采用MOS场管,因此具有极高的阻抗(输入状态)。当因某种原因的扰动,极可能使扰动信号进入单片机内部。MCS51单片机复位后,其I\/0处于输出状态,不存在有扰动干扰。PIC单片机在初始化过程中,其不用之口设置为输出状态。象CMOS集成电路,不用的输入端要...

相似回答