1. 首页 > 科技

单片机 这样写有错吗,为什么P1的值有问题? 单片机p1怎么定义

单片机 这样写有错吗,为什么P1的值有问题?单片机p1怎么定义

显示P1故障代码怎么解决

一、 显示P1是是由于空调供电电压过高或者过低导致空调报故障。故障在室外电控、PFC模块、变频模块。

二、检修步骤:

1、查故障代码确定此机显示P1是电压过高或过低保护。上门测量用户电源电压,待机状态为225V,满足变频空调运行要求。

2、用万用表检测室外机L、N接线端子,室内主板有225V电压输出,当测量模块P、N直流300V输入端时发现直流母线电压不稳定,经监测模块P、N电压反复的由300V慢慢下降,当降到低于113V时,整机报P1电压过高或过低保护,最后模块P、N电压为0V。过几分钟后,模块P、N又有300V直流输入电压。

3、根据此现象,初步判定故障点在室外主电源供电线路,经进一步测试发现室外主电源继电器无吸合,输入端有220V输入,输出端无220V电压,且旁边的PTC热敏电阻发热严重,测量继电器绕组阻值为无穷大,线圈开路。

4、将接在主继电器的端子接在另外一端,机器运行稳定,制冷效果很好,当恢复此继电器接线端子为正常安装状态试机时,故障再现,故确定故障点是外机电控板上的主继电器不良。

单片机编程问题: P1=P1 | 0XF0;//声明高四位输入。 请问这里的 | 是什么意思?求讲解!

| 是 或 运算符 按位或的 0|0=0 0|1=1 1|1=1

或运算就是 只要就有一个为1 结果就为1

与之相对应的是 与 运算 &

与运算只要有一个为0 结果就为0 0&0=0 0&1= 0 1&1=1

P1|0xf0 就是把 P1的高4位都置为1 0xf0 二进制就是 11110000 高4位都是1 所以或运算后 高4位就变成了1 ,低4位因为是0 所以不会对P1低4位原有的值改动。

单片机程序中sbit p1_1=P1^0是什么意思?

#include<reg52.h>

sbit p1_1=P1^0;

unsigned int a ;

void main()

{while(1)

 {

 a=51000;

 p1_1=0;

 while(a--);a=51000;while(a--);
p1_1=1;

 a=51000; while(a--);a=51000; while(a--); }

}

sbit是位定义,sbit p1_1=P1^0;是为把P1.0这一位定义成p1_1(相当于一个标识符),在main函数中的p1_1=0; 相当于P1.0=0 ,即P1.0输出低电平。

在函数中不允许对P0~P3口进行为位操作的,故使用前要先进行位定义。

又如:

#include<reg52.h>

sbit led=P1^0;

unsigned int a ;

void main()

{while(1)

 {

 a=51000;

 led=0;

 while(a--);a=51000;while(a--);
 led=1;

 a=51000; while(a--);a=51000; while(a--); }

}

与你上面的程序一样的效果!

如有不清楚欢迎追问!

单片机指令正误判断

11、MOV C ,#30H 错,C是位,只能用SETB C 或CLR C

12、MOV R7 , #0F0H 对

13、MOV P1 , #0EFH 对,相当于MOV direct,#data

14、 MOV B ,#0F0H 对,B就相当于是direct

15、 MOV 90H ,#0EFH 对,相当于MOV direct,#data

16、MOV @R3 ,#0F0H 错,间址只能用R0和R1

17、MOV R8 , #0F0H 对

18、MOV 0C3H , 00H 对,相当于MOV direct2,direct1