使用 MIKROC 读取 pic 微控制器的输入引脚
Reading input pin of pic microcontroller with MIKROC
我需要编写一个程序来检查 PIC 的输入引脚是否有电压。如果存在电压,它将向选定的输出引脚提供电压,如 PORTB.RB1=1;
。否则它会给其他选定的输出引脚提供电压,如 PORTC.RC1=1;
。
可能吗?我试过这样做,但它不起作用。
void main() {
TRISB=0;
TRISA=1;
TRISC=0;
while(1){
delay_ms(500);
// PORTB=0;
if(PORTA==1){
PORTB.RB1 =1;
}
else{
PORTC.RC1 =1;
}
}
}
你没有关闭其他端口输出,也没有隔离PORTA的输入引脚。如果是 0 位掩码是 1,如果是 1 位掩码是 2,等等
void main() {
TRISB=0;
TRISA=1;
TRISC=0;
while(1){
delay_ms(500);
if(PORTA & 1){
PORTB.RB1 =1;
PORTC.RC1 =0;
}
else{
PORTB.RB1 =0;
PORTC.RC1 =1;
}
}
}
PORTA和PORTE是模拟端口。如果要将它们用作数字输入,则必须防止 PIC 将它们用作模拟输入。
您必须添加此说明:
ADCON1=0x06;
在将 PORTA 或 PORTE 设置为输入之前。
此代码成功运行:
void main()
{
ADCON1=0x06;
TrisA=1;
TrisE=1;
TrisC=0;
PortC=0;
while (1)
{
if (PortA.B0==1)
PortC.B0=1;
else
PortC.B0=0;
if (PortA.B1==1)
PortC.B1=1;
else
PortC.B1=0;
if (PortA.B2==1)
PortC.B2=1;
else
PortC.B2=0;
if (PortA.B3==1)
PortC.B3=1;
else
PortC.B3=0;
if (PortA.B5==1)
PortC.B4=1;
else
PortC.B4=0;
if (PortE.B0==1)
PortC.B5=1;
else
PortC.B5=0;
if (PortE.B1==1)
PortC.B6=1;
else
PortC.B6=0;
if (PortE.B2==1)
PortC.B7=1;
else
PortC.B7=0;
}
}
硬件连接:用 5v 电源和开关连接输入端口的位。
之后将其与下拉电阻连接。
void main(){
TRISB = 1; //set portB as input
TRISC = 0; //set portC as output
while(1){
if(PORTB.B0 == 0){ //if RB0 == 0 ?
PORTC.F0 = 1; //set RC0 = 1 ,(high)
}else PORTC.F0 = 0; //set RC0 = 0 ,(low)
if(PORTB.B1 == 0){ //if RB1 == 0 ?
PORTC.F1 = 1; //set RC1 = 1 ,(high)
}else PORTC.F1 = 0; //set RC1 = 0 ,(low)
//set if else block for numbers of bit as you want.....
}
}
请注意,pic 端口 A 默认为模拟输入,如果您想将此端口用作数字端口,请更改 ADCON 寄存器并遵循数据表。
我需要编写一个程序来检查 PIC 的输入引脚是否有电压。如果存在电压,它将向选定的输出引脚提供电压,如 PORTB.RB1=1;
。否则它会给其他选定的输出引脚提供电压,如 PORTC.RC1=1;
。
可能吗?我试过这样做,但它不起作用。
void main() {
TRISB=0;
TRISA=1;
TRISC=0;
while(1){
delay_ms(500);
// PORTB=0;
if(PORTA==1){
PORTB.RB1 =1;
}
else{
PORTC.RC1 =1;
}
}
}
你没有关闭其他端口输出,也没有隔离PORTA的输入引脚。如果是 0 位掩码是 1,如果是 1 位掩码是 2,等等
void main() {
TRISB=0;
TRISA=1;
TRISC=0;
while(1){
delay_ms(500);
if(PORTA & 1){
PORTB.RB1 =1;
PORTC.RC1 =0;
}
else{
PORTB.RB1 =0;
PORTC.RC1 =1;
}
}
}
PORTA和PORTE是模拟端口。如果要将它们用作数字输入,则必须防止 PIC 将它们用作模拟输入。
您必须添加此说明:
ADCON1=0x06;
在将 PORTA 或 PORTE 设置为输入之前。
此代码成功运行:
void main()
{
ADCON1=0x06;
TrisA=1;
TrisE=1;
TrisC=0;
PortC=0;
while (1)
{
if (PortA.B0==1)
PortC.B0=1;
else
PortC.B0=0;
if (PortA.B1==1)
PortC.B1=1;
else
PortC.B1=0;
if (PortA.B2==1)
PortC.B2=1;
else
PortC.B2=0;
if (PortA.B3==1)
PortC.B3=1;
else
PortC.B3=0;
if (PortA.B5==1)
PortC.B4=1;
else
PortC.B4=0;
if (PortE.B0==1)
PortC.B5=1;
else
PortC.B5=0;
if (PortE.B1==1)
PortC.B6=1;
else
PortC.B6=0;
if (PortE.B2==1)
PortC.B7=1;
else
PortC.B7=0;
}
}
硬件连接:用 5v 电源和开关连接输入端口的位。 之后将其与下拉电阻连接。
void main(){
TRISB = 1; //set portB as input
TRISC = 0; //set portC as output
while(1){
if(PORTB.B0 == 0){ //if RB0 == 0 ?
PORTC.F0 = 1; //set RC0 = 1 ,(high)
}else PORTC.F0 = 0; //set RC0 = 0 ,(low)
if(PORTB.B1 == 0){ //if RB1 == 0 ?
PORTC.F1 = 1; //set RC1 = 1 ,(high)
}else PORTC.F1 = 0; //set RC1 = 0 ,(low)
//set if else block for numbers of bit as you want.....
}
}
请注意,pic 端口 A 默认为模拟输入,如果您想将此端口用作数字端口,请更改 ADCON 寄存器并遵循数据表。