background image

3.

{   

 

4.

 P1_1 = 1;   

//初始化。P1.1

 

作为输入,必须输出高电平

  

 

5.

While( 1 )  

//

 

非零表示真,如果为真则执行下面循环体的语句

  

 

6.

 {   

 

7.

if

( P1_1 == 1 )  

//读取 P1.1,就是认为 P1.1 为输入,如果 P1.1 输入高电平

VCC 

  

 

8.

  { P0_4 = 0;  } 

//给 P0_4 赋值 0,引脚 P0.4 就能输出低电平 GND 

  

 

9.

  

else

     

//否则 P1.1 输入为低电平 GND 

  

 

10.

  

//{ P0_4 = 0;  } //给 P0_4 赋值 0,引脚 P0.4 就能输出低电平 GND 

  

 

11.

  { P0_4 = 1;  } 

//给 P0_4 赋值 1,引脚 P0.4 就能输出高电平 VCC 

  

 

12.

 }    

//由于一直为真,所以不断根据 P1.1 的输入情况,改变 P0.4 的输出电

 

  

 

13.

}  

 

将某端口 8 个引脚输入电平,低四位取反后,从另一个端口 8 个引脚输出

 

 

:( 比如 P2 = 

NOT( P3 ) )

代码

1.

#include <AT89x52.h> //该头文档中有单片机内部资源的符号化定义,其中

包含 P2 和 P3 

  

 

2.

void

 main( 

void

 )  

//void 表示没有输入参数,也没有函数返值,这入单片机

 

运行的复位入口

  

 

3.

{   

 

4.

 P3 = 0xff;  

//初始化。P3 作为输入,必须输出高电平,同时给 P3 口的 8 个引

 

脚输出高电平

  

 

5.

While( 1 )  

//

 

非零表示真,如果为真则执行下面循环体的语句

  

 

6.

 {    

//取反的方法是异或 1,而不取反的方法则是异或 0 

  

 

7.

P2 = P3^0x0f 

//读取 P3,就是认为 P3 为输入,低四位异或者 1,即取反,

 

然后输出

  

 

8.

 }    

//由于一直为真,所以不断将 P3 取反输出到 P2 

  

 

9.

}  

 

注意

:一个字节的 8 位 D7、D6 至 D0,分别输出到 P3.7、P3.6 至 P3.0,比如 P3=0x0f,则

P3.7、P3.6、P3.5、P3.4 四个引脚都输出低电平,而 P3.3、P3.2、P3.1、P3.0 四个引脚都输出高
电平。同样,输入一个端口 P2,即是将 P2.7、P2.6 至 P2.0,读入到一个字节的 8 位 D7、D6
至 D0。

第一节:单数码管按键显示

 

单片机最小系统的硬件原理接线图:

1.

 接电源:VCC(PIN40)、GND(PIN20)。加接退耦电容 0.1uF