STC89C52入门第三课
1、1:接线(使用开发板自带,请跳过,到步骤2)
准备4个轻触按键,可以是2脚,或者4脚
(4脚轻触按键一般1脚跟3脚是导通的,2脚跟4脚导通的,按下后,所有引脚导通,这个可以用万用表测试,详细请百度搜索下)
把1脚连接到单片机第1脚,也就是P1.0这个I/O口,把2脚连接到单片机20脚,也就是GND引脚。
同样接法,你想接多少个都可以,这里先接4个P1.0到P1.3
(你们想接其他IO也是可以的,这里最好先照做)
下面这个图只是画一个示意图

2、照常,先新建工程—文件—保存文件—添加文件到源组
闪存配置,把产生HEX文件那个勾,选上
然后开始写程序
#include <reg52.h> //包含reg52.h这个头文件
sbit AN1=P1^0; //P1^0这里改成你们你们按键对应的I/O口
sbit AN2=P1^1;
sbit AN3=P1^2;
sbit AN4=P1^3;
void main() //主函数
{
}
3、上面的程序中,出现的俩个斜杠“//“
表示斜杠后面的文字是备注,与编程无关,不会被编译
然后,在主程序的大括号中,写入
while(1)
{
}
如下图,while(1)这个指令必须在这里说明下,这是个循环指令
while()是判断中括号内程序是否为1,如果为1,则进入循环
执行while(1)下面大括号内程序
如果while()这个中括号内不等于1,则不进入循环
通俗的说我们写while(1)则一直进入循环
我们如果写while(0)则跳到循环后面去

4、再写一个延时程序,放在void main()主程序的上面
此处注意,必须放在主程序上面,放在主程序后面,必须声明函数,这个以后再教,如图

5、这个延时程序,在晶振11.0592MHZ时,大约延时1MS,就是1毫秒
晶振12M时,大约是800US也就是0.8毫秒
然后在#include<reg5.2.h>下面,加入LED
sbit LED1=P2^0;
sbit LED2=P2^1;
对应I/O口应该写你们LED对应的I/O口,这里我写P20和P21

6、回到主程序while(1)的大括号内
开始写程序,如下图,下图是1个按键的程序
大家不妨把这1个按键的程序先拷进单片机测试下,看看效果

7、现在写第二个按键的程序,原理相同
如果你仔细看,你就会明白其中的原理

8、这里应该认真注意几点:
1.按键消抖
按键消抖,是因为电路板抖动,会引起单片机以为你按下了按键
2.LED是共阳或者共阴
上节课有说过的,不明白也可以百度搜搜下
3.else这个指令,是跟在if后面的
这个指令是不可以单独存在的,它是必须跟着前面的if的
4.是否每个if后面都必须带大括号呢?
if跟else都可以不加大括号,不加大括号的情况下,只执行if下面的1条语句
加大括号时,则执行大括号内所有语句