问题:无法理解如何将端口A和端口B设置为输入和输出
我使用一本书作为参考:第19页 - 简介(章节) - 书名:John Morton第三版 - PIC MicroController您的个人入门课程
根据我从书中所理解的,位编号从右到左,所以我应该读作DCBA端口,这就是为什么:b' 0010'
然而,第18页上的这一段确实令人困惑:
它将文字移动到工作寄存器中。然后是指令 tris获取工作寄存器中的数字并使用它来选择 端口的哪些位用作输入,哪些用作输出。一个 二进制1对应于输入,0对应于输出。
再次阅读,我想知道,对于每个端口,是否有4位,我可以选择输入多少这些输出以及输出多少?但我认为端口只能输出或输入..
请有人澄清一下吗?
__config _CP_OFF & _WDT_OFF & _XT_OSC
list P = 16F57;
include "C:\Program Files (x86)\Microchip\MPLABX\v3.40\mpasmx\p16f57.inc";
portA equ 05
portB equ 06
org 0 ; Starts at 0?
goto Start
Init
clrf portA ; Reset Port A and B States
clrf portB ;
movlw b'0010'; Set port B as output
tris portA;
movlw b'0010'; Set Port A as input
;0010 should mean -> ABCD port states?
tris portB;
retlw 0; return
Start
call Init;
Main
bsf portA,0;
goto Main;
END
答案 0 :(得分:1)
单个端口对应于其所有相关引脚。例如,在PIC16F57上,您有引脚RA0,RA1,RA2和RA3。这些引脚分别对应于PORTA位0,1,2和3。所以,这就是实际发生的事情。
clrf portA
clrf portB
movlw b'0010' ;Set RA1 as input and RA0,RA2,RA3 as output
tris portA;
movlw b'0010' ;Set RB1 as input and RB0,RB2,RB3 as output
tris portB
需要注意的是,所有引脚在上电或复位时都被初始化为输入,而PORTA只是一个4位寄存器,PORTB是8位。在这种情况下,最好明确声明该寄存器的所有位。
movlw b'00000010' ;Set RB1 as input all others as output.
tris portB
您必须确保阅读数据表以确定PORT寄存器及其相应引脚的宽度。
答案 1 :(得分:-1)
TRISB=0xFF; //For PortB as a Input
TRISB=0x00; //For PortB as Output